Skip to content

Commit d8a7cef

Browse files
committed
test fixes
1 parent b7d8728 commit d8a7cef

2 files changed

Lines changed: 30 additions & 16 deletions

File tree

src/test/java/edu/harvard/iq/dataverse/api/LocallyFairIT.java

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ public void testLocallyFairAccessPermissions() {
9292
String superUserToken = getSuperuserToken();
9393
String dvAlias = UtilIT.createRandomCollectionGetAlias(superUserToken);
9494

95+
Response dvResponse = UtilIT.exportDataverse(dvAlias, superUserToken);
96+
Integer dataverseId =UtilIT.getDataverseIdFromResponse(dvResponse);
97+
//dvResponse.jsonPath().getInt("data.id");
98+
9599
// Create Users
96100
String directUserToken = UtilIT.createRandomUserGetToken();
97101
String directUsername = "@" + UtilIT.getUsernameFromResponse(UtilIT.getAuthenticatedUserByToken(directUserToken));
@@ -104,8 +108,8 @@ public void testLocallyFairAccessPermissions() {
104108
// Create Group
105109
String groupAlias = "testGroup" + UtilIT.getRandomString(4);
106110
UtilIT.createGroup(dvAlias, groupAlias, "Test Group", superUserToken).then().assertThat().statusCode(Status.CREATED.getStatusCode());
107-
String groupIdentifier = "&explicit/" + dvAlias + "/" + groupAlias;
108-
UtilIT.addToGroup(dvAlias, groupIdentifier, Arrays.asList(groupUsername), superUserToken).then().assertThat().statusCode(Status.OK.getStatusCode());
111+
String groupIdentifier = "&explicit/" + dataverseId + "-" + groupAlias;
112+
UtilIT.addToGroup(dvAlias, groupAlias, Arrays.asList(groupUsername), superUserToken).then().assertThat().statusCode(Status.OK.getStatusCode());
109113

110114
// Restrict Dataverse
111115
setLocallyFairRoleAssignees(dvAlias, Arrays.asList(directUsername, groupIdentifier), superUserToken)
@@ -140,12 +144,12 @@ public void testLocallyFairAcrossAllObjectTypes() {
140144
Integer datasetId = UtilIT.getDatasetIdFromResponse(createDatasetResponse);
141145

142146
// Upload File
143-
Response uploadFileResponse = UtilIT.uploadRandomFile(datasetPid, superUserToken);
147+
Response uploadFileResponse = UtilIT.uploadFileViaNative(Integer.toString(datasetId), "scripts/search/data/binary/trees.zip", superUserToken);
144148
Integer fileId = UtilIT.getDataFileIdFromResponse(uploadFileResponse);
145149

146150
// Publish all
147-
UtilIT.publishDatasetViaNativeApi(datasetPid, "major", superUserToken).then().assertThat().statusCode(Status.OK.getStatusCode());
148151
UtilIT.publishDataverseViaNativeApi(dvAlias, superUserToken).then().assertThat().statusCode(Status.OK.getStatusCode());
152+
UtilIT.publishDatasetViaNativeApi(datasetPid, "major", superUserToken).then().assertThat().statusCode(Status.OK.getStatusCode());
149153

150154
// Restrict Dataverse
151155
String authorizedUserToken = UtilIT.createRandomUserGetToken();
@@ -163,8 +167,8 @@ public void testLocallyFairAcrossAllObjectTypes() {
163167
UtilIT.nativeGetUsingPersistentId(datasetPid, unauthorizedUserToken).then().assertThat().statusCode(Status.NOT_FOUND.getStatusCode());
164168

165169
// 3. Check Datafile
166-
UtilIT.getFileMetadata(fileId.toString(), null, authorizedUserToken).then().assertThat().statusCode(Status.OK.getStatusCode());
167-
UtilIT.getFileMetadata(fileId.toString(), null, unauthorizedUserToken).then().assertThat().statusCode(Status.NOT_FOUND.getStatusCode());
170+
UtilIT.getFileData(fileId.toString(), authorizedUserToken).then().assertThat().statusCode(Status.OK.getStatusCode());
171+
UtilIT.getFileData(fileId.toString(), unauthorizedUserToken).then().assertThat().statusCode(Status.NOT_FOUND.getStatusCode());
168172
}
169173

170174
/**
@@ -185,7 +189,7 @@ public void testLocallyFairSearchVisibility() {
185189
UtilIT.publishDataverseViaNativeApi(dvAlias, superUserToken).then().assertThat().statusCode(Status.OK.getStatusCode());
186190

187191
// Wait for index
188-
UtilIT.sleepForSearch(dvName, superUserToken, null, 1, 30);
192+
UtilIT.sleepForSearch(dvName, superUserToken, "", 1, 5);
189193

190194
// Unauthorized search
191195
String unauthorizedUserToken = UtilIT.createRandomUserGetToken();
@@ -208,17 +212,16 @@ public void testReindexingMakesDatasetLocallyFair() {
208212
String parentDv = UtilIT.createRandomCollectionGetAlias(superUserToken);
209213
Response createDatasetResponse = UtilIT.createRandomDatasetViaNativeApi(parentDv, superUserToken);
210214
String datasetPid = UtilIT.getDatasetPersistentIdFromResponse(createDatasetResponse);
211-
String datasetName = JsonPath.from(UtilIT.nativeGetUsingPersistentId(datasetPid, superUserToken).body().asString()).getString("data.latestVersion.metadataBlocks.citation.fields[0].value");
212215

213216
// Publish normally
214217
UtilIT.publishDataverseViaNativeApi(parentDv, superUserToken).then().assertThat().statusCode(Status.OK.getStatusCode());
215218
UtilIT.publishDatasetViaNativeApi(datasetPid, "major", superUserToken).then().assertThat().statusCode(Status.OK.getStatusCode());
216219

217220
// Wait for search
218-
UtilIT.sleepForSearch(datasetName, null, null, 1, 30);
221+
UtilIT.sleepForSearch("\"" + datasetPid + "\"", null, "", 1, 5);
219222

220223
// Verify publicly visible
221-
UtilIT.search("name:\"" + datasetName + "\"", null).then().assertThat().statusCode(Status.OK.getStatusCode())
224+
UtilIT.search("\"" + datasetPid + "\"", null).then().assertThat().statusCode(Status.OK.getStatusCode())
222225
.body("data.total_count", equalTo(1));
223226

224227
// Restrict parent
@@ -232,17 +235,20 @@ public void testReindexingMakesDatasetLocallyFair() {
232235
// Wait for reindex to propagate (should disappear for anonymous)
233236
boolean disappeared = false;
234237
for (int i = 0; i < 10; i++) {
235-
Response searchResp = UtilIT.search("name:\"" + datasetName + "\"", null);
238+
Response searchResp = UtilIT.search("\"" + datasetPid + "\"", null);
236239
if (searchResp.jsonPath().getInt("data.total_count") == 0) {
237240
disappeared = true;
238241
break;
239242
}
240-
try { Thread.sleep(2000); } catch (InterruptedException e) {}
243+
try {
244+
Thread.sleep(2000);
245+
} catch (InterruptedException e) {
246+
}
241247
}
242248
assertTrue(disappeared, "Dataset should have disappeared from search for anonymous users");
243249

244250
// Verify authorized user can still see it in search
245-
UtilIT.search("name:\"" + datasetName + "\"", authorizedUserToken).then().assertThat().statusCode(Status.OK.getStatusCode())
251+
UtilIT.search("\"" + datasetPid + "\"", authorizedUserToken).then().assertThat().statusCode(Status.OK.getStatusCode())
246252
.body("data.total_count", equalTo(1));
247253
}
248254

src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public class UtilIT {
5959

6060
public static final String API_TOKEN_HTTP_HEADER = "X-Dataverse-key";
6161
private static final String USERNAME_KEY = "userName";
62+
private static final String PERSISTENTUSERID_KEY = "persistentUserId";
6263
private static final String EMAIL_KEY = "email";
6364
private static final String API_TOKEN_KEY = "apiToken";
6465
private static final String BUILTIN_USER_KEY = "burrito";
@@ -309,6 +310,11 @@ static String getUsernameFromResponse(Response createUserResponse) {
309310
JsonPath createdUser = JsonPath.from(createUserResponse.body().asString());
310311
String username = createdUser.getString("data.user." + USERNAME_KEY);
311312
logger.info("Username found in create user response: " + username);
313+
//Support for when user is created via a call to /api/users/:me which doesn't return username
314+
if( username == null ) {
315+
username = createdUser.getString("data." + PERSISTENTUSERID_KEY);
316+
logger.info("Username found via persistentUserId in create user response: " + username);
317+
}
312318
return username;
313319
}
314320

@@ -1969,9 +1975,11 @@ static Response getFileWithOwners(String datafileId, String apiToken, boolean r
19691975
}
19701976

19711977
static Response getDataverseWithOwners(String alias, String apiToken, boolean returnOwners) {
1972-
return given()
1973-
.header(API_TOKEN_HTTP_HEADER, apiToken)
1974-
.get("/api/dataverses/"
1978+
RequestSpecification rs = given();
1979+
if(apiToken != null) {
1980+
rs = rs.header(API_TOKEN_HTTP_HEADER, apiToken);
1981+
}
1982+
return rs.get("/api/dataverses/"
19751983
+ alias
19761984
+ (returnOwners ? "/?returnOwners=true" : ""));
19771985
}

0 commit comments

Comments
 (0)