|
1 | | -const dbHandler = require("./db-handler"); |
2 | | -const http = require("http"); |
3 | | -const {AddressInfo} = require("net"); |
4 | | - |
5 | | -// const app = require("../src/dist/server"); |
| 1 | +require('ts-node/register'); |
6 | 2 |
|
| 3 | +const dbHandler = require("./db-handler"); |
7 | 4 | const em = require("evomaster-client-js"); |
8 | 5 | const superagent = require("superagent"); |
9 | | -const {getFreePort} =require("./get-free-port") |
| 6 | +const {getConnectionOptions} = require("typeorm"); |
| 7 | +const {NestFactory} = require("@nestjs/core"); |
10 | 8 |
|
11 | | -class AppController extends em.SutController { |
12 | 9 |
|
13 | | - setupForGeneratedTest(){ |
14 | | - return new Promise((resolve)=>{ |
15 | | - this.testcontainer = dbHandler.startDb(); |
16 | | - resolve(this.testcontainer); |
17 | | - }); |
18 | | - } |
| 10 | +class AppController extends em.SutController { |
19 | 11 |
|
20 | 12 | getInfoForAuthentication(){ |
21 | 13 | let jwtLogin = new em.dto.JsonTokenPostLoginDto(); |
@@ -78,26 +70,44 @@ class AppController extends em.SutController { |
78 | 70 | } |
79 | 71 |
|
80 | 72 | startSut(){ |
81 | | - //TODO clean mysql db |
82 | | - //docker run --name mysql_db -e MYSQL_ROOT_PASSWORD=test -e MYSQL_USER=test -e MYSQL_PASSWORD=test -e MYSQL_DATABASE=test -p 3306:3306 -d mysql:5.7.22 |
83 | | - //note that for this sut, do not support mysql:8.* |
| 73 | + |
84 | 74 | return new Promise(async (resolve) => { |
85 | | - this.port = process.env.SUT_PORT || await getFreePort(); |
86 | | - this.server = await require("../src/server").bootstrap(this.port); |
87 | | - this.baseUrlOfSut = "http://localhost:" + this.port; |
88 | | - resolve("http://localhost:" + this.port); |
| 75 | + |
| 76 | + //docker run --name mysql_db -e MYSQL_ROOT_PASSWORD=test -e MYSQL_USER=test -e MYSQL_PASSWORD=test -e MYSQL_DATABASE=test -p 3306:3306 -d mysql:5.7.22 |
| 77 | + //note that for this sut, do not support mysql:8.* |
| 78 | + await dbHandler.startDb(); |
| 79 | + |
| 80 | + const connectionOptions = await getConnectionOptions(); |
| 81 | + // modify the value of port |
| 82 | + Object.assign(connectionOptions, { port: process.env.DB_PORT || 3306}); |
| 83 | + |
| 84 | + const {ApplicationModule} = require("../src/app.module"); |
| 85 | + |
| 86 | + const appOptions = {cors: true}; |
| 87 | + const app = await NestFactory.create(ApplicationModule, appOptions); |
| 88 | + app.setGlobalPrefix('api'); |
| 89 | + |
| 90 | + app.use('/swagger.json', (req, res) => { |
| 91 | + res.status(200); |
| 92 | + res.json(require('../swagger.json')); |
| 93 | + }); |
| 94 | + |
| 95 | + app.listen(0, "localhost", () => { |
| 96 | + this.server = app.getHttpServer(); |
| 97 | + this.port = this.server.address().port; |
| 98 | + const url = "http://localhost:" + this.port; |
| 99 | + this.baseUrlOfSut = url; |
| 100 | + console.log("Started API at: " + url) |
| 101 | + resolve(url); |
| 102 | + }); |
89 | 103 | }); |
90 | 104 |
|
91 | 105 | } |
92 | 106 |
|
93 | 107 | stopSut() { |
94 | 108 | return new Promise( (async resolve => { |
95 | 109 | await dbHandler.stopDb(); |
96 | | - await require("../src/server").stop().then(()=>{ |
97 | | - // process.exit(); |
98 | | - resolve(); |
99 | | - }); |
100 | | - |
| 110 | + this.server.close(() => resolve()) |
101 | 111 | }) |
102 | 112 | ); |
103 | 113 | } |
|
0 commit comments