From 39e1bae890974d5db7855d57d7a7ab9844950efc Mon Sep 17 00:00:00 2001 From: Bradley Glover Date: Thu, 12 May 2022 11:30:30 -0700 Subject: [PATCH 1/2] tunnel: return tunnel token, fix uri --- tunnel.go | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/tunnel.go b/tunnel.go index 6f0cad339..623b9a100 100644 --- a/tunnel.go +++ b/tunnel.go @@ -48,6 +48,12 @@ type TunnelDetailResponse struct { Response } +// TunnelTokenResponse is the API response for a tunnel token. +type TunnelTokenResponse struct { + Result string `json:"result"` + Response +} + type TunnelParams struct { AccountID string ID string @@ -263,27 +269,27 @@ func (api *API) CleanupTunnelConnections(ctx context.Context, params TunnelClean // TunnelToken that allows to run a tunnel. // // API reference: https://api.cloudflare.com/#cloudflare-tunnel-get-cloudflare-tunnel-token -func (api *API) TunnelToken(ctx context.Context, params TunnelTokenParams) error { +func (api *API) TunnelToken(ctx context.Context, params TunnelTokenParams) (string, error) { if params.AccountID == "" { - return ErrMissingAccountID + return "", ErrMissingAccountID } if params.ID == "" { - return errors.New("missing tunnel ID") + return "", errors.New("missing tunnel ID") } - uri := fmt.Sprintf("accounts/%s/cfd_tunnel/%s/token", params.AccountID, params.ID) + uri := fmt.Sprintf("/accounts/%s/cfd_tunnel/%s/token", params.AccountID, params.ID) res, err := api.makeRequestContextWithHeaders(ctx, http.MethodGet, uri, nil, nil) if err != nil { - return err + return "", err } - var argoDetailsResponse TunnelDetailResponse - err = json.Unmarshal(res, &argoDetailsResponse) + var tunnelTokenResponse TunnelTokenResponse + err = json.Unmarshal(res, &tunnelTokenResponse) if err != nil { - return errors.Wrap(err, errUnmarshalError) + return "", errors.Wrap(err, errUnmarshalError) } - return nil + return tunnelTokenResponse.Result, nil } From 1062d818e23bbbe5ccaa581b7f973531aeff6554 Mon Sep 17 00:00:00 2001 From: Jacob Bednarz Date: Fri, 13 May 2022 09:08:38 +1000 Subject: [PATCH 2/2] add test coverage --- tunnel_test.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tunnel_test.go b/tunnel_test.go index d6287544b..50819828f 100644 --- a/tunnel_test.go +++ b/tunnel_test.go @@ -247,3 +247,26 @@ func TestCleanupTunnelConnections(t *testing.T) { err := client.CleanupTunnelConnections(context.Background(), TunnelCleanupParams{AccountID: testAccountID, ID: "f174e90a-fafe-4643-bbbc-4a0ed4fc8415"}) assert.NoError(t, err) } + +func TestTunnelToken(t *testing.T) { + setup() + defer teardown() + + handler := func(w http.ResponseWriter, r *http.Request) { + assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method) + w.Header().Set("content-type", "application/json") + fmt.Fprintf(w, `{ + "success": true, + "errors": [], + "messages": [], + "result": "ZHNraGdhc2RraGFza2hqZGFza2poZGFza2poYXNrZGpoYWtzamRoa2FzZGpoa2FzamRoa2Rhc2po\na2FzamRoa2FqCg==" + } + `) + } + + mux.HandleFunc("/accounts/"+testAccountID+"/cfd_tunnel/f174e90a-fafe-4643-bbbc-4a0ed4fc8415/token", handler) + + token, err := client.TunnelToken(context.Background(), TunnelTokenParams{AccountID: testAccountID, ID: "f174e90a-fafe-4643-bbbc-4a0ed4fc8415"}) + assert.NoError(t, err) + assert.Equal(t, "ZHNraGdhc2RraGFza2hqZGFza2poZGFza2poYXNrZGpoYWtzamRoa2FzZGpoa2FzamRoa2Rhc2po\na2FzamRoa2FqCg==", token) +}