@@ -11,11 +11,74 @@ import 'reflect-metadata'
1111import supertest from 'supertest'
1212import { test } from '@japa/runner'
1313import { createServer } from 'node:http'
14+ import type { NextFn } from '@poppinss/middleware/types'
15+
16+ import { Router } from '../src/router/main.js'
1417import { AppFactory } from '../test_factories/app.js'
1518import { HttpContext } from '../src/http_context/main.js'
16- import type { NextFn } from '@poppinss/middleware/types'
1719import { ServerFactory } from '../test_factories/server_factory.js'
1820
21+ test . group ( 'Server' , ( ) => {
22+ test ( 'fail when booting without defining middleware' , ( { assert } ) => {
23+ const app = new AppFactory ( ) . create ( )
24+ const server = new ServerFactory ( ) . merge ( { app } ) . create ( )
25+
26+ assert . rejects (
27+ ( ) => server . boot ( ) ,
28+ 'Cannot boot HTTP server. Register middleware using "server.use" first'
29+ )
30+ } )
31+
32+ test ( 'get router instance used by the server' , ( { assert } ) => {
33+ const app = new AppFactory ( ) . create ( )
34+ const server = new ServerFactory ( ) . merge ( { app } ) . create ( )
35+ server . use ( [ ] , [ ] , { } )
36+
37+ assert . instanceOf ( server . getRouter ( ) , Router )
38+ } )
39+
40+ test ( 'store http server instance' , ( { assert } ) => {
41+ const app = new AppFactory ( ) . create ( )
42+ const server = new ServerFactory ( ) . merge ( { app } ) . create ( )
43+ server . use ( [ ] , [ ] , { } )
44+
45+ const httpServer = createServer ( ( ) => { } )
46+ server . setNodeServer ( httpServer )
47+
48+ assert . strictEqual ( server . getNodeServer ( ) , httpServer )
49+ } )
50+
51+ test ( 'close node server ' , async ( { assert } ) => {
52+ assert . plan ( 1 )
53+
54+ const app = new AppFactory ( ) . create ( )
55+ const server = new ServerFactory ( ) . merge ( { app } ) . create ( )
56+ server . use ( [ ] , [ ] , { } )
57+
58+ const httpServer = createServer ( ( ) => { } ) . listen ( 3000 )
59+ server . setNodeServer ( httpServer )
60+
61+ httpServer . on ( 'close' , ( ) => {
62+ assert . isFalse ( httpServer . listening )
63+ } )
64+
65+ await server . close ( )
66+ } )
67+
68+ test ( 'noop when http server is not listening or not set' , async ( { assert } ) => {
69+ const app = new AppFactory ( ) . create ( )
70+ const server = new ServerFactory ( ) . merge ( { app } ) . create ( )
71+ server . use ( [ ] , [ ] , { } )
72+
73+ assert . doesNotRejects ( ( ) => server . close ( ) )
74+
75+ const httpServer = createServer ( ( ) => { } )
76+ server . setNodeServer ( httpServer )
77+
78+ assert . doesNotRejects ( ( ) => server . close ( ) )
79+ } )
80+ } )
81+
1982test . group ( 'Server | Response handling' , ( ) => {
2083 test ( 'invoke router handler' , async ( { assert } ) => {
2184 const app = new AppFactory ( ) . create ( )
0 commit comments