diff options
Diffstat (limited to 'go/internal/gitlabnet/client_test.go')
-rw-r--r-- | go/internal/gitlabnet/client_test.go | 73 |
1 files changed, 69 insertions, 4 deletions
diff --git a/go/internal/gitlabnet/client_test.go b/go/internal/gitlabnet/client_test.go index f69f284..c1d08a1 100644 --- a/go/internal/gitlabnet/client_test.go +++ b/go/internal/gitlabnet/client_test.go @@ -19,10 +19,25 @@ func TestClients(t *testing.T) { { Path: "/api/v4/internal/hello", Handler: func(w http.ResponseWriter, r *http.Request) { + require.Equal(t, http.MethodGet, r.Method) + fmt.Fprint(w, "Hello") }, }, { + Path: "/api/v4/internal/post_endpoint", + Handler: func(w http.ResponseWriter, r *http.Request) { + require.Equal(t, http.MethodPost, r.Method) + + b, err := ioutil.ReadAll(r.Body) + defer r.Body.Close() + + require.NoError(t, err) + + fmt.Fprint(w, "Echo: "+string(b)) + }, + }, + { Path: "/api/v4/internal/auth", Handler: func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, r.Header.Get(secretHeaderName)) @@ -68,6 +83,7 @@ func TestClients(t *testing.T) { testBrokenRequest(t, tc.client) testSuccessfulGet(t, tc.client) + testSuccessfulPost(t, tc.client) testMissing(t, tc.client) testErrorMessage(t, tc.client) testAuthenticationHeader(t, tc.client) @@ -89,32 +105,66 @@ func testSuccessfulGet(t *testing.T, client GitlabClient) { }) } +func testSuccessfulPost(t *testing.T, client GitlabClient) { + t.Run("Successful Post", func(t *testing.T) { + data := map[string]string{"key": "value"} + + response, err := client.Post("/post_endpoint", data) + defer response.Body.Close() + + require.NoError(t, err) + require.NotNil(t, response) + + responseBody, err := ioutil.ReadAll(response.Body) + assert.NoError(t, err) + assert.Equal(t, "Echo: {\"key\":\"value\"}", string(responseBody)) + }) +} + func testMissing(t *testing.T, client GitlabClient) { - t.Run("Missing error", func(t *testing.T) { + t.Run("Missing error for GET", func(t *testing.T) { response, err := client.Get("/missing") assert.EqualError(t, err, "Internal API error (404)") assert.Nil(t, response) }) + + t.Run("Missing error for POST", func(t *testing.T) { + response, err := client.Post("/missing", map[string]string{}) + assert.EqualError(t, err, "Internal API error (404)") + assert.Nil(t, response) + }) } func testErrorMessage(t *testing.T, client GitlabClient) { - t.Run("Error with message", func(t *testing.T) { + t.Run("Error with message for GET", func(t *testing.T) { response, err := client.Get("/error") assert.EqualError(t, err, "Don't do that") assert.Nil(t, response) }) + + t.Run("Error with message for POST", func(t *testing.T) { + response, err := client.Post("/error", map[string]string{}) + assert.EqualError(t, err, "Don't do that") + assert.Nil(t, response) + }) } func testBrokenRequest(t *testing.T, client GitlabClient) { - t.Run("Broken request", func(t *testing.T) { + t.Run("Broken request for GET", func(t *testing.T) { response, err := client.Get("/broken") assert.EqualError(t, err, "Internal API unreachable") assert.Nil(t, response) }) + + t.Run("Broken request for POST", func(t *testing.T) { + response, err := client.Post("/broken", map[string]string{}) + assert.EqualError(t, err, "Internal API unreachable") + assert.Nil(t, response) + }) } func testAuthenticationHeader(t *testing.T, client GitlabClient) { - t.Run("Authentication headers", func(t *testing.T) { + t.Run("Authentication headers for GET", func(t *testing.T) { response, err := client.Get("/auth") defer response.Body.Close() @@ -128,4 +178,19 @@ func testAuthenticationHeader(t *testing.T, client GitlabClient) { require.NoError(t, err) assert.Equal(t, "sssh, it's a secret", string(header)) }) + + t.Run("Authentication headers for POST", func(t *testing.T) { + response, err := client.Post("/auth", map[string]string{}) + defer response.Body.Close() + + require.NoError(t, err) + require.NotNil(t, response) + + responseBody, err := ioutil.ReadAll(response.Body) + require.NoError(t, err) + + header, err := base64.StdEncoding.DecodeString(string(responseBody)) + require.NoError(t, err) + assert.Equal(t, "sssh, it's a secret", string(header)) + }) } |