mirror of
https://github.com/pnpm/pnpm.git
synced 2026-02-14 09:02:44 -05:00
refactor(test): some small polishments (#10603)
* test: full message * refactor: consistent indentation * docs: remove extraneous comment * test: more cases
This commit is contained in:
@@ -125,7 +125,7 @@ describe('fetchAuthToken', () => {
|
||||
await expect(promise).rejects.toHaveProperty(['code'], 'ERR_PNPM_AUTH_TOKEN_FETCH')
|
||||
})
|
||||
|
||||
test('throws AuthTokenExchangeError when response is not ok', async () => {
|
||||
test('throws AuthTokenExchangeError when response is not ok and returns a payload of error', async () => {
|
||||
const mockFetch = jest.fn(async () => ({
|
||||
ok: false,
|
||||
status: 401,
|
||||
@@ -142,6 +142,35 @@ describe('fetchAuthToken', () => {
|
||||
await expect(promise).rejects.toHaveProperty(['httpStatus'], 401)
|
||||
await expect(promise).rejects.toHaveProperty(['errorResponse', 'body', 'message'], 'Unauthorized')
|
||||
await expect(promise).rejects.toHaveProperty(['code'], 'ERR_PNPM_AUTH_TOKEN_EXCHANGE')
|
||||
await expect(promise).rejects.toHaveProperty(
|
||||
['message'],
|
||||
'Failed token exchange request with body message: Unauthorized (status code 401)'
|
||||
)
|
||||
})
|
||||
|
||||
test('throws AuthTokenExchangeError when response is not ok and the returned payload could not be fetched', async () => {
|
||||
const mockFetch = jest.fn(async () => ({
|
||||
ok: false,
|
||||
status: 401,
|
||||
json: async () => {
|
||||
throw new Error('no json')
|
||||
},
|
||||
}))
|
||||
|
||||
const context: AuthTokenContext = {
|
||||
fetch: mockFetch,
|
||||
}
|
||||
|
||||
const promise = fetchAuthToken({ context, idToken, packageName, registry })
|
||||
|
||||
await expect(promise).rejects.toBeInstanceOf(AuthTokenExchangeError)
|
||||
await expect(promise).rejects.toHaveProperty(['httpStatus'], 401)
|
||||
await expect(promise).rejects.toHaveProperty(['errorResponse'], undefined)
|
||||
await expect(promise).rejects.toHaveProperty(['code'], 'ERR_PNPM_AUTH_TOKEN_EXCHANGE')
|
||||
await expect(promise).rejects.toHaveProperty(
|
||||
['message'],
|
||||
'Failed token exchange request with body message: Unknown error (status code 401)'
|
||||
)
|
||||
})
|
||||
|
||||
test('handles exchange error with missing body message', async () => {
|
||||
@@ -159,7 +188,10 @@ describe('fetchAuthToken', () => {
|
||||
|
||||
await expect(promise).rejects.toBeInstanceOf(AuthTokenExchangeError)
|
||||
await expect(promise).rejects.toHaveProperty(['httpStatus'], 403)
|
||||
await expect(promise).rejects.toMatchObject({ message: expect.stringContaining('Unknown error') })
|
||||
await expect(promise).rejects.toHaveProperty(
|
||||
['message'],
|
||||
'Failed token exchange request with body message: Unknown error (status code 403)'
|
||||
)
|
||||
})
|
||||
|
||||
test('handles exchange error when json response is valid', async () => {
|
||||
@@ -232,8 +264,7 @@ describe('fetchAuthToken', () => {
|
||||
fetch: mockFetch,
|
||||
}
|
||||
|
||||
await expect(fetchAuthToken({ context, idToken, packageName, registry }))
|
||||
.rejects.toThrow(AuthTokenMalformedJsonError)
|
||||
await expect(fetchAuthToken({ context, idToken, packageName, registry })).rejects.toThrow(AuthTokenMalformedJsonError)
|
||||
})
|
||||
|
||||
test('throws AuthTokenMalformedJsonError when JSON response is null', async () => {
|
||||
@@ -247,8 +278,7 @@ describe('fetchAuthToken', () => {
|
||||
fetch: mockFetch,
|
||||
}
|
||||
|
||||
await expect(fetchAuthToken({ context, idToken, packageName, registry }))
|
||||
.rejects.toThrow(AuthTokenMalformedJsonError)
|
||||
await expect(fetchAuthToken({ context, idToken, packageName, registry })).rejects.toThrow(AuthTokenMalformedJsonError)
|
||||
})
|
||||
|
||||
test('throws AuthTokenMalformedJsonError when JSON response is not an object', async () => {
|
||||
@@ -262,7 +292,6 @@ describe('fetchAuthToken', () => {
|
||||
fetch: mockFetch,
|
||||
}
|
||||
|
||||
await expect(fetchAuthToken({ context, idToken, packageName, registry }))
|
||||
.rejects.toThrow(AuthTokenMalformedJsonError)
|
||||
await expect(fetchAuthToken({ context, idToken, packageName, registry })).rejects.toThrow(AuthTokenMalformedJsonError)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -81,8 +81,7 @@ describe('getIdToken', () => {
|
||||
process: { env: {} },
|
||||
}
|
||||
|
||||
await expect(getIdToken({ context, registry }))
|
||||
.rejects.toThrow(IdTokenGitHubWorkflowIncorrectPermissionsError)
|
||||
await expect(getIdToken({ context, registry })).rejects.toThrow(IdTokenGitHubWorkflowIncorrectPermissionsError)
|
||||
})
|
||||
|
||||
test('throws error when only ACTIONS_ID_TOKEN_REQUEST_TOKEN is set', async () => {
|
||||
@@ -94,8 +93,7 @@ describe('getIdToken', () => {
|
||||
process: { env: { ACTIONS_ID_TOKEN_REQUEST_TOKEN: 'token' } },
|
||||
}
|
||||
|
||||
await expect(getIdToken({ context, registry }))
|
||||
.rejects.toThrow(IdTokenGitHubWorkflowIncorrectPermissionsError)
|
||||
await expect(getIdToken({ context, registry })).rejects.toThrow(IdTokenGitHubWorkflowIncorrectPermissionsError)
|
||||
})
|
||||
|
||||
test('throws error when only ACTIONS_ID_TOKEN_REQUEST_URL is set', async () => {
|
||||
@@ -107,8 +105,7 @@ describe('getIdToken', () => {
|
||||
process: { env: { ACTIONS_ID_TOKEN_REQUEST_URL: 'https://example.com' } },
|
||||
}
|
||||
|
||||
await expect(getIdToken({ context, registry }))
|
||||
.rejects.toThrow(IdTokenGitHubWorkflowIncorrectPermissionsError)
|
||||
await expect(getIdToken({ context, registry })).rejects.toThrow(IdTokenGitHubWorkflowIncorrectPermissionsError)
|
||||
})
|
||||
|
||||
test('fetches ID token from GitHub Actions successfully', async () => {
|
||||
|
||||
@@ -13,7 +13,6 @@ describe('determineProvenance', () => {
|
||||
const packageName = '@pnpm/test-package'
|
||||
const authToken = 'test-auth-token'
|
||||
|
||||
// Helper to create a valid JWT-like token
|
||||
function createIdToken (payload: Record<string, unknown>): string {
|
||||
const header = { alg: 'RS256', typ: 'JWT' }
|
||||
const headerB64 = Buffer.from(JSON.stringify(header)).toString('base64url')
|
||||
@@ -328,7 +327,10 @@ describe('determineProvenance', () => {
|
||||
await expect(promise).rejects.toHaveProperty(['registry'], registry)
|
||||
await expect(promise).rejects.toHaveProperty(['errorResponse', 'code'], 'NOT_FOUND')
|
||||
await expect(promise).rejects.toHaveProperty(['errorResponse', 'message'], 'Package not found')
|
||||
await expect(promise).rejects.toMatchObject({ message: expect.stringContaining('NOT_FOUND: Package not found') })
|
||||
await expect(promise).rejects.toHaveProperty(
|
||||
['message'],
|
||||
'Failed to fetch visibility for package @pnpm/test-package from registry https://registry.npmjs.org due to NOT_FOUND: Package not found (status code 404)'
|
||||
)
|
||||
})
|
||||
|
||||
test('handles visibility fetch error with only code', async () => {
|
||||
@@ -355,8 +357,10 @@ describe('determineProvenance', () => {
|
||||
})
|
||||
|
||||
await expect(promise).rejects.toBeInstanceOf(ProvenanceFailedToFetchVisibilityError)
|
||||
await expect(promise).rejects.toMatchObject({ message: expect.stringContaining('UNAUTHORIZED') })
|
||||
await expect(promise).rejects.toMatchObject({ message: expect.not.stringContaining(': ') })
|
||||
await expect(promise).rejects.toHaveProperty(
|
||||
['message'],
|
||||
'Failed to fetch visibility for package @pnpm/test-package from registry https://registry.npmjs.org due to UNAUTHORIZED (status code 401)'
|
||||
)
|
||||
})
|
||||
|
||||
test('handles visibility fetch error with only message', async () => {
|
||||
@@ -383,7 +387,10 @@ describe('determineProvenance', () => {
|
||||
})
|
||||
|
||||
await expect(promise).rejects.toBeInstanceOf(ProvenanceFailedToFetchVisibilityError)
|
||||
await expect(promise).rejects.toMatchObject({ message: expect.stringContaining('Internal server error') })
|
||||
await expect(promise).rejects.toHaveProperty(
|
||||
['message'],
|
||||
'Failed to fetch visibility for package @pnpm/test-package from registry https://registry.npmjs.org due to Internal server error (status code 500)'
|
||||
)
|
||||
})
|
||||
|
||||
test('handles visibility fetch error with no error details', async () => {
|
||||
@@ -410,7 +417,10 @@ describe('determineProvenance', () => {
|
||||
})
|
||||
|
||||
await expect(promise).rejects.toBeInstanceOf(ProvenanceFailedToFetchVisibilityError)
|
||||
await expect(promise).rejects.toMatchObject({ message: expect.stringContaining('an unknown error') })
|
||||
await expect(promise).rejects.toHaveProperty(
|
||||
['message'],
|
||||
'Failed to fetch visibility for package @pnpm/test-package from registry https://registry.npmjs.org due to an unknown error (status code 503)'
|
||||
)
|
||||
})
|
||||
|
||||
test('handles visibility fetch error when JSON parsing fails', async () => {
|
||||
|
||||
Reference in New Issue
Block a user