@@ -22,6 +22,9 @@ import request from 'supertest';
22
22
import type * as podmanDesktopApi from '@podman-desktop/api' ;
23
23
import path from 'path' ;
24
24
import type { Server } from 'http' ;
25
+ import type { ModelsManager } from './modelsManager' ;
26
+ import type { EventEmitter } from 'node:events' ;
27
+ import { once } from 'node:events' ;
25
28
26
29
class TestApiServer extends ApiServer {
27
30
public override getListener ( ) : Server | undefined {
@@ -33,16 +36,21 @@ const extensionContext = {} as unknown as podmanDesktopApi.ExtensionContext;
33
36
34
37
let server : TestApiServer ;
35
38
39
+ const modelsManager = {
40
+ getModelsInfo : vi . fn ( ) ,
41
+ } as unknown as ModelsManager ;
42
+
36
43
beforeEach ( async ( ) => {
37
- server = new TestApiServer ( extensionContext ) ;
44
+ server = new TestApiServer ( extensionContext , modelsManager ) ;
38
45
vi . spyOn ( server , 'displayApiInfo' ) . mockReturnValue ( ) ;
39
46
vi . spyOn ( server , 'getSpecFile' ) . mockReturnValue ( path . join ( __dirname , '../../../../api/openapi.yaml' ) ) ;
40
47
vi . spyOn ( server , 'getPackageFile' ) . mockReturnValue ( path . join ( __dirname , '../../../../package.json' ) ) ;
41
48
await server . init ( ) ;
42
49
} ) ;
43
50
44
- afterEach ( ( ) => {
51
+ afterEach ( async ( ) => {
45
52
server . dispose ( ) ;
53
+ await once ( server . getListener ( ) as EventEmitter , 'close' ) ;
46
54
} ) ;
47
55
48
56
test ( '/spec endpoint' , async ( ) => {
@@ -101,3 +109,21 @@ test('/api/wrongEndpoint', async () => {
101
109
expect ( server . getListener ( ) ) . toBeDefined ( ) ;
102
110
await request ( server . getListener ( ) ! ) . get ( '/api/wrongEndpoint' ) . expect ( 404 ) ;
103
111
} ) ;
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