|
3 | 3 | import access.AbstractTest; |
4 | 4 | import access.AccessCookieFilter; |
5 | 5 | import access.UserInfoEnhancer; |
6 | | -import access.model.*; |
| 6 | +import access.model.Authority; |
| 7 | +import access.model.EntityType; |
| 8 | +import access.model.Environment; |
| 9 | +import access.model.Institution; |
| 10 | +import access.model.Organization; |
| 11 | +import access.model.OrganizationMembership; |
| 12 | +import access.model.User; |
7 | 13 | import io.restassured.common.mapper.TypeRef; |
8 | 14 | import io.restassured.http.ContentType; |
9 | | -import io.restassured.http.Headers; |
10 | | -import lombok.SneakyThrows; |
11 | 15 | import org.junit.jupiter.api.Test; |
12 | 16 | import org.springframework.data.domain.Sort; |
13 | 17 | import org.springframework.http.HttpStatus; |
14 | 18 |
|
15 | | -import java.lang.reflect.Type; |
16 | 19 | import java.util.List; |
17 | 20 | import java.util.Map; |
18 | 21 | import java.util.Optional; |
19 | 22 |
|
20 | | -import static com.github.tomakehurst.wiremock.client.WireMock.*; |
21 | 23 | import static io.restassured.RestAssured.given; |
22 | 24 | import static org.junit.jupiter.api.Assertions.*; |
23 | 25 |
|
@@ -112,6 +114,61 @@ void meManagerWithMockLogin() { |
112 | 114 | assertEquals("ShareLogics", organization.getName()); |
113 | 115 | } |
114 | 116 |
|
| 117 | + @Test |
| 118 | + void swichOrganizationManagerWithMockLogin() { |
| 119 | + AccessCookieFilter accessCookieFilter = mockLoginFlow(MANAGE_SUB); |
| 120 | + |
| 121 | + super.stubForGetProvider(EntityType.saml20_idp, "7", Environment.PROD); |
| 122 | + super.stubForGetChangeRequests(getChangeRequests()); |
| 123 | + |
| 124 | + User user = given() |
| 125 | + .when() |
| 126 | + .filter(accessCookieFilter.cookieFilter()) |
| 127 | + .accept(ContentType.JSON) |
| 128 | + .contentType(ContentType.JSON) |
| 129 | + .pathParam("organizationId", seedIdentifiers.get(SHARE_LOGICS)) |
| 130 | + .get("/api/v1/users/organization-switch/{organizationId}") |
| 131 | + .as(User.class); |
| 132 | + assertEquals(1, user.getOrganizationMemberships().size()); |
| 133 | + |
| 134 | + Organization organization = user.getOrganizationMemberships().stream().findFirst().get().getOrganization(); |
| 135 | + assertEquals("ShareLogics", organization.getName()); |
| 136 | + |
| 137 | + assertEquals("7", user.getIdentityProvider().get("id")); |
| 138 | + } |
| 139 | + |
| 140 | + @Test |
| 141 | + void swichOrganizationGuestWithoutIdP() { |
| 142 | + AccessCookieFilter accessCookieFilter = mockLoginFlow(GUEST_SUB); |
| 143 | + |
| 144 | + User user = given() |
| 145 | + .when() |
| 146 | + .filter(accessCookieFilter.cookieFilter()) |
| 147 | + .accept(ContentType.JSON) |
| 148 | + .contentType(ContentType.JSON) |
| 149 | + .pathParam("organizationId", seedIdentifiers.get(FAR_WIND)) |
| 150 | + .get("/api/v1/users/organization-switch/{organizationId}") |
| 151 | + .as(User.class); |
| 152 | + assertEquals(1, user.getOrganizationMemberships().size()); |
| 153 | + |
| 154 | + assertNull(user.getIdentityProvider()); |
| 155 | + } |
| 156 | + |
| 157 | + @Test |
| 158 | + void swichOrganizationGuestNoAccess() { |
| 159 | + AccessCookieFilter accessCookieFilter = mockLoginFlow(GUEST_SUB); |
| 160 | + |
| 161 | + given() |
| 162 | + .when() |
| 163 | + .filter(accessCookieFilter.cookieFilter()) |
| 164 | + .accept(ContentType.JSON) |
| 165 | + .contentType(ContentType.JSON) |
| 166 | + .pathParam("organizationId", -1L) |
| 167 | + .get("/api/v1/users/organization-switch/{organizationId}") |
| 168 | + .then() |
| 169 | + .statusCode(HttpStatus.FORBIDDEN.value()); |
| 170 | + } |
| 171 | + |
115 | 172 | @Test |
116 | 173 | void meMissingAttributes() throws Exception { |
117 | 174 | this.stubForStats(); |
|
0 commit comments