11const em = require ( "evomaster-client-js" ) ;
22const dbHandler = require ( "./db-handler" ) ;
33
4- const { NestFactory } = require ( '@nestjs/core' ) ;
4+ const { NestFactory} = require ( '@nestjs/core' ) ;
5+ const superagent = require ( "superagent" ) ;
56
7+ class AppController extends em . SutController {
68
7- class AppController extends em . SutController {
8-
9- setupForGeneratedTest ( ) {
9+ setupForGeneratedTest ( ) {
1010 }
1111
12- getInfoForAuthentication ( ) {
13- return [ ] ;
12+ getInfoForAuthentication ( ) {
13+ let jwtLogin = new em . dto . JsonTokenPostLoginDto ( ) ;
14+ jwtLogin . endpoint = "/api/graphql" ;
15+ jwtLogin . userId = "foo" ;
16+ jwtLogin . extractTokenField = "/data/login/token" ;
17+ jwtLogin . jsonPayload = `{
18+ "mutation": "login(data:{email:\\"foo@foo.com\\",password:\\"bar123\\"}){token}"
19+ }` ;
20+ jwtLogin . headerPrefix = "Bearer " ;
21+
22+
23+ let auth = new em . dto . AuthenticationDto ( ) ;
24+ auth . name = "foo-auth" ;
25+ auth . jsonTokenPostLogin = jwtLogin ;
26+ return [ auth ] ;
1427 }
1528
1629 getPreferredOutputFormat ( ) {
@@ -23,47 +36,67 @@ class AppController extends em.SutController {
2336 return dto ;
2437 }
2538
26- isSutRunning ( ) {
39+ isSutRunning ( ) {
2740 if ( ! this . server ) {
2841 return false ;
2942 }
3043 return this . server . listening ;
3144 }
3245
33- resetStateOfSUT ( ) {
34- return dbHandler . cleanDb ( ) ;
46+ resetStateOfSUT ( ) {
47+ return new Promise ( ( resolve ) => {
48+ dbHandler . cleanDb ( ) . then ( async ( ) => {
49+ await superagent
50+ . post ( this . baseUrlOfSut + "/graphql" )
51+ . set ( 'Content-Type' , 'application/json' )
52+ . send ( `{
53+ "mutation" : "createUser(data:{
54+ name:\\"foo\\",
55+ username:\\"foo\\",
56+ email:\\"foo@foo.com\\",
57+ password:\\"bar123\\",
58+ confirmPassword:\\"bar123\\"}
59+ ){username}"
60+ }` )
61+ . ok ( res => res . status ) ;
62+ resolve ( ) ;
63+ } ) ;
64+ } ) ;
3565 }
3666
37- startSut ( ) {
67+ startSut ( ) {
3868
39- return new Promise ( async ( resolve ) => {
69+ return new Promise ( async ( resolve ) => {
4070
4171 await dbHandler . startDb ( ) ;
4272
4373 process . env . SECRET = "a secret" ;
4474 process . env . DATABASE_USER = "foo"
4575 process . env . DATABASE_PASSWORD = "bar"
46- process . env . DATABASE_HOST = "localhost"
47- process . env . DATABASE_NAME = "db" ;
48- process . env . DATABASE_PORT = process . env . DB_PORT
76+ process . env . DATABASE_HOST = "localhost"
77+ process . env . DATABASE_NAME = "db" ;
78+ process . env . DATABASE_PORT = process . env . DB_PORT
4979
50- const { AppModule } = require ( './../src/app.module' ) ;
80+ const { AppModule} = require ( './../src/app.module' ) ;
5181
5282 const app = await NestFactory . create ( AppModule ) ;
5383 app . setGlobalPrefix ( 'api' )
5484
5585 app . listen ( 0 , "localhost" , ( ) => {
5686 this . server = app . getHttpServer ( ) ;
5787 this . port = this . server . address ( ) . port ;
58- resolve ( "http://localhost:" + this . port ) ;
88+ const url = "http://localhost:" + this . port ;
89+ this . baseUrlOfSut = url ;
90+ console . log ( "Started API at: " + url )
91+ resolve ( url ) ;
5992 } ) ;
6093 } ) ;
6194 }
6295
6396 stopSut ( ) {
64- return new Promise ( async ( resolve ) => {
97+ return new Promise ( async ( resolve ) => {
6598 await dbHandler . stopDb ( ) ;
66- this . server . close ( ( ) => resolve ( ) )
99+ this . server . close ( ( ) => resolve ( ) )
67100 } ) ;
68101 }
69102
0 commit comments