UNPKG

@lxdhub/api

Version:

Display, search and copy LXD-images using a web interface.

67 lines (60 loc) 1.76 kB
import { ImageListItemDto } from '@lxdhub/interfaces'; import { ImageListItemInterceptor } from './image-list-item.interceptor'; import { Observable, of } from 'rxjs'; import { ImageListItemResponse } from '@lxdhub/api/src/image/dtos'; describe('ImageListItemInterceptor', () => { let stream$: Observable<ImageListItemResponse>; let req; let contextMock; beforeEach(async () => { const results: ImageListItemDto[] = [ { fingerprint: 'fingerprint1', description: 'desc1', uploadedAt: new Date(), id: 1 } as ImageListItemDto, { fingerprint: 'fingerprint2', description: 'desc2', uploadedAt: new Date(), id: 2 } as ImageListItemDto ]; req = { _parsedUrl: { pathname: '/api/v1/image' }, protocol: 'http', get: param => (param === 'host' ? 'localhost:3000' : 'not-valid') }; contextMock = { switchToHttp() { return { getRequest() { return req; } }; } }; const pagination = { results } as ImageListItemResponse; stream$ = of<ImageListItemResponse>(pagination); }); describe('intercept', () => { it('should generate the correct detail url', async done => { const streamOutput$ = new ImageListItemInterceptor().intercept( contextMock, { handle: () => stream$ } ); streamOutput$.subscribe(response => { expect(response.results[0]._links.detail).toBe( 'http://localhost:3000/api/v1/image/fingerprint1' ); expect(response.results[1]._links.detail).toBe( 'http://localhost:3000/api/v1/image/fingerprint2' ); done(); }); }); }); });