diff options
Diffstat (limited to 'test/e2e_test.go')
| -rw-r--r-- | test/e2e_test.go | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/test/e2e_test.go b/test/e2e_test.go index 7e98b1bf..16ea4be7 100644 --- a/test/e2e_test.go +++ b/test/e2e_test.go @@ -11,6 +11,7 @@ import ( "github.com/playwright-community/playwright-go" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/xlgmokha/x/pkg/env" "github.com/xlgmokha/x/pkg/serde" "github.com/xlgmokha/x/pkg/x" @@ -76,20 +77,34 @@ func TestAuthx(t *testing.T) { assert.Contains(t, page.URL(), "http://ui.example.com:8080/oauth/callback") content := x.Must(page.Locator("pre").First().InnerText()) item := x.Must(serde.FromJSON[oauth2.Token](strings.NewReader(content))) - assert.NotEmpty(t, item.AccessToken) - assert.Equal(t, "Bearer", item.TokenType) - assert.NotEmpty(t, item.RefreshToken) + require.NotEmpty(t, item.AccessToken) + require.Equal(t, "Bearer", item.TokenType) + require.NotEmpty(t, item.RefreshToken) - t.Run("lists all the organizations", func(t *testing.T) { + t.Run("GET http://api.example.com:8080/organizations.json", func(t *testing.T) { response := x.Must(http.Get("http://api.example.com:8080/organizations.json")) - assert.Equal(t, http.StatusOK, response.StatusCode) + assert.Equal(t, http.StatusForbidden, response.StatusCode) + }) + + t.Run("GET http://api.example.com:8080/organizations.json with Authorization", func(t *testing.T) { + request := x.Must(http.NewRequestWithContext(t.Context(), "GET", "http://api.example.com:8080/organizations.json", nil)) + request.Header.Add("Authorization", "Bearer "+item.AccessToken) + response := x.Must(client.Do(request)) + require.Equal(t, http.StatusOK, response.StatusCode) organizations := x.Must(serde.FromJSON[[]map[string]string](response.Body)) assert.NotNil(t, organizations) }) - t.Run("lists all the projects", func(t *testing.T) { + t.Run("GET http://api.example.com:8080/projects.json", func(t *testing.T) { response := x.Must(http.Get("http://api.example.com:8080/projects.json")) - assert.Equal(t, http.StatusOK, response.StatusCode) + assert.Equal(t, http.StatusForbidden, response.StatusCode) + }) + + t.Run("GET http://api.example.com:8080/projects.json with Authorization", func(t *testing.T) { + request := x.Must(http.NewRequestWithContext(t.Context(), "GET", "http://api.example.com:8080/projects.json", nil)) + request.Header.Add("Authorization", "Bearer "+item.AccessToken) + response := x.Must(client.Do(request)) + require.Equal(t, http.StatusOK, response.StatusCode) projects := x.Must(serde.FromJSON[[]map[string]string](response.Body)) assert.NotNil(t, projects) }) @@ -100,18 +115,18 @@ func TestAuthx(t *testing.T) { request := x.Must(http.NewRequestWithContext(t.Context(), "POST", "http://api.example.com:8080/projects", io)) request.Header.Add("Authorization", "Bearer "+item.AccessToken) response := x.Must(client.Do(request)) - assert.Equal(t, http.StatusCreated, response.StatusCode) + require.Equal(t, http.StatusCreated, response.StatusCode) project := x.Must(serde.FromJSON[map[string]string](response.Body)) assert.Equal(t, "example", project["name"]) }) - t.Run("creates another projects", func(t *testing.T) { + t.Run("creates another project", func(t *testing.T) { io := bytes.NewBuffer(nil) assert.NoError(t, serde.ToJSON(io, map[string]string{"name": "example2"})) request := x.Must(http.NewRequestWithContext(t.Context(), "POST", "http://api.example.com:8080/projects.json", io)) request.Header.Add("Authorization", "Bearer "+item.AccessToken) response := x.Must(client.Do(request)) - assert.Equal(t, http.StatusCreated, response.StatusCode) + require.Equal(t, http.StatusCreated, response.StatusCode) project := x.Must(serde.FromJSON[map[string]string](response.Body)) assert.Equal(t, "example2", project["name"]) }) @@ -121,7 +136,7 @@ func TestAuthx(t *testing.T) { t.Run("OAuth", func(t *testing.T) { t.Run("GET /.well-known/oauth-authorization-server", func(t *testing.T) { response := x.Must(client.Get("http://idp.example.com:8080/.well-known/oauth-authorization-server")) - assert.Equal(t, http.StatusOK, response.StatusCode) + require.Equal(t, http.StatusOK, response.StatusCode) metadata := x.Must(serde.FromJSON[map[string]interface{}](response.Body)) assert.Equal(t, "http://idp.example.com:8080/.well-known/oauth-authorization-server", metadata["issuer"]) assert.Equal(t, "http://idp.example.com:8080/oauth/authorize", metadata["authorization_endpoint"]) @@ -149,7 +164,7 @@ func TestAuthx(t *testing.T) { t.Run("GET /.well-known/openid-configuration", func(t *testing.T) { response := x.Must(client.Get("http://idp.example.com:8080/.well-known/openid-configuration")) - assert.Equal(t, http.StatusOK, response.StatusCode) + require.Equal(t, http.StatusOK, response.StatusCode) metadata := x.Must(serde.FromJSON[map[string]interface{}](response.Body)) assert.Equal(t, "http://idp.example.com:8080/.well-known/oauth-authorization-server", metadata["issuer"]) assert.Equal(t, "http://idp.example.com:8080/oauth/authorize", metadata["authorization_endpoint"]) @@ -230,14 +245,14 @@ func TestAuthx(t *testing.T) { t.Run("token is usable against REST API", func(t *testing.T) { client := conf.Client(ctx, credentials) response := x.Must(client.Get("http://api.example.com:8080/projects.json")) - assert.Equal(t, http.StatusOK, response.StatusCode) + require.Equal(t, http.StatusOK, response.StatusCode) projects := x.Must(serde.FromJSON[[]map[string]string](response.Body)) assert.NotNil(t, projects) io := bytes.NewBuffer(nil) assert.NoError(t, serde.ToJSON(io, map[string]string{"name": "foo"})) response = x.Must(client.Post("http://api.example.com:8080/projects", "application/json", io)) - assert.Equal(t, http.StatusCreated, response.StatusCode) + require.Equal(t, http.StatusCreated, response.StatusCode) project := x.Must(serde.FromJSON[map[string]string](response.Body)) assert.Equal(t, "foo", project["name"]) }) |
