55import com .mongodb .client .MongoCollection ;
66import org .bson .Document ;
77import org .bson .types .ObjectId ;
8+ import org .evomaster .client .java .controller .AuthUtils ;
89import org .evomaster .client .java .controller .EmbeddedSutController ;
910import org .evomaster .client .java .controller .InstrumentedSutStarter ;
1011import org .evomaster .client .java .controller .api .dto .AuthenticationDto ;
12+ import org .evomaster .client .java .controller .api .dto .JsonTokenPostLoginDto ;
1113import org .evomaster .client .java .controller .api .dto .SutInfoDto ;
1214import org .evomaster .client .java .sql .DbSpecification ;
1315import org .evomaster .client .java .controller .problem .ProblemInfo ;
1719import org .testcontainers .containers .GenericContainer ;
1820import sk .cyrilgavala .reservationsApi .ReservationsApi ;
1921
22+ import java .util .Arrays ;
2023import java .util .Collections ;
2124import java .util .List ;
2225import java .util .Map ;
@@ -48,12 +51,22 @@ public static void main(String[] args) {
4851 //https://www.mongodb.com/docs/drivers/java/sync/current/compatibility/
4952 private static final String MONGODB_VERSION = "4.4" ;
5053
51- private static final String MONGODB_DATABASE_NAME = "Reservations " ;
54+ private static final String MONGODB_DATABASE_NAME = "reservations-api " ;
5255
53- private static final GenericContainer mongodbContainer = new GenericContainer ("mongo:" + MONGODB_VERSION )
54- .withTmpFs (Collections .singletonMap ("/data/db" , "rw" ))
56+ // docker run -p 27017:27017 -e MONGODB_REPLICA_SET_MODE=primary -e ALLOW_EMPTY_PASSWORD=yes bitnami/mongodb:4.4
57+ // /bitnami/mongodb
58+ // https://hub.docker.com/r/bitnami/mongodb
59+
60+ private static final GenericContainer mongodbContainer = new GenericContainer ("bitnami/mongodb:" + MONGODB_VERSION )
61+ .withTmpFs (Collections .singletonMap ("/bitnami/mongodb" , "rw" ))
62+ .withEnv ("MONGODB_REPLICA_SET_MODE" ,"primary" )
63+ .withEnv ("ALLOW_EMPTY_PASSWORD" ,"yes" )
5564 .withExposedPorts (MONGODB_PORT );
5665
66+ // private static final GenericContainer mongodbContainer = new GenericContainer("mongo:" + MONGODB_VERSION)
67+ // .withTmpFs(Collections.singletonMap("/data/db", "rw"))
68+ // .withExposedPorts(MONGODB_PORT);
69+
5770 private String mongoDbUrl ;
5871
5972 private MongoClient mongoClient ;
@@ -81,7 +94,8 @@ public String startSut() {
8194 new String []{"--server.port=0" ,
8295 "--databaseUrl=" +mongoDbUrl ,
8396 "--spring.data.mongodb.uri=" +mongoDbUrl ,
84- "--spring.cache.type=NONE"
97+ "--spring.cache.type=NONE" ,
98+ "--app.jwt.secret=abcdef012345678901234567890123456789abcdef012345678901234567890123456789"
8599 });
86100
87101 return "http://localhost:" + getSutPort ();
@@ -116,31 +130,39 @@ public String getPackagePrefixesToCover() {
116130 public void resetStateOfSUT () {
117131 mongoClient .getDatabase (MONGODB_DATABASE_NAME ).drop ();
118132
119- // docker run -p 27017:27017 -e MONGODB_REPLICA_SET_MODE=primary -e ALLOW_EMPTY_PASSWORD=yes bitnami/mongodb:4.4
120- // /bitnami/mongodb
121- // https://hub.docker.com/r/bitnami/mongodb
133+
122134
123135 // "bar123"
136+ // YmFyMTIz
124137 // $2a$10$b/SjlT3jexPDGci3EtmzpOnYwmjXrtzCQq5dn8rbMCgz7UZ/saylm
125138 mongoClient .getDatabase (MONGODB_DATABASE_NAME ).createCollection ("users" );
126139
127140 MongoCollection <Document > users = mongoClient .getDatabase (MONGODB_DATABASE_NAME ).getCollection ("users" );
128- users .insertOne (new Document ()
129- .append ("_id" , new ObjectId ())
130- .append ("_class" , "sk.cyrilgavala.reservationsApi.model.User" )
131- .append ("username" , "foo" )
132- .append ("email" , "foo@foo.com" )
133- .append ("password" , "$2a$10$b/SjlT3jexPDGci3EtmzpOnYwmjXrtzCQq5dn8rbMCgz7UZ/saylm" )
134- .append ("role" , "USER" )
135- );
136- users .insertOne (new Document ()
137- .append ("_id" , new ObjectId ())
138- .append ("_class" , "sk.cyrilgavala.reservationsApi.model.User" )
139- .append ("username" , "admin" )
140- .append ("email" , "admin@foo.com" )
141- .append ("password" , "$2a$10$b/SjlT3jexPDGci3EtmzpOnYwmjXrtzCQq5dn8rbMCgz7UZ/saylm" )
142- .append ("role" , "ADMIN" )
143- );
141+ users .insertMany (Arrays .asList (
142+ new Document ()
143+ .append ("_id" , new ObjectId ())
144+ .append ("_class" , "sk.cyrilgavala.reservationsApi.model.User" )
145+ .append ("username" , "foo" )
146+ .append ("email" , "foo@foo.com" )
147+ .append ("password" , "$2a$10$b/SjlT3jexPDGci3EtmzpOnYwmjXrtzCQq5dn8rbMCgz7UZ/saylm" )
148+ .append ("role" , "USER" ),
149+ new Document ()
150+ .append ("_id" , new ObjectId ())
151+ .append ("_class" , "sk.cyrilgavala.reservationsApi.model.User" )
152+ .append ("username" , "bar" )
153+ .append ("email" , "bar@foo.com" )
154+ .append ("password" , "$2a$10$b/SjlT3jexPDGci3EtmzpOnYwmjXrtzCQq5dn8rbMCgz7UZ/saylm" )
155+ .append ("role" , "USER" ),
156+ new Document ()
157+ .append ("_id" , new ObjectId ())
158+ .append ("_class" , "sk.cyrilgavala.reservationsApi.model.User" )
159+ .append ("username" , "admin" )
160+ .append ("email" , "admin@foo.com" )
161+ .append ("password" ,"$2a$10$nEDY5j731yXGnQHyM39PWurJWr1FukegmKYYarK5WOoAMmgDs6D3u" )
162+ //.append("password", "$2a$10$b/SjlT3jexPDGci3EtmzpOnYwmjXrtzCQq5dn8rbMCgz7UZ/saylm")
163+ .append ("role" , "ADMIN" )
164+ ));
165+
144166
145167 }
146168
@@ -152,8 +174,19 @@ public List<DbSpecification> getDbSpecifications() {
152174
153175 @ Override
154176 public List <AuthenticationDto > getInfoForAuthentication () {
155- //TODO might need to setup JWT headers here
156- return null ;
177+
178+ return Arrays .asList (
179+ new AuthenticationDto () {{
180+ name = "admin" ;
181+ jsonTokenPostLogin = new JsonTokenPostLoginDto (){{
182+ userId = "admin" ;
183+ endpoint ="/api/user/login" ;
184+ jsonPayload = "{\" username\" :\" admin\" , \" password\" :\" bar123\" }" ;
185+ extractTokenField ="/accessToken" ;
186+ headerPrefix = "Bearer " ;
187+ }};
188+ }}
189+ );
157190 }
158191
159192
0 commit comments