summaryrefslogtreecommitdiff
path: root/test/e2e_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/e2e_test.go')
-rw-r--r--test/e2e_test.go43
1 files changed, 29 insertions, 14 deletions
diff --git a/test/e2e_test.go b/test/e2e_test.go
index 7e98b1b..16ea4be 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"])
})