|
1 | 1 |
|
2 | 2 | package edu.harvard.iq.dataverse.api; |
3 | 3 |
|
| 4 | +import edu.harvard.iq.dataverse.authorization.DataverseRole; |
4 | 5 | import io.restassured.RestAssured; |
5 | 6 | import io.restassured.path.json.JsonPath; |
6 | 7 | import io.restassured.response.Response; |
7 | | -import static jakarta.ws.rs.core.Response.Status.FORBIDDEN; |
| 8 | + |
8 | 9 | import java.util.logging.Logger; |
| 10 | + |
| 11 | +import static jakarta.ws.rs.core.Response.Status.*; |
9 | 12 | import static org.hamcrest.CoreMatchers.equalTo; |
10 | 13 | import static org.junit.jupiter.api.Assertions.assertEquals; |
11 | 14 |
|
12 | | -import org.junit.jupiter.api.Assertions; |
13 | 15 | import org.junit.jupiter.api.BeforeAll; |
14 | 16 | import org.junit.jupiter.api.Test; |
15 | 17 |
|
@@ -108,5 +110,48 @@ public void testCreateDeleteRoles() { |
108 | 110 | assertEquals("OK", status); |
109 | 111 |
|
110 | 112 | } |
111 | | - |
| 113 | + |
| 114 | + @Test |
| 115 | + public void testGetUserSelectableRoles() { |
| 116 | + Response createAdminUser = UtilIT.createRandomUser(); |
| 117 | + |
| 118 | + String adminUsername = UtilIT.getUsernameFromResponse(createAdminUser); |
| 119 | + String adminApiToken = UtilIT.getApiTokenFromResponse(createAdminUser); |
| 120 | + UtilIT.makeSuperUser(adminUsername); |
| 121 | + |
| 122 | + Response createUser = UtilIT.createRandomUser(); |
| 123 | + |
| 124 | + String username = UtilIT.getUsernameFromResponse(createUser); |
| 125 | + String apiToken = UtilIT.getApiTokenFromResponse(createUser); |
| 126 | + |
| 127 | + // Non-superuser with no assigned roles: return all roles as fallback. |
| 128 | + |
| 129 | + Response getUserSelectableRolesResponse = UtilIT.getUserSelectableRoles(apiToken); |
| 130 | + getUserSelectableRolesResponse.prettyPrint(); |
| 131 | + |
| 132 | + getUserSelectableRolesResponse.then().assertThat() |
| 133 | + .statusCode(OK.getStatusCode()) |
| 134 | + .body("data.size()", equalTo(8)); |
| 135 | + |
| 136 | + // Non-superuser with assigned role: return assigned role. |
| 137 | + |
| 138 | + Response createDataverseResponse = UtilIT.createRandomDataverse(adminApiToken); |
| 139 | + createDataverseResponse.then().assertThat() |
| 140 | + .statusCode(CREATED.getStatusCode()); |
| 141 | + |
| 142 | + String dataverseAlias = UtilIT.getAliasFromResponse(createDataverseResponse); |
| 143 | + |
| 144 | + Response grantUserAddDataset = UtilIT.grantRoleOnDataverse(dataverseAlias, DataverseRole.DS_CONTRIBUTOR, "@" + username, adminApiToken); |
| 145 | + |
| 146 | + grantUserAddDataset.then().assertThat() |
| 147 | + .statusCode(OK.getStatusCode()) |
| 148 | + .body("data.assignee", equalTo("@" + username)) |
| 149 | + .body("data._roleAlias", equalTo("dsContributor")); |
| 150 | + |
| 151 | + getUserSelectableRolesResponse = UtilIT.getUserSelectableRoles(apiToken); |
| 152 | + getUserSelectableRolesResponse.then().assertThat() |
| 153 | + .statusCode(OK.getStatusCode()) |
| 154 | + .body("data.size()", equalTo(1)) |
| 155 | + .body("data[0].alias", equalTo(DataverseRole.DS_CONTRIBUTOR)); |
| 156 | + } |
112 | 157 | } |
0 commit comments