mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
fix: Rewrite request with a root path to OIDC Provider
* fix(oidc): rewrite requests with rootpath * fix: respect query parameters
This commit is contained in:
@@ -5,7 +5,9 @@ import type { HttpRequest } from '../../../src/server/HttpRequest';
|
||||
import type { HttpResponse } from '../../../src/server/HttpResponse';
|
||||
|
||||
describe('An OidcHttpHandler', (): void => {
|
||||
const request: HttpRequest = {} as any;
|
||||
const request: HttpRequest = {
|
||||
url: '/.well-known/openid-configuration',
|
||||
} as any;
|
||||
const response: HttpResponse = {} as any;
|
||||
let provider: jest.Mocked<Provider>;
|
||||
let providerFactory: jest.Mocked<ProviderFactory>;
|
||||
@@ -14,11 +16,12 @@ describe('An OidcHttpHandler', (): void => {
|
||||
beforeEach(async(): Promise<void> => {
|
||||
provider = {
|
||||
callback: jest.fn().mockReturnValue(jest.fn()),
|
||||
issuer: 'http://localhost:3000/',
|
||||
} as any;
|
||||
|
||||
providerFactory = {
|
||||
getProvider: jest.fn().mockResolvedValue(provider),
|
||||
};
|
||||
} as any;
|
||||
|
||||
handler = new OidcHttpHandler(providerFactory);
|
||||
});
|
||||
@@ -29,4 +32,24 @@ describe('An OidcHttpHandler', (): void => {
|
||||
expect(provider.callback.mock.results[0].value).toHaveBeenCalledTimes(1);
|
||||
expect(provider.callback.mock.results[0].value).toHaveBeenLastCalledWith(request, response);
|
||||
});
|
||||
|
||||
it('rewrites the request when using base URL with root path.', async(): Promise<void> => {
|
||||
Object.assign(provider, { issuer: 'http://localhost:3000/path/' });
|
||||
request.url = '/path/.well-known/openid-configuration';
|
||||
await expect(handler.handle({ request, response })).resolves.toBeUndefined();
|
||||
expect(request.url).toBe('/.well-known/openid-configuration');
|
||||
expect(provider.callback).toHaveBeenCalledTimes(1);
|
||||
expect(provider.callback.mock.results[0].value).toHaveBeenCalledTimes(1);
|
||||
expect(provider.callback.mock.results[0].value).toHaveBeenLastCalledWith(request, response);
|
||||
});
|
||||
|
||||
it('respects query parameters when rewriting requests.', async(): Promise<void> => {
|
||||
Object.assign(provider, { issuer: 'http://localhost:3000/path/' });
|
||||
request.url = '/path/.well-known/openid-configuration?param1=value1';
|
||||
await expect(handler.handle({ request, response })).resolves.toBeUndefined();
|
||||
expect(request.url).toBe('/.well-known/openid-configuration?param1=value1');
|
||||
expect(provider.callback).toHaveBeenCalledTimes(1);
|
||||
expect(provider.callback.mock.results[0].value).toHaveBeenCalledTimes(1);
|
||||
expect(provider.callback.mock.results[0].value).toHaveBeenLastCalledWith(request, response);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user