Skip to content

Commit 7ff2bcb

Browse files
authored
Merge branch 'develop' into suts-for-wm
2 parents 3407c51 + a906ec7 commit 7ff2bcb

61 files changed

Lines changed: 371 additions & 144 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,4 +259,17 @@ dotnet_3/em/embedded/rest/ScsDriver/generated-tests/
259259
/jdk_8_maven/em/embedded/graphql/spring-petclinic-graphql/target/
260260
/jdk_17_gradle/cs/rest/bibliothek/build/
261261
/jdk_17_gradle/em/external/rest/bibliothek/build
262-
/jdk_17_maven/cs/grpc/signal-registration/target/
262+
/jdk_17_maven/cs/grpc/signal-registration/target/
263+
/jdk_8_maven/em/embedded/grpc/ncs/target/
264+
/jdk_8_maven/em/embedded/grpc/scs/target/
265+
/jdk_8_maven/em/external/grpc/ncs/target/
266+
/jdk_8_maven/em/external/grpc/scs/target/
267+
/jdk_11_maven/em/external/rest/ind1/target/
268+
/jdk_17_gradle/build/
269+
/jdk_17_gradle/em/embedded/rest/bibliothek/build/
270+
/jdk_17_gradle/em/external/rest/bibliothek/build/
271+
/jdk_17_maven/cs/grpc/signal-registration/target/
272+
/jdk_17_maven/em/embedded/grpc/signal-registration/target/
273+
/jdk_17_maven/em/external/grpc/signal-registration/target/
274+
/jdk_17_maven/em/external/web/spring-petclinic/target/
275+

jdk_11_gradle/em/embedded/graphql/patio-api/src/main/java/em/embedded/patio/EmbeddedEvoMasterController.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
import org.evomaster.client.java.controller.api.dto.JsonTokenPostLoginDto;
99
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
1010
import org.evomaster.client.java.controller.api.dto.database.schema.DatabaseType;
11-
import org.evomaster.client.java.controller.db.DbCleaner;
12-
import org.evomaster.client.java.controller.db.SqlScriptRunner;
13-
import org.evomaster.client.java.controller.db.SqlScriptRunnerCached;
11+
import org.evomaster.client.java.sql.DbCleaner;
12+
import org.evomaster.client.java.sql.SqlScriptRunner;
13+
import org.evomaster.client.java.sql.SqlScriptRunnerCached;
1414
import org.evomaster.client.java.controller.internal.SutController;
15-
import org.evomaster.client.java.controller.internal.db.DbSpecification;
15+
import org.evomaster.client.java.sql.DbSpecification;
1616
import org.evomaster.client.java.controller.problem.GraphQlProblem;
1717
import org.evomaster.client.java.controller.problem.ProblemInfo;
1818
import org.testcontainers.containers.GenericContainer;

jdk_11_gradle/em/embedded/rest/reservations-api/src/main/java/em/embedded/reservationsapi/EmbeddedEvoMasterController.java

Lines changed: 96 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
package em.embedded.reservationsapi;
22

3+
import com.mongodb.BasicDBObject;
34
import com.mongodb.client.MongoClient;
45
import com.mongodb.client.MongoClients;
6+
import com.mongodb.client.MongoCollection;
7+
import com.mongodb.client.MongoDatabase;
8+
import org.bson.Document;
9+
import org.bson.types.ObjectId;
510
import org.evomaster.client.java.controller.EmbeddedSutController;
611
import org.evomaster.client.java.controller.InstrumentedSutStarter;
712
import org.evomaster.client.java.controller.api.dto.AuthenticationDto;
13+
import org.evomaster.client.java.controller.api.dto.JsonTokenPostLoginDto;
814
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
9-
import org.evomaster.client.java.controller.internal.db.DbSpecification;
15+
import org.evomaster.client.java.sql.DbSpecification;
1016
import org.evomaster.client.java.controller.problem.ProblemInfo;
1117
import org.evomaster.client.java.controller.problem.RestProblem;
1218
import org.springframework.boot.SpringApplication;
1319
import org.springframework.context.ConfigurableApplicationContext;
1420
import org.testcontainers.containers.GenericContainer;
1521
import sk.cyrilgavala.reservationsApi.ReservationsApi;
1622

23+
import java.util.Arrays;
24+
import java.util.Collections;
1725
import java.util.List;
1826
import java.util.Map;
1927

@@ -44,11 +52,22 @@ public static void main(String[] args) {
4452
//https://www.mongodb.com/docs/drivers/java/sync/current/compatibility/
4553
private static final String MONGODB_VERSION = "4.4";
4654

47-
private static final String MONGODB_DATABASE_NAME = "Reservations";
55+
private static final String MONGODB_DATABASE_NAME = "reservations-api";
4856

49-
private static final GenericContainer mongodbContainer = new GenericContainer("mongo:" + MONGODB_VERSION)
57+
// docker run -p 27017:27017 -e MONGODB_REPLICA_SET_MODE=primary -e ALLOW_EMPTY_PASSWORD=yes bitnami/mongodb:4.4
58+
// https://hub.docker.com/r/bitnami/mongodb
59+
// cannot use standard Mongo image, due ridiculous handling of transaction that requires a cluster...
60+
61+
private static final GenericContainer mongodbContainer = new GenericContainer("bitnami/mongodb:" + MONGODB_VERSION)
62+
.withTmpFs(Collections.singletonMap("/bitnami/mongodb", "rw"))
63+
.withEnv("MONGODB_REPLICA_SET_MODE", "primary")
64+
.withEnv("ALLOW_EMPTY_PASSWORD", "yes")
5065
.withExposedPorts(MONGODB_PORT);
5166

67+
68+
private static final String rawPassword = "bar123";
69+
private static final String hashedPassword = "$2a$10$nEDY5j731yXGnQHyM39PWurJWr1FukegmKYYarK5WOoAMmgDs6D3u";
70+
5271
private String mongoDbUrl;
5372

5473
private MongoClient mongoClient;
@@ -69,13 +88,12 @@ public String startSut() {
6988
mongoDbUrl = "mongodb://" + mongodbContainer.getContainerIpAddress() + ":" + mongodbContainer.getMappedPort(MONGODB_PORT) + "/" + MONGODB_DATABASE_NAME;
7089
mongoClient = MongoClients.create(mongoDbUrl);
7190

72-
73-
7491
ctx = SpringApplication.run(ReservationsApi.class,
7592
new String[]{"--server.port=0",
76-
"--databaseUrl="+mongoDbUrl,
77-
"--spring.data.mongodb.uri="+mongoDbUrl,
78-
"--spring.cache.type=NONE"
93+
"--databaseUrl=" + mongoDbUrl,
94+
"--spring.data.mongodb.uri=" + mongoDbUrl,
95+
"--spring.cache.type=NONE",
96+
"--app.jwt.secret=abcdef012345678901234567890123456789abcdef012345678901234567890123456789"
7997
});
8098

8199
return "http://localhost:" + getSutPort();
@@ -108,7 +126,40 @@ public String getPackagePrefixesToCover() {
108126

109127
@Override
110128
public void resetStateOfSUT() {
111-
mongoClient.getDatabase(MONGODB_DATABASE_NAME).drop();
129+
130+
MongoDatabase db = mongoClient.getDatabase(MONGODB_DATABASE_NAME);
131+
132+
//THIS WAS VERY EXPENSIVE for this API... might be due to transactions or different Docker image?
133+
//db.drop();
134+
135+
for(String name: db.listCollectionNames()){
136+
db.getCollection(name).deleteMany(new BasicDBObject());
137+
}
138+
139+
MongoCollection<Document> users = db.getCollection("users");
140+
users.insertMany(Arrays.asList(
141+
new Document()
142+
.append("_id", new ObjectId())
143+
.append("_class", "sk.cyrilgavala.reservationsApi.model.User")
144+
.append("username", "foo")
145+
.append("email", "foo@foo.com")
146+
.append("password", hashedPassword)
147+
.append("role", "USER"),
148+
new Document()
149+
.append("_id", new ObjectId())
150+
.append("_class", "sk.cyrilgavala.reservationsApi.model.User")
151+
.append("username", "bar")
152+
.append("email", "bar@foo.com")
153+
.append("password", hashedPassword)
154+
.append("role", "USER"),
155+
new Document()
156+
.append("_id", new ObjectId())
157+
.append("_class", "sk.cyrilgavala.reservationsApi.model.User")
158+
.append("username", "admin")
159+
.append("email", "admin@foo.com")
160+
.append("password", hashedPassword)
161+
.append("role", "ADMIN")
162+
));
112163
}
113164

114165
@Override
@@ -119,13 +170,41 @@ public List<DbSpecification> getDbSpecifications() {
119170

120171
@Override
121172
public List<AuthenticationDto> getInfoForAuthentication() {
122-
//TODO might need to setup JWT headers here
123-
return null;
173+
return Arrays.asList(
174+
new AuthenticationDto() {{
175+
name = "admin";
176+
jsonTokenPostLogin = new JsonTokenPostLoginDto() {{
177+
userId = "admin";
178+
endpoint = "/api/user/login";
179+
jsonPayload = "{\"username\":\"admin\", \"password\":\""+rawPassword+"\"}";
180+
extractTokenField = "/accessToken";
181+
headerPrefix = "Bearer ";
182+
}};
183+
}},
184+
new AuthenticationDto() {{
185+
name = "foo";
186+
jsonTokenPostLogin = new JsonTokenPostLoginDto() {{
187+
userId = "foo";
188+
endpoint = "/api/user/login";
189+
jsonPayload = "{\"username\":\"foo\", \"password\":\""+rawPassword+"\"}";
190+
extractTokenField = "/accessToken";
191+
headerPrefix = "Bearer ";
192+
}};
193+
}},
194+
new AuthenticationDto() {{
195+
name = "bar";
196+
jsonTokenPostLogin = new JsonTokenPostLoginDto() {{
197+
userId = "bar";
198+
endpoint = "/api/user/login";
199+
jsonPayload = "{\"username\":\"bar\", \"password\":\""+rawPassword+"\"}";
200+
extractTokenField = "/accessToken";
201+
headerPrefix = "Bearer ";
202+
}};
203+
}}
204+
);
124205
}
125206

126207

127-
128-
129208
@Override
130209
public ProblemInfo getProblemInfo() {
131210
return new RestProblem(
@@ -139,5 +218,9 @@ public SutInfoDto.OutputFormat getPreferredOutputFormat() {
139218
return SutInfoDto.OutputFormat.JAVA_JUNIT_4;
140219
}
141220

221+
@Override
222+
public Object getMongoConnection() {
223+
return mongoClient;
224+
}
142225

143226
}

jdk_11_gradle/em/external/graphql/patio-api/src/main/java/em/external/patio/ExternalEvoMasterController.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import org.evomaster.client.java.controller.api.dto.JsonTokenPostLoginDto;
77
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
88
import org.evomaster.client.java.controller.api.dto.database.schema.DatabaseType;
9-
import org.evomaster.client.java.controller.db.DbCleaner;
10-
import org.evomaster.client.java.controller.db.SqlScriptRunner;
11-
import org.evomaster.client.java.controller.db.SqlScriptRunnerCached;
12-
import org.evomaster.client.java.controller.internal.db.DbSpecification;
9+
import org.evomaster.client.java.sql.DbCleaner;
10+
import org.evomaster.client.java.sql.SqlScriptRunner;
11+
import org.evomaster.client.java.sql.SqlScriptRunnerCached;
12+
import org.evomaster.client.java.sql.DbSpecification;
1313
import org.evomaster.client.java.controller.problem.GraphQlProblem;
1414
import org.evomaster.client.java.controller.problem.ProblemInfo;
1515
import org.testcontainers.containers.GenericContainer;

jdk_11_gradle/em/external/rest/reservations-api/src/main/java/em/external/reservationsapi/ExternalEvoMasterController.java

Lines changed: 91 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
11
package em.external.reservationsapi;
22

3+
import com.mongodb.BasicDBObject;
34
import com.mongodb.client.MongoClient;
45
import com.mongodb.client.MongoClients;
6+
import com.mongodb.client.MongoCollection;
7+
import com.mongodb.client.MongoDatabase;
8+
import org.bson.Document;
9+
import org.bson.types.ObjectId;
510
import org.evomaster.client.java.controller.ExternalSutController;
611
import org.evomaster.client.java.controller.InstrumentedSutStarter;
712
import org.evomaster.client.java.controller.api.dto.AuthenticationDto;
13+
import org.evomaster.client.java.controller.api.dto.JsonTokenPostLoginDto;
814
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
9-
import org.evomaster.client.java.controller.internal.db.DbSpecification;
15+
import org.evomaster.client.java.sql.DbSpecification;
1016
import org.evomaster.client.java.controller.problem.ProblemInfo;
1117
import org.evomaster.client.java.controller.problem.RestProblem;
1218
import org.testcontainers.containers.GenericContainer;
1319

20+
import java.util.Arrays;
21+
import java.util.Collections;
1422
import java.util.List;
1523

1624
public class ExternalEvoMasterController extends ExternalSutController {
@@ -60,11 +68,17 @@ public static void main(String[] args) {
6068
//https://www.mongodb.com/docs/drivers/java/sync/current/compatibility/
6169
private static final String MONGODB_VERSION = "4.4";
6270

63-
private static final String MONGODB_DATABASE_NAME = "Reservations";
71+
private static final String MONGODB_DATABASE_NAME = "reservations-api";
6472

65-
private static final GenericContainer mongodbContainer = new GenericContainer("mongo:" + MONGODB_VERSION)
73+
private static final GenericContainer mongodbContainer = new GenericContainer("bitnami/mongodb:" + MONGODB_VERSION)
74+
.withTmpFs(Collections.singletonMap("/bitnami/mongodb", "rw"))
75+
.withEnv("MONGODB_REPLICA_SET_MODE", "primary")
76+
.withEnv("ALLOW_EMPTY_PASSWORD", "yes")
6677
.withExposedPorts(MONGODB_PORT);
6778

79+
private static final String rawPassword = "bar123";
80+
private static final String hashedPassword = "$2a$10$nEDY5j731yXGnQHyM39PWurJWr1FukegmKYYarK5WOoAMmgDs6D3u";
81+
6882
private String mongoDbUrl;
6983

7084
private MongoClient mongoClient;
@@ -101,7 +115,8 @@ public String[] getInputParameters() {
101115
return new String[]{
102116
"--server.port=" + sutPort,
103117
"--databaseUrl="+mongoDbUrl,
104-
"--spring.data.mongodb.uri="+mongoDbUrl
118+
"--spring.data.mongodb.uri="+mongoDbUrl,
119+
"--app.jwt.secret=abcdef012345678901234567890123456789abcdef012345678901234567890123456789"
105120
};
106121
}
107122

@@ -142,7 +157,40 @@ public void postStart() {
142157

143158
@Override
144159
public void resetStateOfSUT() {
145-
mongoClient.getDatabase(MONGODB_DATABASE_NAME).drop();
160+
MongoDatabase db = mongoClient.getDatabase(MONGODB_DATABASE_NAME);
161+
162+
//THIS WAS VERY EXPENSIVE
163+
//db.drop();
164+
165+
for(String name: db.listCollectionNames()){
166+
db.getCollection(name).deleteMany(new BasicDBObject());
167+
}
168+
169+
MongoCollection<Document> users = db.getCollection("users");
170+
users.insertMany(Arrays.asList(
171+
new Document()
172+
.append("_id", new ObjectId())
173+
.append("_class", "sk.cyrilgavala.reservationsApi.model.User")
174+
.append("username", "foo")
175+
.append("email", "foo@foo.com")
176+
.append("password", hashedPassword)
177+
.append("role", "USER"),
178+
new Document()
179+
.append("_id", new ObjectId())
180+
.append("_class", "sk.cyrilgavala.reservationsApi.model.User")
181+
.append("username", "bar")
182+
.append("email", "bar@foo.com")
183+
.append("password", hashedPassword)
184+
.append("role", "USER"),
185+
new Document()
186+
.append("_id", new ObjectId())
187+
.append("_class", "sk.cyrilgavala.reservationsApi.model.User")
188+
.append("username", "admin")
189+
.append("email", "admin@foo.com")
190+
.append("password", hashedPassword)
191+
.append("role", "ADMIN")
192+
));
193+
146194
}
147195

148196
@Override
@@ -178,11 +226,48 @@ public SutInfoDto.OutputFormat getPreferredOutputFormat() {
178226

179227
@Override
180228
public List<AuthenticationDto> getInfoForAuthentication() {
181-
return null;
229+
230+
return Arrays.asList(
231+
new AuthenticationDto() {{
232+
name = "admin";
233+
jsonTokenPostLogin = new JsonTokenPostLoginDto() {{
234+
userId = "admin";
235+
endpoint = "/api/user/login";
236+
jsonPayload = "{\"username\":\"admin\", \"password\":\""+rawPassword+"\"}";
237+
extractTokenField = "/accessToken";
238+
headerPrefix = "Bearer ";
239+
}};
240+
}},
241+
new AuthenticationDto() {{
242+
name = "foo";
243+
jsonTokenPostLogin = new JsonTokenPostLoginDto() {{
244+
userId = "foo";
245+
endpoint = "/api/user/login";
246+
jsonPayload = "{\"username\":\"foo\", \"password\":\""+rawPassword+"\"}";
247+
extractTokenField = "/accessToken";
248+
headerPrefix = "Bearer ";
249+
}};
250+
}},
251+
new AuthenticationDto() {{
252+
name = "bar";
253+
jsonTokenPostLogin = new JsonTokenPostLoginDto() {{
254+
userId = "bar";
255+
endpoint = "/api/user/login";
256+
jsonPayload = "{\"username\":\"bar\", \"password\":\""+rawPassword+"\"}";
257+
extractTokenField = "/accessToken";
258+
headerPrefix = "Bearer ";
259+
}};
260+
}}
261+
);
182262
}
183263

184264
@Override
185265
public List<DbSpecification> getDbSpecifications() {
186266
return null;
187267
}
268+
269+
@Override
270+
public Object getMongoConnection() {
271+
return mongoClient;
272+
}
188273
}

jdk_11_maven/em/embedded/graphql/timbuctoo/src/main/java/em/embedded/nl/knaw/huygens/EmbeddedEvoMasterController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import org.evomaster.client.java.controller.InstrumentedSutStarter;
1111
import org.evomaster.client.java.controller.api.dto.AuthenticationDto;
1212
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
13-
import org.evomaster.client.java.controller.internal.db.DbSpecification;
13+
import org.evomaster.client.java.sql.DbSpecification;
1414
import org.evomaster.client.java.controller.problem.GraphQlProblem;
1515
import org.evomaster.client.java.controller.problem.ProblemInfo;
1616
import org.testcontainers.containers.GenericContainer;

jdk_11_maven/em/embedded/rest/cwa-verification/src/main/java/em/embedded/app/coronawarn/verification/EmbeddedEvoMasterController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import org.evomaster.client.java.controller.api.dto.AuthenticationDto;
88
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
99
import org.evomaster.client.java.controller.api.dto.database.schema.DatabaseType;
10-
import org.evomaster.client.java.controller.db.DbCleaner;
11-
import org.evomaster.client.java.controller.internal.db.DbSpecification;
10+
import org.evomaster.client.java.sql.DbCleaner;
11+
import org.evomaster.client.java.sql.DbSpecification;
1212
import org.evomaster.client.java.controller.problem.ProblemInfo;
1313
import org.evomaster.client.java.controller.problem.RestProblem;
1414
import org.springframework.boot.SpringApplication;

0 commit comments

Comments
 (0)