fix: perform security setup before login in update integration test
The test was failing with 401 because the Pulse container starts in fresh state requiring bootstrap token authentication. Added a setupCredentials step that calls /api/security/quick-setup with the known bootstrap token to create the admin user before attempting login.
This commit is contained in:
parent
3b36e4965f
commit
9de9119429
1 changed files with 32 additions and 0 deletions
|
|
@ -45,6 +45,7 @@ func TestUpdateFlowIntegration(t *testing.T) {
|
||||||
|
|
||||||
username := getenvDefault("UPDATE_API_USERNAME", "admin")
|
username := getenvDefault("UPDATE_API_USERNAME", "admin")
|
||||||
password := getenvDefault("UPDATE_API_PASSWORD", "admin")
|
password := getenvDefault("UPDATE_API_PASSWORD", "admin")
|
||||||
|
bootstrapToken := getenvDefault("PULSE_E2E_BOOTSTRAP_TOKEN", "0123456789abcdef0123456789abcdef0123456789abcdef")
|
||||||
|
|
||||||
jar, err := cookiejar.New(nil)
|
jar, err := cookiejar.New(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -60,6 +61,7 @@ func TestUpdateFlowIntegration(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
waitForHealth(t, client, baseURL, 2*time.Minute)
|
waitForHealth(t, client, baseURL, 2*time.Minute)
|
||||||
|
setupCredentials(t, client, baseURL, bootstrapToken, username, password)
|
||||||
login(t, client, baseURL, username, password)
|
login(t, client, baseURL, username, password)
|
||||||
|
|
||||||
info := fetchUpdateInfo(t, client, baseURL)
|
info := fetchUpdateInfo(t, client, baseURL)
|
||||||
|
|
@ -98,6 +100,36 @@ func waitForHealth(t *testing.T, client *http.Client, baseURL string, timeout ti
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setupCredentials(t *testing.T, client *http.Client, baseURL, bootstrapToken, username, password string) {
|
||||||
|
t.Helper()
|
||||||
|
payload := map[string]interface{}{
|
||||||
|
"username": username,
|
||||||
|
"password": password,
|
||||||
|
"setupToken": bootstrapToken,
|
||||||
|
}
|
||||||
|
req, err := http.NewRequest("POST", baseURL+"/api/security/quick-setup", nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to create setup request: %v", err)
|
||||||
|
}
|
||||||
|
data, err := json.Marshal(payload)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to marshal setup payload: %v", err)
|
||||||
|
}
|
||||||
|
req.Body = io.NopCloser(bytes.NewReader(data))
|
||||||
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
req.Header.Set("X-Setup-Token", bootstrapToken)
|
||||||
|
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("setup request failed: %v", err)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
if resp.StatusCode != http.StatusOK {
|
||||||
|
body, _ := io.ReadAll(resp.Body)
|
||||||
|
t.Fatalf("security setup failed with status %s: %s", resp.Status, string(body))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func login(t *testing.T, client *http.Client, baseURL, username, password string) {
|
func login(t *testing.T, client *http.Client, baseURL, username, password string) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
payload := map[string]string{
|
payload := map[string]string{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue