@@ -22,6 +22,9 @@ import request from 'supertest';
2222import type * as podmanDesktopApi from '@podman-desktop/api' ;
2323import path from 'path' ;
2424import type { Server } from 'http' ;
25+ import type { ModelsManager } from './modelsManager' ;
26+ import type { EventEmitter } from 'node:events' ;
27+ import { once } from 'node:events' ;
2528
2629class TestApiServer extends ApiServer {
2730 public override getListener ( ) : Server | undefined {
@@ -33,16 +36,21 @@ const extensionContext = {} as unknown as podmanDesktopApi.ExtensionContext;
3336
3437let server : TestApiServer ;
3538
39+ const modelsManager = {
40+ getModelsInfo : vi . fn ( ) ,
41+ } as unknown as ModelsManager ;
42+
3643beforeEach ( async ( ) => {
37- server = new TestApiServer ( extensionContext ) ;
44+ server = new TestApiServer ( extensionContext , modelsManager ) ;
3845 vi . spyOn ( server , 'displayApiInfo' ) . mockReturnValue ( ) ;
3946 vi . spyOn ( server , 'getSpecFile' ) . mockReturnValue ( path . join ( __dirname , '../../../../api/openapi.yaml' ) ) ;
4047 vi . spyOn ( server , 'getPackageFile' ) . mockReturnValue ( path . join ( __dirname , '../../../../package.json' ) ) ;
4148 await server . init ( ) ;
4249} ) ;
4350
44- afterEach ( ( ) => {
51+ afterEach ( async ( ) => {
4552 server . dispose ( ) ;
53+ await once ( server . getListener ( ) as EventEmitter , 'close' ) ;
4654} ) ;
4755
4856test ( '/spec endpoint' , async ( ) => {
@@ -101,3 +109,21 @@ test('/api/wrongEndpoint', async () => {
101109 expect ( server . getListener ( ) ) . toBeDefined ( ) ;
102110 await request ( server . getListener ( ) ! ) . get ( '/api/wrongEndpoint' ) . expect ( 404 ) ;
103111} ) ;
112+
113+ test ( '/' , async ( ) => {
114+ expect ( server . getListener ( ) ) . toBeDefined ( ) ;
115+ await request ( server . getListener ( ) ! ) . get ( '/' ) . expect ( 200 ) ;
116+ } ) ;
117+
118+ test ( '/api/tags' , async ( ) => {
119+ expect ( server . getListener ( ) ) . toBeDefined ( ) ;
120+ vi . mocked ( modelsManager . getModelsInfo ) . mockReturnValue ( [ ] ) ;
121+ await request ( server . getListener ( ) ! ) . get ( '/api/tags' ) . expect ( 200 ) ;
122+ } ) ;
123+
124+ test ( '/api/tags returns error' , async ( ) => {
125+ expect ( server . getListener ( ) ) . toBeDefined ( ) ;
126+ vi . mocked ( modelsManager . getModelsInfo ) . mockRejectedValue ( { } ) ;
127+ const res = await request ( server . getListener ( ) ! ) . get ( '/api/tags' ) . expect ( 500 ) ;
128+ expect ( res . body . message ) . toEqual ( 'unable to get models' ) ;
129+ } ) ;
0 commit comments