summaryrefslogtreecommitdiff
path: root/test/integration
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration')
-rw-r--r--test/integration/ci.go12
-rw-r--r--test/integration/container.go8
-rw-r--r--test/integration/container_test.go16
-rw-r--r--test/integration/ui.go33
4 files changed, 63 insertions, 6 deletions
diff --git a/test/integration/ci.go b/test/integration/ci.go
new file mode 100644
index 0000000..5d34685
--- /dev/null
+++ b/test/integration/ci.go
@@ -0,0 +1,12 @@
+package test
+
+import (
+ "testing"
+
+ "github.com/xlgmokha/x/pkg/env"
+)
+
+func isGitlabCI(t *testing.T) bool {
+ t.Logf("CI? %v", env.Fetch("CI", ""))
+ return env.Fetch("CI", "") == "true"
+}
diff --git a/test/integration/container.go b/test/integration/container.go
index 5ce8266..3929697 100644
--- a/test/integration/container.go
+++ b/test/integration/container.go
@@ -60,7 +60,8 @@ func containerOptions(t *testing.T, envVars map[string]string) []testcontainers.
}))
} else {
issuer, port := normalizeIssuer(t, envVars["OIDC_ISSUER"])
- envVars["OIDC_ISSUER"] = issuer
+ // envVars["OIDC_ISSUER"] = issuer
+ t.Logf("issuer: %v, port: %v\n", issuer, port)
options = append(options, testcontainers.WithExposedPorts("8080/tcp", "9901/tcp", "10000/tcp"))
options = append(options, testcontainers.WithHostPortAccess(port))
@@ -68,8 +69,3 @@ func containerOptions(t *testing.T, envVars map[string]string) []testcontainers.
return options
}
-
-func isGitlabCI(t *testing.T) bool {
- t.Logf("CI? %v", env.Fetch("CI", ""))
- return env.Fetch("CI", "") == "true"
-}
diff --git a/test/integration/container_test.go b/test/integration/container_test.go
index 2d68236..6d48beb 100644
--- a/test/integration/container_test.go
+++ b/test/integration/container_test.go
@@ -10,6 +10,7 @@ import (
"time"
"github.com/oauth2-proxy/mockoidc"
+ playwright "github.com/playwright-community/playwright-go"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/testcontainers/testcontainers-go"
@@ -78,4 +79,19 @@ func TestContainer(t *testing.T) {
assert.NotEmpty(t, "listener_0", body["configs"])
})
+
+ WithUI(t, func(browser playwright.Browser) {
+ page, err := browser.NewPage()
+ require.NoError(t, err)
+
+ t.Run("initiates an OIDC login", func(t *testing.T) {
+ require.NoError(t, page.Context().ClearCookies())
+ response, err := page.Goto(envoyEndpoint + "/")
+ require.NoError(t, err)
+ assert.True(t, response.Ok())
+
+ require.NoError(t, page.GetByText("Login").Click())
+ assert.Equal(t, srv.AuthorizationEndpoint()+"?client_id="+srv.Config().ClientID, page.URL())
+ })
+ })
}
diff --git a/test/integration/ui.go b/test/integration/ui.go
new file mode 100644
index 0000000..1af0744
--- /dev/null
+++ b/test/integration/ui.go
@@ -0,0 +1,33 @@
+package test
+
+import (
+ "testing"
+
+ playwright "github.com/playwright-community/playwright-go"
+ "github.com/stretchr/testify/require"
+ "github.com/xlgmokha/x/pkg/env"
+ "github.com/xlgmokha/x/pkg/x"
+)
+
+func WithUI(t *testing.T, callback x.Visitor[playwright.Browser]) {
+ t.Run("UI", func(t *testing.T) {
+ if isGitlabCI(t) {
+ t.Skip()
+ }
+ _ = playwright.Install()
+
+ driver, err := playwright.Run()
+ require.NoError(t, err)
+
+ browser, err := driver.Firefox.Launch(playwright.BrowserTypeLaunchOptions{
+ Headless: playwright.Bool(env.Fetch("HEADLESS", "true") == "true"),
+ SlowMo: playwright.Float(1000),
+ })
+ require.NoError(t, err)
+
+ defer browser.Close()
+ defer driver.Stop()
+
+ callback(browser)
+ })
+}