|
|
|
@ -53,188 +53,75 @@ public class UserEdgeTest extends AbstractEdgeTest { |
|
|
|
private BCryptPasswordEncoder passwordEncoder; |
|
|
|
|
|
|
|
private static final String DEFAULT_FIRST_NAME = "Boris"; |
|
|
|
private static final String DEFAULT_LAST_NAME = "Johnson"; |
|
|
|
private static final String UPDATED_LAST_NAME = "Borisov"; |
|
|
|
private static final String DEFAULT_TENANT_ADMIN_EMAIL = "tenantAdmin@thingsboard.org"; |
|
|
|
private static final String DEFAULT_CUSTOMER_USER_EMAIL = "customerUser@thingsboard.org"; |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testCreateUpdateDeleteTenantUser() throws Exception { |
|
|
|
// create user
|
|
|
|
edgeImitator.expectMessageAmount(3); |
|
|
|
User newTenantAdmin = buildUser(Authority.TENANT_ADMIN, null, "tenantAdmin@thingsboard.org", DEFAULT_FIRST_NAME, "Johnson"); |
|
|
|
User savedTenantAdmin = createUser(newTenantAdmin, "tenant"); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); // wait 3 messages - x1 user update msg and x2 user credentials update msgs (create + authenticate user)
|
|
|
|
Assert.assertEquals(1, edgeImitator.findAllMessagesByType(UserUpdateMsg.class).size()); |
|
|
|
Assert.assertEquals(2, edgeImitator.findAllMessagesByType(UserCredentialsUpdateMsg.class).size()); |
|
|
|
|
|
|
|
UserUpdateMsg userUpdateMsg = getLatestUserUpdateMsg(); |
|
|
|
User userMsg = JacksonUtil.fromString(userUpdateMsg.getEntity(), User.class, true); |
|
|
|
Assert.assertNotNull(userMsg); |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, userUpdateMsg.getMsgType()); |
|
|
|
User newTenantAdmin = buildUser(Authority.TENANT_ADMIN, null); |
|
|
|
User savedTenantAdmin = createAndVerifyUserOnEdge(newTenantAdmin); |
|
|
|
|
|
|
|
// update user
|
|
|
|
edgeImitator.expectMessageAmount(2); |
|
|
|
savedTenantAdmin.setLastName(UPDATED_LAST_NAME); |
|
|
|
savedTenantAdmin = doPost("/api/user", savedTenantAdmin, User.class); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
|
|
|
|
userUpdateMsg = getLatestUserUpdateMsg(); |
|
|
|
User userFromMsg = JacksonUtil.fromString(userUpdateMsg.getEntity(), User.class, true); |
|
|
|
Assert.assertNotNull(userFromMsg); |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, userUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(UPDATED_LAST_NAME, userFromMsg.getLastName()); |
|
|
|
updateAndVerifyUserLastName(savedTenantAdmin); |
|
|
|
|
|
|
|
// update user credentials
|
|
|
|
login(savedTenantAdmin.getEmail(), "tenant"); |
|
|
|
|
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
ChangePasswordRequest changePasswordRequest = new ChangePasswordRequest(); |
|
|
|
changePasswordRequest.setCurrentPassword("tenant"); |
|
|
|
changePasswordRequest.setNewPassword("newTenant"); |
|
|
|
doPost("/api/auth/changePassword", changePasswordRequest); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
|
|
|
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof UserCredentialsUpdateMsg); |
|
|
|
UserCredentialsUpdateMsg userCredentialsUpdateMsg = (UserCredentialsUpdateMsg) latestMessage; |
|
|
|
UserCredentials userCredentialsMsg = JacksonUtil.fromString(userCredentialsUpdateMsg.getEntity(), UserCredentials.class, true); |
|
|
|
Assert.assertNotNull(userCredentialsMsg); |
|
|
|
Assert.assertEquals(savedTenantAdmin.getId(), userCredentialsMsg.getUserId()); |
|
|
|
Assert.assertTrue(passwordEncoder.matches(changePasswordRequest.getNewPassword(), userCredentialsMsg.getPassword())); |
|
|
|
|
|
|
|
updateAndVerifyUserCredentials(savedTenantAdmin); |
|
|
|
loginTenantAdmin(); |
|
|
|
|
|
|
|
// delete user
|
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
doDelete("/api/user/" + savedTenantAdmin.getUuidId()) |
|
|
|
.andExpect(status().isOk()); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
|
|
|
|
latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof UserUpdateMsg); |
|
|
|
userUpdateMsg = (UserUpdateMsg) latestMessage; |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, userUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(savedTenantAdmin.getUuidId().getMostSignificantBits(), userUpdateMsg.getIdMSB()); |
|
|
|
Assert.assertEquals(savedTenantAdmin.getUuidId().getLeastSignificantBits(), userUpdateMsg.getIdLSB()); |
|
|
|
deleteAndVerifyUser(savedTenantAdmin); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testCreateUpdateDeleteCustomerUser() throws Exception { |
|
|
|
// create customer
|
|
|
|
Customer savedCustomer = createAndAssignCustomerToEdge("Edge Customer"); |
|
|
|
Customer savedCustomer = createAndAssignCustomerToEdge(); |
|
|
|
|
|
|
|
// create user
|
|
|
|
edgeImitator.expectMessageAmount(3); |
|
|
|
User customerUser = buildUser(Authority.CUSTOMER_USER, savedCustomer.getId(), "customerUser@thingsboard.org", "John", "Edwards"); |
|
|
|
User savedCustomerUser = createUser(customerUser, "customer"); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); // wait 3 messages - x1 user update msg and x2 user credentials update msgs (create + authenticate user)
|
|
|
|
Assert.assertEquals(1, edgeImitator.findAllMessagesByType(UserUpdateMsg.class).size()); |
|
|
|
Assert.assertEquals(2, edgeImitator.findAllMessagesByType(UserCredentialsUpdateMsg.class).size()); |
|
|
|
Optional<UserUpdateMsg> userUpdateMsgOpt = edgeImitator.findMessageByType(UserUpdateMsg.class); |
|
|
|
Assert.assertTrue(userUpdateMsgOpt.isPresent()); |
|
|
|
UserUpdateMsg userUpdateMsg = userUpdateMsgOpt.get(); |
|
|
|
User userMsg = JacksonUtil.fromString(userUpdateMsg.getEntity(), User.class, true); |
|
|
|
Assert.assertNotNull(userMsg); |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, userUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(savedCustomerUser.getId(), userMsg.getId()); |
|
|
|
Assert.assertEquals(savedCustomerUser.getCustomerId(), userMsg.getCustomerId()); |
|
|
|
Assert.assertEquals(savedCustomerUser.getAuthority(), userMsg.getAuthority()); |
|
|
|
Assert.assertEquals(savedCustomerUser.getEmail(), userMsg.getEmail()); |
|
|
|
Assert.assertEquals(savedCustomerUser.getFirstName(), userMsg.getFirstName()); |
|
|
|
Assert.assertEquals(savedCustomerUser.getLastName(), userMsg.getLastName()); |
|
|
|
User customerUser = buildUser(Authority.CUSTOMER_USER, savedCustomer.getId()); |
|
|
|
User savedCustomerUser = createAndVerifyUserOnEdge(customerUser); |
|
|
|
|
|
|
|
// update user
|
|
|
|
edgeImitator.expectMessageAmount(2); |
|
|
|
savedCustomerUser.setLastName("Addams"); |
|
|
|
savedCustomerUser = doPost("/api/user", savedCustomerUser, User.class); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
userUpdateMsgOpt = edgeImitator.findMessageByType(UserUpdateMsg.class); |
|
|
|
Assert.assertTrue(userUpdateMsgOpt.isPresent()); |
|
|
|
userUpdateMsg = userUpdateMsgOpt.get(); |
|
|
|
userMsg = JacksonUtil.fromString(userUpdateMsg.getEntity(), User.class, true); |
|
|
|
Assert.assertNotNull(userMsg); |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, userUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(savedCustomerUser.getLastName(), userMsg.getLastName()); |
|
|
|
updateAndVerifyUserLastName(savedCustomerUser); |
|
|
|
|
|
|
|
// update user credentials
|
|
|
|
login(savedCustomerUser.getEmail(), "customer"); |
|
|
|
|
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
ChangePasswordRequest changePasswordRequest = new ChangePasswordRequest(); |
|
|
|
changePasswordRequest.setCurrentPassword("customer"); |
|
|
|
changePasswordRequest.setNewPassword("newCustomer"); |
|
|
|
doPost("/api/auth/changePassword", changePasswordRequest); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof UserCredentialsUpdateMsg); |
|
|
|
UserCredentialsUpdateMsg userCredentialsUpdateMsg = (UserCredentialsUpdateMsg) latestMessage; |
|
|
|
UserCredentials userCredentialsMsg = JacksonUtil.fromString(userCredentialsUpdateMsg.getEntity(), UserCredentials.class, true); |
|
|
|
Assert.assertNotNull(userCredentialsMsg); |
|
|
|
Assert.assertEquals(savedCustomerUser.getId(), userCredentialsMsg.getUserId()); |
|
|
|
Assert.assertTrue(passwordEncoder.matches(changePasswordRequest.getNewPassword(), userCredentialsMsg.getPassword())); |
|
|
|
|
|
|
|
updateAndVerifyUserCredentials(savedCustomerUser); |
|
|
|
loginTenantAdmin(); |
|
|
|
|
|
|
|
// delete user
|
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
doDelete("/api/user/" + savedCustomerUser.getUuidId()) |
|
|
|
.andExpect(status().isOk()); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof UserUpdateMsg); |
|
|
|
userUpdateMsg = (UserUpdateMsg) latestMessage; |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, userUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(savedCustomerUser.getUuidId().getMostSignificantBits(), userUpdateMsg.getIdMSB()); |
|
|
|
Assert.assertEquals(savedCustomerUser.getUuidId().getLeastSignificantBits(), userUpdateMsg.getIdLSB()); |
|
|
|
|
|
|
|
deleteAndVerifyUser(savedCustomerUser); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testSendUserToCloudFromEdge() throws Exception { |
|
|
|
// create customer
|
|
|
|
Customer savedCustomer = createAndAssignCustomerToEdge("Edge Customer"); |
|
|
|
|
|
|
|
// create user
|
|
|
|
User customerUser = buildUser(Authority.CUSTOMER_USER, savedCustomer.getId(), "customerUser@thingsboard.org", DEFAULT_FIRST_NAME, "Johnson"); |
|
|
|
|
|
|
|
UUID uuid = UUID.randomUUID(); |
|
|
|
customerUser.setId(new UserId(uuid)); |
|
|
|
UUID userCredentialsUuid = UUID.randomUUID(); |
|
|
|
UplinkMsg uplinkMsg = constructUserUplinkMsg(customerUser, UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, userCredentialsUuid); |
|
|
|
Customer savedCustomer = createAndAssignCustomerToEdge(); |
|
|
|
|
|
|
|
edgeImitator.expectResponsesAmount(1); |
|
|
|
edgeImitator.sendUplinkMsg(uplinkMsg); |
|
|
|
Assert.assertTrue(edgeImitator.waitForResponses()); |
|
|
|
|
|
|
|
User userFromCloud = doGet("/api/user/" + uuid, User.class); |
|
|
|
Assert.assertNotNull(userFromCloud); |
|
|
|
Assert.assertEquals(customerUser.getEmail(), userFromCloud.getEmail()); |
|
|
|
//check user with existing email
|
|
|
|
User userWithExistingEmail = buildUser(Authority.CUSTOMER_USER, savedCustomer.getId(), "customerUser@thingsboard.org", DEFAULT_FIRST_NAME, "Johnson"); |
|
|
|
|
|
|
|
UUID uuidForExistingEmail = UUID.randomUUID(); |
|
|
|
userWithExistingEmail.setId(new UserId(uuidForExistingEmail)); |
|
|
|
UUID userCredentialsUuidForExistingEmail = UUID.randomUUID(); |
|
|
|
UplinkMsg uplinkMsgForExistingEmail = constructUserUplinkMsg(userWithExistingEmail, UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, userCredentialsUuidForExistingEmail); |
|
|
|
|
|
|
|
edgeImitator.expectResponsesAmount(1); |
|
|
|
edgeImitator.sendUplinkMsg(uplinkMsgForExistingEmail); |
|
|
|
Assert.assertTrue(edgeImitator.waitForResponses()); |
|
|
|
|
|
|
|
User userFromCloudWithExistingEmail = doGet("/api/user/" + uuidForExistingEmail, User.class); |
|
|
|
Assert.assertNotNull(userFromCloudWithExistingEmail); |
|
|
|
Assert.assertNotEquals(userWithExistingEmail.getEmail(), userFromCloudWithExistingEmail.getEmail()); |
|
|
|
// create uplinkMsg with user and userCredentials
|
|
|
|
UserId userId = new UserId(UUID.randomUUID()); |
|
|
|
UserCredentialsId userCredentialsId = new UserCredentialsId(UUID.randomUUID()); |
|
|
|
UplinkMsg uplinkMsg = buildUserUplinkMsg(userId, savedCustomer.getId(), userCredentialsId); |
|
|
|
|
|
|
|
User userFromCloud = verifyMsgOnCloud(uplinkMsg, userId, false); |
|
|
|
assertUserCredentialsFlags(userFromCloud, false, false); |
|
|
|
|
|
|
|
UplinkMsg enabledCredentialsUplinkMsg = constructUserCredentialsUplinkMsg(customerUser.getId(), "password", true, userCredentialsUuid); |
|
|
|
// create uplinkMsg with enabled userCredentials
|
|
|
|
UplinkMsg uplinkMsgWithEnabledCredentials = constructUserCredentialsUplinkMsg(userCredentialsId, userId); |
|
|
|
|
|
|
|
edgeImitator.expectResponsesAmount(1); |
|
|
|
edgeImitator.sendUplinkMsg(enabledCredentialsUplinkMsg); |
|
|
|
Assert.assertTrue(edgeImitator.waitForResponses()); |
|
|
|
User cloudUserWithCredentials = verifyMsgOnCloud(uplinkMsgWithEnabledCredentials, userId, false); |
|
|
|
assertUserCredentialsFlags(cloudUserWithCredentials, true, true); |
|
|
|
|
|
|
|
User cloudUserWithCredentials = doGet("/api/user/" + uuid, User.class); |
|
|
|
Assert.assertNotNull(cloudUserWithCredentials); |
|
|
|
// create uplinkMsg with user the same email
|
|
|
|
UserId secondUserId = new UserId(UUID.randomUUID()); |
|
|
|
UserCredentialsId secondCredentialsId = new UserCredentialsId(UUID.randomUUID()); |
|
|
|
UplinkMsg uplinkMsgForUserExistingEmail = buildUserUplinkMsg(secondUserId, savedCustomer.getId(), secondCredentialsId); |
|
|
|
|
|
|
|
assertUserCredentialsFlags(cloudUserWithCredentials, true, true); |
|
|
|
verifyMsgOnCloud(uplinkMsgForUserExistingEmail, secondUserId, true); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
@ -264,40 +151,111 @@ public class UserEdgeTest extends AbstractEdgeTest { |
|
|
|
testAutoGeneratedCodeByProtobuf(userCredentialsUpdateMsg); |
|
|
|
} |
|
|
|
|
|
|
|
private User buildUser(Authority authority, CustomerId customerId, String email, String firstName, String lastName) { |
|
|
|
private Customer createAndAssignCustomerToEdge() throws Exception { |
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
Customer customer = new Customer(); |
|
|
|
customer.setTitle("Edge Customer"); |
|
|
|
Customer savedCustomer = doPost("/api/customer", customer, Customer.class); |
|
|
|
Assert.assertFalse(edgeImitator.waitForMessages(5)); |
|
|
|
|
|
|
|
edgeImitator.expectMessageAmount(2); |
|
|
|
doPost("/api/customer/" + savedCustomer.getUuidId() + "/edge/" + edge.getUuidId(), Edge.class); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
|
|
|
|
return savedCustomer; |
|
|
|
} |
|
|
|
|
|
|
|
private User buildUser(Authority authority, CustomerId customerId) { |
|
|
|
User customerUser = new User(); |
|
|
|
|
|
|
|
customerUser.setAuthority(authority); |
|
|
|
customerUser.setTenantId(tenantId); |
|
|
|
customerUser.setCustomerId(customerId); |
|
|
|
customerUser.setEmail(email); |
|
|
|
customerUser.setFirstName(firstName); |
|
|
|
customerUser.setLastName(lastName); |
|
|
|
customerUser.setEmail(authority == Authority.TENANT_ADMIN ? DEFAULT_TENANT_ADMIN_EMAIL : DEFAULT_CUSTOMER_USER_EMAIL); |
|
|
|
customerUser.setFirstName(DEFAULT_FIRST_NAME); |
|
|
|
customerUser.setLastName(DEFAULT_LAST_NAME); |
|
|
|
|
|
|
|
return customerUser; |
|
|
|
} |
|
|
|
|
|
|
|
private Customer createAndAssignCustomerToEdge(String title) throws Exception { |
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
Customer customer = new Customer(); |
|
|
|
customer.setTitle(title); |
|
|
|
Customer savedCustomer = doPost("/api/customer", customer, Customer.class); |
|
|
|
Assert.assertFalse(edgeImitator.waitForMessages(5)); |
|
|
|
private User createAndVerifyUserOnEdge(User user) throws Exception { |
|
|
|
// wait 3 messages - x1 user update msg and x2 user credentials update msgs (create + authenticate user)
|
|
|
|
edgeImitator.expectMessageAmount(3); |
|
|
|
User savedUser = createUser(user, user.getAuthority() == Authority.TENANT_ADMIN ? "tenant" : "customer"); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
|
|
|
|
Assert.assertEquals(1, edgeImitator.findAllMessagesByType(UserUpdateMsg.class).size()); |
|
|
|
Assert.assertEquals(2, edgeImitator.findAllMessagesByType(UserCredentialsUpdateMsg.class).size()); |
|
|
|
|
|
|
|
UserUpdateMsg userUpdateMsg = getLatestUserUpdateMsg(); |
|
|
|
User userMsg = JacksonUtil.fromString(userUpdateMsg.getEntity(), User.class, true); |
|
|
|
Assert.assertNotNull(userMsg); |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, userUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(savedUser.getId(), userMsg.getId()); |
|
|
|
Assert.assertEquals(savedUser.getCustomerId(), userMsg.getCustomerId()); |
|
|
|
Assert.assertEquals(savedUser.getAuthority(), userMsg.getAuthority()); |
|
|
|
Assert.assertEquals(savedUser.getEmail(), userMsg.getEmail()); |
|
|
|
Assert.assertEquals(savedUser.getFirstName(), userMsg.getFirstName()); |
|
|
|
Assert.assertEquals(savedUser.getLastName(), userMsg.getLastName()); |
|
|
|
|
|
|
|
return savedUser; |
|
|
|
} |
|
|
|
|
|
|
|
private void updateAndVerifyUserLastName(User user) throws Exception { |
|
|
|
user.setLastName(UPDATED_LAST_NAME); |
|
|
|
|
|
|
|
edgeImitator.expectMessageAmount(2); |
|
|
|
doPost("/api/customer/" + savedCustomer.getUuidId() + "/edge/" + edge.getUuidId(), Edge.class); |
|
|
|
doPost("/api/user", user, User.class); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
|
|
|
|
return savedCustomer; |
|
|
|
UserUpdateMsg userUpdateMsg = getLatestUserUpdateMsg(); |
|
|
|
User userFromMsg = JacksonUtil.fromString(userUpdateMsg.getEntity(), User.class, true); |
|
|
|
Assert.assertNotNull(userFromMsg); |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, userUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(UPDATED_LAST_NAME, userFromMsg.getLastName()); |
|
|
|
} |
|
|
|
|
|
|
|
private UplinkMsg constructUserUplinkMsg(User user, UpdateMsgType msgType, UUID userCredentialsUuid) { |
|
|
|
UserUpdateMsg userUpdateMsg = EdgeMsgConstructorUtils.constructUserUpdatedMsg(msgType, user); |
|
|
|
private void updateAndVerifyUserCredentials(User user) throws Exception { |
|
|
|
String password = user.getAuthority() == Authority.TENANT_ADMIN ? "tenant" : "customer"; |
|
|
|
String newPassword = "new" + password; |
|
|
|
|
|
|
|
UserCredentials userCredentials = new UserCredentials(); |
|
|
|
userCredentials.setId(new UserCredentialsId(userCredentialsUuid)); |
|
|
|
userCredentials.setUserId(user.getId()); |
|
|
|
userCredentials.setEnabled(false); |
|
|
|
userCredentials.setAdditionalInfo(JacksonUtil.newObjectNode()); |
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
ChangePasswordRequest changePasswordRequest = new ChangePasswordRequest(); |
|
|
|
changePasswordRequest.setCurrentPassword(password); |
|
|
|
changePasswordRequest.setNewPassword(newPassword); |
|
|
|
doPost("/api/auth/changePassword", changePasswordRequest); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
|
|
|
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof UserCredentialsUpdateMsg); |
|
|
|
UserCredentialsUpdateMsg msg = (UserCredentialsUpdateMsg) latestMessage; |
|
|
|
UserCredentials creds = JacksonUtil.fromString(msg.getEntity(), UserCredentials.class, true); |
|
|
|
Assert.assertNotNull(creds); |
|
|
|
Assert.assertEquals(user.getId(), creds.getUserId()); |
|
|
|
Assert.assertTrue(passwordEncoder.matches(newPassword, creds.getPassword())); |
|
|
|
} |
|
|
|
|
|
|
|
private void deleteAndVerifyUser(User savedTenantAdmin) throws Exception { |
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
doDelete("/api/user/" + savedTenantAdmin.getUuidId()) |
|
|
|
.andExpect(status().isOk()); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
|
|
|
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof UserUpdateMsg); |
|
|
|
UserUpdateMsg userUpdateMsg = (UserUpdateMsg) latestMessage; |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, userUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(savedTenantAdmin.getUuidId().getMostSignificantBits(), userUpdateMsg.getIdMSB()); |
|
|
|
Assert.assertEquals(savedTenantAdmin.getUuidId().getLeastSignificantBits(), userUpdateMsg.getIdLSB()); |
|
|
|
} |
|
|
|
|
|
|
|
private UplinkMsg buildUserUplinkMsg(UserId userId, CustomerId customerId, UserCredentialsId userCredentialsUuid) { |
|
|
|
User customerUser = buildUser(Authority.CUSTOMER_USER, customerId); |
|
|
|
customerUser.setId(userId); |
|
|
|
UserCredentials userCredentials = buildCredentials(userCredentialsUuid, userId, false); |
|
|
|
userCredentials.setActivateToken(StringUtils.randomAlphanumeric(DEFAULT_TOKEN_LENGTH)); |
|
|
|
|
|
|
|
UserUpdateMsg userUpdateMsg = EdgeMsgConstructorUtils.constructUserUpdatedMsg(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, customerUser); |
|
|
|
UserCredentialsUpdateMsg userCredentialsMsg = EdgeMsgConstructorUtils.constructUserCredentialsUpdatedMsg(userCredentials); |
|
|
|
|
|
|
|
return UplinkMsg.newBuilder() |
|
|
|
@ -306,13 +264,38 @@ public class UserEdgeTest extends AbstractEdgeTest { |
|
|
|
.build(); |
|
|
|
} |
|
|
|
|
|
|
|
private UplinkMsg constructUserCredentialsUplinkMsg(UserId userId, String password, boolean enabled, UUID userCredentialsUuid) { |
|
|
|
private UserCredentials buildCredentials(UserCredentialsId userCredentialsUuid, UserId userId, boolean enabled) { |
|
|
|
UserCredentials userCredentials = new UserCredentials(); |
|
|
|
userCredentials.setId(new UserCredentialsId(userCredentialsUuid)); |
|
|
|
|
|
|
|
userCredentials.setId(userCredentialsUuid); |
|
|
|
userCredentials.setUserId(userId); |
|
|
|
userCredentials.setEnabled(enabled); |
|
|
|
userCredentials.setPassword(password); |
|
|
|
userCredentials.setAdditionalInfo(JacksonUtil.newObjectNode()); |
|
|
|
|
|
|
|
return userCredentials; |
|
|
|
} |
|
|
|
|
|
|
|
private User verifyMsgOnCloud(UplinkMsg uplinkMsg, UserId userId, boolean emailExist) throws Exception { |
|
|
|
edgeImitator.expectResponsesAmount(1); |
|
|
|
edgeImitator.sendUplinkMsg(uplinkMsg); |
|
|
|
Assert.assertTrue(edgeImitator.waitForResponses()); |
|
|
|
|
|
|
|
User userFromCloud = doGet("/api/user/" + userId, User.class); |
|
|
|
Assert.assertNotNull(userFromCloud); |
|
|
|
|
|
|
|
if (emailExist) { |
|
|
|
Assert.assertNotEquals(DEFAULT_CUSTOMER_USER_EMAIL, userFromCloud.getEmail()); |
|
|
|
} else { |
|
|
|
Assert.assertEquals(DEFAULT_CUSTOMER_USER_EMAIL, userFromCloud.getEmail()); |
|
|
|
} |
|
|
|
return userFromCloud; |
|
|
|
} |
|
|
|
|
|
|
|
private UplinkMsg constructUserCredentialsUplinkMsg(UserCredentialsId userCredentialsUuid, UserId userId) { |
|
|
|
UserCredentials userCredentials = buildCredentials(userCredentialsUuid, userId, true); |
|
|
|
userCredentials.setPassword("password"); |
|
|
|
UserCredentialsUpdateMsg credsMsg = EdgeMsgConstructorUtils.constructUserCredentialsUpdatedMsg(userCredentials); |
|
|
|
|
|
|
|
return UplinkMsg.newBuilder() |
|
|
|
.addUserCredentialsUpdateMsg(credsMsg) |
|
|
|
.build(); |
|
|
|
|