package main import ( "net/http" "testing" "github.com/playwright-community/playwright-go" "github.com/stretchr/testify/assert" "github.com/xlgmokha/x/pkg/env" "github.com/xlgmokha/x/pkg/x" ) func TestHelloWorld(t *testing.T) { _ = playwright.Install() pw := x.Must(playwright.Run()) browser := x.Must(pw.Chromium.Launch(playwright.BrowserTypeLaunchOptions{ Headless: playwright.Bool(env.Fetch("HEADLESS", "true") == "true"), SlowMo: playwright.Float(1000), })) page := x.Must(browser.NewPage()) defer func() { x.Check(browser.Close()) x.Check(pw.Stop()) }() t.Run("SAML", func(t *testing.T) { t.Run("IdP", func(t *testing.T) { t.Run("provides metadata", func(t *testing.T) { response := x.Must(http.Get("http://idp.example.com:8080/saml/metadata.xml")) assert.Equal(t, http.StatusOK, response.StatusCode) }) }) t.Run("Service provider", func(t *testing.T) { t.Run("provides metadata", func(t *testing.T) { response := x.Must(http.Get("http://ui.example.com:8080/saml/metadata.xml")) assert.Equal(t, http.StatusOK, response.StatusCode) }) t.Run("starts a new session with the IdP", func(t *testing.T) { x.Must(page.Goto("http://ui.example.com:8080/saml/new")) action := x.Must(page.Locator("#idp-form").GetAttribute("action")) assert.Equal(t, "http://idp.example.com:8080/saml/new", action) assert.NoError(t, page.Locator("#submit-button").Click()) action = x.Must(page.Locator("#postback-form").GetAttribute("action")) assert.Equal(t, "http://ui.example.com:8080/saml/assertions", action) assert.NoError(t, page.Locator("#submit-button").Click()) assert.Contains(t, x.Must(page.Content()), "Received SAML Response") }) }) }) }