diff --git a/kubernetes.go b/kubernetes.go index ea227a3..9b80fef 100644 --- a/kubernetes.go +++ b/kubernetes.go @@ -520,6 +520,7 @@ func (svc *KubernetesServiceOp) GetCredentials(ctx context.Context, clusterID st if get.ExpirySeconds != nil { q.Add("expiry_seconds", strconv.Itoa(*get.ExpirySeconds)) } + req.URL.RawQuery = q.Encode() credentials := new(KubernetesClusterCredentials) resp, err := svc.client.Do(ctx, req, credentials) if err != nil { diff --git a/kubernetes_test.go b/kubernetes_test.go index 8c69177..7d3b750 100644 --- a/kubernetes_test.go +++ b/kubernetes_test.go @@ -4,11 +4,12 @@ import ( "bytes" "encoding/json" "fmt" - "github.com/stretchr/testify/assert" "net/http" "testing" "time" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) @@ -429,6 +430,41 @@ func TestKubernetesClusters_GetCredentials(t *testing.T) { }` mux.HandleFunc("/v2/kubernetes/clusters/deadbeef-dead-4aa5-beef-deadbeef347d/credentials", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) + if len(r.URL.Query()) > 0 { + t.Error("Request should not have Url params") + } + fmt.Fprint(w, jBlob) + }) + got, _, err := kubeSvc.GetCredentials(ctx, "deadbeef-dead-4aa5-beef-deadbeef347d", &KubernetesClusterCredentialsGetRequest{}) + require.NoError(t, err) + require.Equal(t, want, got) +} + +func TestKubernetesClusters_GetCredentials_WithExpirySeconds(t *testing.T) { + setup() + defer teardown() + + kubeSvc := client.Kubernetes + timestamp, err := time.Parse(time.RFC3339, "2014-11-12T11:45:26.371Z") + require.NoError(t, err) + want := &KubernetesClusterCredentials{ + Token: "secret", + ExpiresAt: timestamp, + } + jBlob := ` +{ + "token": "secret", + "expires_at": "2014-11-12T11:45:26.371Z" +}` + mux.HandleFunc("/v2/kubernetes/clusters/deadbeef-dead-4aa5-beef-deadbeef347d/credentials", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, http.MethodGet) + expirySeconds, ok := r.URL.Query()["expiry_seconds"] + if !ok { + t.Error("Url param 'expiry_seconds' is missing") + } + if len(expirySeconds) != 1 || expirySeconds[0] != "3600" { + t.Error("incorrect expiry_seconds value, should be 3600") + } fmt.Fprint(w, jBlob) }) got, _, err := kubeSvc.GetCredentials(ctx, "deadbeef-dead-4aa5-beef-deadbeef347d", &KubernetesClusterCredentialsGetRequest{