Skip to content

Commit 6b774a6

Browse files
Fix e2e failures
1 parent 7433471 commit 6b774a6

File tree

8 files changed

+42
-25
lines changed

8 files changed

+42
-25
lines changed

e2e/docker-compose.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,11 @@ services:
6060
thunder-setup:
6161
condition: service_completed_successfully
6262
ports:
63-
- "8090:8090"
63+
- "9090:8090"
6464
volumes:
6565
- thunder-db:/opt/thunder/repository/database
6666
- ./thunder-config/deployment.yaml:/opt/thunder/repository/conf/deployment.yaml:ro
67+
- ./thunder-config/gate-config.js:/opt/thunder/apps/gate/config.js:ro
6768
healthcheck:
6869
test: ["CMD", "curl", "-k", "-f", "https://localhost:8090/health/readiness"]
6970
interval: 10s

e2e/playwright-report-embedded/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,4 @@
8282
<div id='root'></div>
8383
</body>
8484
</html>
85-
<script id="playwrightReportBase64" type="application/zip">data:application/zip;base64,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</script>
85+
<script id="playwrightReportBase64" type="application/zip">data:application/zip;base64,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</script>

e2e/setup/is/app-registration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export async function registerIsApp(): Promise<{clientId: string; clientSecret:
137137
};
138138

139139
// Remove read-only fields that can't be sent in PUT
140-
delete updatedConfig.state;
140+
delete (updatedConfig as Record<string, unknown>).state;
141141

142142
const oidcPutResponse = await fetch(oidcUrl, {
143143
method: 'PUT',

e2e/setup/thunder/app-registration.ts

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export async function getThunderAppClientId(): Promise<{clientId: string; applic
3434
let applicationId: string | undefined;
3535

3636
try {
37-
const result = thunderSqlite("SELECT APP_ID FROM SP_APP WHERE APP_NAME='React SDK Sample'");
37+
const result = thunderSqlite("SELECT APP_ID FROM APPLICATION WHERE APP_NAME='React SDK Sample'");
3838

3939
if (result) {
4040
applicationId = result;
@@ -44,15 +44,13 @@ export async function getThunderAppClientId(): Promise<{clientId: string; applic
4444
console.warn('[E2E] Could not retrieve Thunder application ID from database');
4545
}
4646

47-
// Patch the pre-configured app's OAuth config:
48-
// 1. Add the callback URL to redirect_uris (bootstrap only has / and /dashboard)
49-
// 2. Fix the token issuer to match the OIDC discovery issuer (baseUrl, not baseUrl/oauth2/token)
47+
// Patch the pre-configured app's OAuth config to add the callback URL
48+
// to redirect_uris (bootstrap only has / and /dashboard).
5049
const callbackUrl = `${SAMPLE_APP.url}${SAMPLE_APP.afterSignInPath}`;
51-
const correctIssuer = THUNDER_CONFIG.baseUrl;
5250

5351
try {
5452
const configJson = thunderSqlite(
55-
`SELECT OAUTH_CONFIG_JSON FROM IDN_OAUTH_CONSUMER_APPS WHERE CONSUMER_KEY='${clientId}'`,
53+
`SELECT OAUTH_CONFIG_JSON FROM APP_OAUTH_INBOUND_CONFIG WHERE CLIENT_ID='${clientId}'`,
5654
);
5755

5856
if (configJson) {
@@ -68,25 +66,19 @@ export async function getThunderAppClientId(): Promise<{clientId: string; applic
6866
needsUpdate = true;
6967
}
7068

71-
// Fix token issuer to match OIDC discovery (required for ID token validation)
72-
if (config.token?.issuer !== correctIssuer) {
73-
config.token.issuer = correctIssuer;
74-
needsUpdate = true;
75-
}
76-
7769
if (needsUpdate) {
7870
const updatedJson = JSON.stringify(config);
7971

8072
// Write JSON to a temp file inside the container to avoid shell escaping issues,
8173
// then use readfile() in the SQLite UPDATE.
82-
execSync(
83-
`docker exec -i ${CONTAINER} sh -c 'cat > /tmp/oauth_config.json'`,
84-
{input: updatedJson, encoding: 'utf-8'},
85-
);
74+
execSync(`docker exec -i ${CONTAINER} sh -c 'cat > /tmp/oauth_config.json'`, {
75+
input: updatedJson,
76+
encoding: 'utf-8',
77+
});
8678
thunderSqlite(
87-
`UPDATE IDN_OAUTH_CONSUMER_APPS SET OAUTH_CONFIG_JSON=readfile('/tmp/oauth_config.json') WHERE CONSUMER_KEY='${clientId}'`,
79+
`UPDATE APP_OAUTH_INBOUND_CONFIG SET OAUTH_CONFIG_JSON=readfile('/tmp/oauth_config.json') WHERE CLIENT_ID='${clientId}'`,
8880
);
89-
console.log(`[E2E] Thunder app OAuth config updated (redirect_uris, token issuer)`);
81+
console.log(`[E2E] Thunder app OAuth config updated (redirect_uris)`);
9082
}
9183
}
9284
} catch (err) {

e2e/setup/thunder/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
export const THUNDER_CONFIG = {
6-
baseUrl: process.env.THUNDER_BASE_URL ?? 'https://localhost:8090',
6+
baseUrl: process.env.THUNDER_BASE_URL ?? 'https://localhost:9090',
77
healthCheckPath: '/health/readiness',
88
adminUsername: 'admin',
99
adminPassword: 'admin',

e2e/thunder-bootstrap/02-sample-resources.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ RESPONSE=$(thunder_api_call POST "/applications" "{
188188
\"registration_flow_graph_id\": \"${REG_FLOW_ID}\",
189189
\"is_registration_flow_enabled\": true,
190190
\"user_attributes\": [\"given_name\",\"family_name\",\"email\",\"groups\",\"name\"],
191-
\"allowed_user_types\": [\"Customer\"],
191+
\"allowed_user_types\": [\"Customer\",\"Person\"],
192192
\"inbound_auth_config\": [{
193193
\"type\": \"oauth2\",
194194
\"config\": {
@@ -201,7 +201,7 @@ RESPONSE=$(thunder_api_call POST "/applications" "{
201201
\"pkce_required\": true,
202202
\"public_client\": true,
203203
\"token\": {
204-
\"issuer\": \"${PUBLIC_URL}/oauth2/token\",
204+
\"issuer\": \"${PUBLIC_URL}\",
205205
\"access_token\": {
206206
\"validity_period\": 3600,
207207
\"user_attributes\": [\"given_name\",\"family_name\",\"email\",\"groups\",\"name\"]

e2e/thunder-config/deployment.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
server:
22
hostname: "0.0.0.0"
3-
public_url: "https://localhost:8090"
3+
public_url: "https://localhost:9090"
44
port: 8090
55

6+
gate_client:
7+
hostname: "localhost"
8+
port: 9090
9+
scheme: "https"
10+
path: "/gate"
11+
612
tls:
713
min_version: "1.3"
814
cert_file: "repository/resources/security/server.cert"

e2e/thunder-config/gate-config.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* Custom Gate runtime config for e2e tests.
3+
*
4+
* Points the Gate's API calls at the Docker Thunder container
5+
* on port 9090 (mapped from 8090 to avoid conflicts with any
6+
* local Thunder dev server).
7+
*/
8+
9+
/* eslint-disable no-underscore-dangle */
10+
11+
window.__THUNDER_RUNTIME_CONFIG__ = {
12+
client: {
13+
base: '/gate',
14+
},
15+
server: {
16+
public_url: 'https://localhost:9090',
17+
},
18+
};

0 commit comments

Comments
 (0)