...
1
16
17 package main
18
19 import (
20 "bytes"
21 "fmt"
22 "net/http"
23 "net/http/httptest"
24 "testing"
25 )
26
27 type fakeTokenServer struct {
28 token string
29 }
30
31 func (f *fakeTokenServer) ServeHTTP(w http.ResponseWriter, req *http.Request) {
32 fmt.Fprintf(w, `{"access_token": "%s"}`, f.token)
33 }
34
35 func Test_getCredentials(t *testing.T) {
36 server := httptest.NewServer(&fakeTokenServer{token: "abc123"})
37 defer server.Close()
38
39 in := bytes.NewBuffer([]byte(`{"kind":"CredentialProviderRequest","apiVersion":"credentialprovider.kubelet.k8s.io/v1","image":"gcr.io/foobar"}`))
40 out := bytes.NewBuffer(nil)
41
42 err := getCredentials(server.URL, in, out)
43 if err != nil {
44 t.Fatalf("unexpected error running getCredentials: %v", err)
45 }
46
47 expected := `{"kind":"CredentialProviderResponse","apiVersion":"credentialprovider.kubelet.k8s.io/v1","cacheKeyType":"Registry","auth":{"*.gcr.io":{"username":"_token","password":"abc123"},"*.pkg.dev":{"username":"_token","password":"abc123"},"container.cloud.google.com":{"username":"_token","password":"abc123"},"gcr.io":{"username":"_token","password":"abc123"}}}
48 `
49
50 if out.String() != expected {
51 t.Logf("actual response: %v", out)
52 t.Logf("expected response: %v", expected)
53 t.Errorf("unexpected credential provider response")
54 }
55 }
56
View as plain text