Skip to content

Commit 19c57e4

Browse files
committed
fix(journey-client): remove undefined from JourneyResult return type
The implementation already returns GenericError for empty server responses, so undefined was unreachable. Removing it aligns the type with the actual behavior and matches davinci-client and oidc-client conventions. Also strengthens the wellknown.utils.test.ts assertion helper with a properly typed parameter for compile-time narrowing.
1 parent d119831 commit 19c57e4

3 files changed

Lines changed: 30 additions & 16 deletions

File tree

packages/journey-client/src/lib/client.store.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,22 @@ describe('journey-client', () => {
341341
});
342342
});
343343

344+
test('start_NoDataFromServer_ReturnsGenericError', async () => {
345+
// Arrange: server returns null for the authenticate endpoint
346+
setupMockFetch(null);
347+
348+
// Act
349+
const client = await journey({ config: mockConfig });
350+
const result = await client.start();
351+
352+
// Assert
353+
expect(isGenericError(result)).toBe(true);
354+
if (isGenericError(result)) {
355+
expect(result.error).toBe('no_response_data');
356+
expect(result.type).toBe('unknown_error');
357+
}
358+
});
359+
344360
describe('baseUrl from convertWellknown', () => {
345361
test('journey_LocalhostWellknown_ConstructsCorrectUrls', async () => {
346362
// Arrange

packages/journey-client/src/lib/client.store.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,7 @@ import type { JourneyLoginFailure } from './login-failure.utils.js';
3232
import type { JourneyLoginSuccess } from './login-success.utils.js';
3333

3434
/** Result type for journey client methods. */
35-
type JourneyResult =
36-
| JourneyStep
37-
| JourneyLoginSuccess
38-
| JourneyLoginFailure
39-
| GenericError
40-
| undefined;
35+
type JourneyResult = JourneyStep | JourneyLoginSuccess | JourneyLoginFailure | GenericError;
4136

4237
/** The journey client instance returned by the `journey()` function. */
4338
export interface JourneyClient {

packages/journey-client/src/lib/wellknown.utils.test.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@ import { convertWellknown } from './wellknown.utils.js';
1111
import type { WellknownResponse } from '@forgerock/sdk-types';
1212
import type { ResolvedServerConfig } from './wellknown.utils.js';
1313

14-
function assertResolved(result: unknown): asserts result is ResolvedServerConfig {
15-
expect(result).toBeDefined();
16-
expect(result).not.toHaveProperty('error');
14+
function assertResolvedConfig(
15+
result: ReturnType<typeof convertWellknown>,
16+
): asserts result is ResolvedServerConfig {
17+
if ('error' in result) {
18+
throw new Error(`Expected ResolvedServerConfig but got GenericError: ${result.error}`);
19+
}
1720
}
1821

1922
function createMockWellknown(overrides: Partial<WellknownResponse> = {}): WellknownResponse {
@@ -40,7 +43,7 @@ describe('wellknown.utils', () => {
4043
const result = convertWellknown(data);
4144

4245
// Assert
43-
assertResolved(result);
46+
assertResolvedConfig(result);
4447
expect(result.baseUrl).toBe('https://am.example.com');
4548
expect(result.paths.authenticate).toBe('/am/json/alpha/authenticate');
4649
expect(result.paths.sessions).toBe('/am/json/alpha/sessions/');
@@ -59,7 +62,7 @@ describe('wellknown.utils', () => {
5962
const result = convertWellknown(data);
6063

6164
// Assert
62-
assertResolved(result);
65+
assertResolvedConfig(result);
6366
expect(result.baseUrl).toBe('https://test.com');
6467
expect(result.paths.authenticate).toBe('/am/json/realms/root/authenticate');
6568
expect(result.paths.sessions).toBe('/am/json/realms/root/sessions/');
@@ -78,7 +81,7 @@ describe('wellknown.utils', () => {
7881
const result = convertWellknown(data);
7982

8083
// Assert
81-
assertResolved(result);
84+
assertResolvedConfig(result);
8285
expect(result.baseUrl).toBe('https://test.com');
8386
expect(result.paths.authenticate).toBe('/am/json/realms/root/realms/alpha/authenticate');
8487
expect(result.paths.sessions).toBe('/am/json/realms/root/realms/alpha/sessions/');
@@ -98,7 +101,7 @@ describe('wellknown.utils', () => {
98101
const result = convertWellknown(data);
99102

100103
// Assert
101-
assertResolved(result);
104+
assertResolvedConfig(result);
102105
expect(result.baseUrl).toBe('https://test.com');
103106
expect(result.paths.authenticate).toBe(
104107
'/am/json/realms/root/realms/customers/realms/premium/authenticate',
@@ -121,7 +124,7 @@ describe('wellknown.utils', () => {
121124
const result = convertWellknown(data);
122125

123126
// Assert
124-
assertResolved(result);
127+
assertResolvedConfig(result);
125128
expect(result.baseUrl).toBe('https://am.example.com:8443');
126129
expect(result.paths.authenticate).toBe('/am/json/alpha/authenticate');
127130
});
@@ -139,7 +142,7 @@ describe('wellknown.utils', () => {
139142
const result = convertWellknown(data);
140143

141144
// Assert
142-
assertResolved(result);
145+
assertResolvedConfig(result);
143146
expect(result.baseUrl).toBe('https://am.example.com');
144147
expect(result.paths.authenticate).toBe('/json/alpha/authenticate');
145148
expect(result.paths.sessions).toBe('/json/alpha/sessions/');
@@ -197,7 +200,7 @@ describe('wellknown.utils', () => {
197200
const result = convertWellknown(data);
198201

199202
// Assert
200-
assertResolved(result);
203+
assertResolvedConfig(result);
201204
expect(result.baseUrl).toBe('http://localhost:9443');
202205
expect(result.paths.authenticate).toBe('/am/json/realms/root/authenticate');
203206
expect(result.paths.sessions).toBe('/am/json/realms/root/sessions/');

0 commit comments

Comments
 (0)