@@ -7,16 +7,110 @@ import { createApp, ensureAddress, handleArgsSocketCatchError, handleServerError
7
7
import { OptionalString , setDefaults } from "../../../src/node/cli"
8
8
import { getAvailablePort , tmpdir } from "../../utils/helpers"
9
9
10
+ // wip: todo@jsjoeio fix this
11
+ const FAKE_CRT = `-----BEGIN CERTIFICATE-----
12
+ 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
42
+ -----END CERTIFICATE-----`
43
+
44
+ const FAKE_KEY = `-----BEGIN PRIVATE KEY-----
45
+ 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
94
+ Tg+GmU9QQHC8AIKkHqHsjger8K9paw==
95
+ -----END PRIVATE KEY-----`
96
+
10
97
describe ( "createApp" , ( ) => {
11
98
let spy : jest . SpyInstance
12
99
let unlinkSpy : jest . SpyInstance
13
100
let port : number
14
101
let tmpDirPath : string
15
102
let tmpFilePath : string
103
+ let certPath : string
104
+ let certKeyPath : string
16
105
17
106
beforeAll ( async ( ) => {
18
107
tmpDirPath = await tmpdir ( "unlink-socket" )
19
108
tmpFilePath = path . join ( tmpDirPath , "unlink-socket-file" )
109
+ certPath = path . join ( tmpDirPath , "test.crt" )
110
+ certKeyPath = path . join ( tmpDirPath , "test.key" )
111
+
112
+ await promises . writeFile ( certPath , FAKE_CRT )
113
+ await promises . writeFile ( certKeyPath , FAKE_KEY )
20
114
} )
21
115
22
116
beforeEach ( async ( ) => {
@@ -138,12 +232,12 @@ describe("createApp", () => {
138
232
} )
139
233
140
234
it ( "should create an https server if args.cert exists" , async ( ) => {
141
- const cert = new OptionalString ( "./test/utils/test.crt" )
235
+ const cert = new OptionalString ( certKeyPath )
142
236
const defaultArgs = await setDefaults ( {
143
237
port,
144
238
cert,
145
239
_ : [ ] ,
146
- [ "cert-key" ] : "./test/utils/test.key" ,
240
+ [ "cert-key" ] : certKeyPath ,
147
241
} )
148
242
const app = await createApp ( defaultArgs )
149
243
const server = app [ 2 ]
0 commit comments