diff --git a/e2e_tests/helpers.go b/e2e_tests/helpers.go new file mode 100644 index 0000000..74b26fe --- /dev/null +++ b/e2e_tests/helpers.go @@ -0,0 +1,12 @@ +package e2e_tests + +import ( + "io" + "net/http" +) + +func httpDelete(url string, body io.Reader) (response *http.Response, err error) { + req, _ := http.NewRequest(http.MethodDelete, url, body) + client := &http.Client{} + return client.Do(req) +} diff --git a/e2e_tests/runners_test.go b/e2e_tests/runners_test.go index 507aeeb..06f8483 100644 --- a/e2e_tests/runners_test.go +++ b/e2e_tests/runners_test.go @@ -11,7 +11,8 @@ import ( ) func TestProvideRunnerRoute(t *testing.T) { - reader := strings.NewReader(`{"executionEnvironmentId":0}`) + runnerRequestString, _ := json.Marshal(dto.RunnerRequest{}) + reader := strings.NewReader(string(runnerRequestString)) resp, err := http.Post(buildURL(api.RouteRunners), "application/json", reader) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode, "The response code should be ok") @@ -22,3 +23,36 @@ func TestProvideRunnerRoute(t *testing.T) { assert.True(t, runnerResponse.Id != "", "The response contains a runner id") } + +func newRunnerId(t *testing.T) string { + runnerRequestString, _ := json.Marshal(dto.RunnerRequest{}) + reader := strings.NewReader(string(runnerRequestString)) + resp, err := http.Post(buildURL(api.RouteRunners), "application/json", reader) + assert.NoError(t, err) + runnerResponse := new(dto.RunnerResponse) + _ = json.NewDecoder(resp.Body).Decode(runnerResponse) + return runnerResponse.Id +} + +func TestDeleteRunnerRoute(t *testing.T) { + runnerId := newRunnerId(t) + assert.NotEqual(t, "", runnerId) + + t.Run("Deleting the runner returns NoContent", func(t *testing.T) { + resp, err := httpDelete(buildURL(api.RouteRunners, "/", runnerId), nil) + assert.NoError(t, err) + assert.Equal(t, http.StatusNoContent, resp.StatusCode) + }) + + t.Run("Deleting it again returns NotFound", func(t *testing.T) { + resp, err := httpDelete(buildURL(api.RouteRunners, "/", runnerId), nil) + assert.NoError(t, err) + assert.Equal(t, http.StatusNotFound, resp.StatusCode) + }) + + t.Run("Deleting non-existing runner returns NotFound", func(t *testing.T) { + resp, err := httpDelete(buildURL(api.RouteRunners, "/", "n0n-3x1st1ng-1d"), nil) + assert.NoError(t, err) + assert.Equal(t, http.StatusNotFound, resp.StatusCode) + }) +}