|
29 | 29 | import com.descope.model.mgmt.ManagementServices; |
30 | 30 | import com.descope.model.user.request.BatchUserPasswordHashed; |
31 | 31 | import com.descope.model.user.request.BatchUserPasswordPbkdf2; |
| 32 | +import com.descope.model.user.request.BatchUserPasswordSha; |
32 | 33 | import com.descope.model.user.request.BatchUserRequest; |
33 | 34 | import com.descope.model.user.request.PatchUserRequest; |
34 | 35 | import com.descope.model.user.request.RolesList; |
|
54 | 55 | import com.descope.sdk.mgmt.RolesService; |
55 | 56 | import com.descope.sdk.mgmt.TenantService; |
56 | 57 | import com.descope.sdk.mgmt.UserService; |
| 58 | +import java.security.MessageDigest; |
57 | 59 | import java.security.SecureRandom; |
58 | 60 | import java.security.spec.KeySpec; |
59 | 61 | import java.time.Duration; |
@@ -1162,6 +1164,39 @@ void testFunctionalBatch() throws Exception { |
1162 | 1164 | userService.delete(loginId); |
1163 | 1165 | } |
1164 | 1166 |
|
| 1167 | + @RetryingTest(value = 3, suspendForMs = 30000, onExceptions = RateLimitExceededException.class) |
| 1168 | + void testFunctionalBatchWithShaPassword() throws Exception { |
| 1169 | + String loginId = TestUtils.getRandomName("u-"); |
| 1170 | + String email = TestUtils.getRandomName("test-") + "@descope.com"; |
| 1171 | + String phone = "+1-555-555-5555"; |
| 1172 | + String name = "Sha User"; |
| 1173 | + String password = "This is a sha test"; |
| 1174 | + |
| 1175 | + MessageDigest digest = MessageDigest.getInstance("SHA-256"); |
| 1176 | + byte[] hashBytes = digest.digest(password.getBytes("UTF-8")); |
| 1177 | + StringBuilder hexHash = new StringBuilder(); |
| 1178 | + for (byte b : hashBytes) { |
| 1179 | + hexHash.append(String.format("%02x", b)); |
| 1180 | + } |
| 1181 | + |
| 1182 | + UsersBatchResponse res = userService.createBatch(Arrays.asList(BatchUserRequest.builder().loginId(loginId) |
| 1183 | + .email(email).verifiedEmail(true).phone(phone).verifiedPhone(true).displayName(name) |
| 1184 | + .hashedPassword(BatchUserPasswordHashed.builder() |
| 1185 | + .sha(BatchUserPasswordSha.builder().type("sha256").hash(hexHash.toString()).build()) |
| 1186 | + .build()) |
| 1187 | + .build())); |
| 1188 | + assertNotNull(res); |
| 1189 | + assertNotNull(res.getCreatedUsers()); |
| 1190 | + assertEquals(1, res.getCreatedUsers().size()); |
| 1191 | + assertTrue(res.getFailedUsers() == null || res.getFailedUsers().isEmpty()); |
| 1192 | + AuthenticationInfo authInfo = passwordService.signIn(loginId, password); |
| 1193 | + assertNotNull(authInfo); |
| 1194 | + assertNotNull(authInfo.getUser()); |
| 1195 | + assertEquals(email, authInfo.getUser().getEmail()); |
| 1196 | + assertEquals(name, authInfo.getUser().getName()); |
| 1197 | + userService.delete(loginId); |
| 1198 | + } |
| 1199 | + |
1165 | 1200 | @RetryingTest(value = 3, suspendForMs = 30000, onExceptions = RateLimitExceededException.class) |
1166 | 1201 | void testFunctionalSetActivePassword() { |
1167 | 1202 | String loginId = TestUtils.getRandomName("u-"); |
|
0 commit comments