|
1 | 1 | // SPDX-License-Identifier: MIT
|
2 | 2 | package com.mercedesbenz.sechub.integrationtest.scenario3;
|
3 | 3 |
|
4 |
| -import static com.mercedesbenz.sechub.integrationtest.api.TestAPI.*; |
5 |
| -import static com.mercedesbenz.sechub.integrationtest.internal.IntegrationTestDefaultProfiles.*; |
6 |
| -import static com.mercedesbenz.sechub.integrationtest.scenario3.Scenario3.*; |
| 4 | +import static com.mercedesbenz.sechub.integrationtest.api.TestAPI.ANONYMOUS; |
| 5 | +import static com.mercedesbenz.sechub.integrationtest.api.TestAPI.SUPER_ADMIN; |
| 6 | +import static com.mercedesbenz.sechub.integrationtest.api.TestAPI.as; |
| 7 | +import static com.mercedesbenz.sechub.integrationtest.api.TestAPI.assertUser; |
| 8 | +import static com.mercedesbenz.sechub.integrationtest.api.TestAPI.expectHttpFailure; |
| 9 | +import static com.mercedesbenz.sechub.integrationtest.api.TestAPI.getLinkToFetchNewAPITokenAfterSignupAccepted; |
| 10 | +import static com.mercedesbenz.sechub.integrationtest.api.TestAPI.udpdateAPITokenByOneTimeTokenLink; |
| 11 | +import static com.mercedesbenz.sechub.integrationtest.internal.IntegrationTestDefaultProfiles.PROFILE_1; |
| 12 | +import static com.mercedesbenz.sechub.integrationtest.scenario3.Scenario3.PROJECT_1; |
| 13 | +import static com.mercedesbenz.sechub.integrationtest.scenario3.Scenario3.PROJECT_2; |
| 14 | +import static com.mercedesbenz.sechub.integrationtest.scenario3.Scenario3.USER_1; |
| 15 | +import static com.mercedesbenz.sechub.integrationtest.scenario3.Scenario3.USER_2; |
| 16 | +import static com.mercedesbenz.sechub.integrationtest.scenario3.Scenario3.USER_3; |
7 | 17 | import static org.assertj.core.api.Assertions.assertThat;
|
| 18 | +import static org.junit.Assert.assertFalse; |
8 | 19 |
|
9 | 20 | import java.util.List;
|
10 | 21 | import java.util.Set;
|
|
14 | 25 | import org.springframework.http.HttpStatus;
|
15 | 26 |
|
16 | 27 | import com.mercedesbenz.sechub.domain.administration.project.ProjectData;
|
| 28 | +import com.mercedesbenz.sechub.domain.administration.project.ProjectUserData; |
| 29 | +import com.mercedesbenz.sechub.integrationtest.api.FixedTestUser; |
17 | 30 | import com.mercedesbenz.sechub.integrationtest.api.IntegrationTestExtension;
|
| 31 | +import com.mercedesbenz.sechub.integrationtest.api.TestProject; |
| 32 | +import com.mercedesbenz.sechub.integrationtest.api.TestUser; |
18 | 33 | import com.mercedesbenz.sechub.integrationtest.api.TextSearchMode;
|
19 | 34 | import com.mercedesbenz.sechub.integrationtest.api.WithTestScenario;
|
20 | 35 |
|
@@ -93,28 +108,86 @@ void change_project_ownership_by_admin_and_owners() {
|
93 | 108 | unassignUserFromProject(USER_1, PROJECT_2);
|
94 | 109 |
|
95 | 110 | assertUser(USER_1).
|
96 |
| - isOwnerOf(PROJECT_2). // lost ownership |
| 111 | + isOwnerOf(PROJECT_2). |
97 | 112 | isNotAssignedToProject(PROJECT_2). // still assigned after ownership loss
|
98 | 113 | hasOwnerRole(); // has still owner role
|
99 | 114 |
|
100 |
| - /* test 4 - project details contain profile IDs */ |
| 115 | + /* test 4 - users can get information about assigned projects */ |
| 116 | + assertProjectDataAsExpectedAfterAssignments(); |
| 117 | + } |
| 118 | + /* @formatter:on */ |
| 119 | + |
| 120 | + private void assertProjectDataAsExpectedAfterAssignments() { |
| 121 | + TestProject project = PROJECT_1; |
| 122 | + String expectedProfileId = PROFILE_1.id; |
| 123 | + |
| 124 | + TestUser user = USER_2; |
| 125 | + TestUser owner = USER_3; |
| 126 | + TestUser tmpAdmin = createTemporaryAdminForAndAssignToProject(project); |
| 127 | + |
| 128 | + ProjectUserData userData = new ProjectUserData(); |
| 129 | + userData.setUserId(user.getUserId()); |
| 130 | + userData.setEmailAddress(user.getEmail()); |
| 131 | + |
| 132 | + ProjectUserData ownerData = new ProjectUserData(); |
| 133 | + ownerData.setUserId(owner.getUserId()); |
| 134 | + ownerData.setEmailAddress(owner.getEmail()); |
| 135 | + |
| 136 | + ProjectUserData adminData = new ProjectUserData(); |
| 137 | + adminData.setUserId(tmpAdmin.getUserId()); |
| 138 | + adminData.setEmailAddress(tmpAdmin.getEmail()); |
| 139 | + |
| 140 | + ProjectUserData user1Data = new ProjectUserData(); |
| 141 | + user1Data.setUserId(USER_1.getUserId()); |
| 142 | + user1Data.setEmailAddress(USER_1.getEmail()); |
101 | 143 |
|
102 |
| - // normal user can view profiles of assigned projects |
103 |
| - List<ProjectData> projectDetailsOfnormalUser = as(USER_2).getAssignedProjectDataList(); |
104 |
| - assertThat(projectDetailsOfnormalUser).hasSize(1); |
105 |
| - Set<String> userAssignedProfileIds = projectDetailsOfnormalUser.get(0).getAssignedProfileIds(); |
106 |
| - assertThat(userAssignedProfileIds).containsExactly(PROFILE_1.id); |
| 144 | + // normal user, does not see users of the project |
| 145 | + assertProjectData(user, project, expectedProfileId, ownerData); |
107 | 146 |
|
108 |
| - // owner can view profiles of assigned projects |
109 |
| - List<ProjectData> projectDetailsOfOwner = as(USER_1).getAssignedProjectDataList(); |
110 |
| - assertThat(projectDetailsOfOwner).hasSize(1); |
111 |
| - Set<String> ownerAssignedProfileIds = projectDetailsOfOwner.get(0).getAssignedProfileIds(); |
112 |
| - assertThat(ownerAssignedProfileIds).containsExactly(PROFILE_1.id); |
| 147 | + // owner, does see users of the project |
| 148 | + assertProjectData(owner, project, expectedProfileId, ownerData, userData, ownerData, adminData, user1Data); |
113 | 149 |
|
114 |
| - // admin can view profiles of assigned projects |
115 |
| - assertThat(as(SUPER_ADMIN).getAssignedProjectDataList()).isEmpty(); |
| 150 | + // admin, does see users of the project |
| 151 | + assertProjectData(tmpAdmin, project, expectedProfileId, ownerData, userData, ownerData, adminData, user1Data); |
116 | 152 |
|
| 153 | + // clean up |
| 154 | + as(SUPER_ADMIN).deleteUser(tmpAdmin); |
| 155 | + } |
| 156 | + |
| 157 | + private void assertProjectData(TestUser asUser, TestProject project, String expectedProfileId, ProjectUserData expectedOwner, |
| 158 | + ProjectUserData... expectedAssignedUsers) { |
| 159 | + List<ProjectData> projectDetails = as(asUser).getAssignedProjectDataList(); |
| 160 | + assertThat(projectDetails).hasSize(1); |
| 161 | + |
| 162 | + ProjectData projectData = projectDetails.get(0); |
| 163 | + assertThat(projectData.getProjectId()).isEqualTo(project.getProjectId()); |
| 164 | + assertThat(projectData.getOwner()).isEqualTo(expectedOwner); |
| 165 | + |
| 166 | + List<ProjectUserData> assignedUsers = projectData.getAssignedUsers(); |
| 167 | + if (expectedAssignedUsers == null || expectedAssignedUsers.length == 0) { |
| 168 | + assertThat(assignedUsers).isNull(); |
| 169 | + } else { |
| 170 | + assertThat(assignedUsers).containsOnly(expectedAssignedUsers); |
| 171 | + } |
| 172 | + |
| 173 | + Set<String> assignedProfileIds = projectData.getAssignedProfileIds(); |
| 174 | + assertThat(assignedProfileIds).containsExactly(expectedProfileId); |
| 175 | + } |
| 176 | + |
| 177 | + private TestUser createTemporaryAdminForAndAssignToProject(TestProject project) { |
| 178 | + String adminId = "admin_" + System.currentTimeMillis(); |
| 179 | + TestUser tmpAdmin = new FixedTestUser(adminId, adminId + "-pwd"); |
| 180 | + as(ANONYMOUS).signUpAs(tmpAdmin); |
| 181 | + as(SUPER_ADMIN).acceptSignup(tmpAdmin); |
| 182 | + assertUser(tmpAdmin).doesExist(); |
| 183 | + |
| 184 | + /* execute receive of new api token */ |
| 185 | + String link = getLinkToFetchNewAPITokenAfterSignupAccepted(tmpAdmin); |
| 186 | + assertFalse(link.isEmpty()); |
| 187 | + udpdateAPITokenByOneTimeTokenLink(tmpAdmin, link); |
| 188 | + as(SUPER_ADMIN).grantSuperAdminRightsTo(tmpAdmin); |
| 189 | + as(SUPER_ADMIN).assignUserToProject(tmpAdmin, project); |
| 190 | + return tmpAdmin; |
117 | 191 | }
|
118 |
| - /* @formatter:on */ |
119 | 192 |
|
120 | 193 | }
|
0 commit comments