diff --git a/src/main/java/biz/nynja/account/services/AccountServiceImpl.java b/src/main/java/biz/nynja/account/services/AccountServiceImpl.java index 23a3dbd5cdc3f5cf34e73f66a031317d43f347ac..4c1f49bd88d137f211d325147c5da682326543fe 100644 --- a/src/main/java/biz/nynja/account/services/AccountServiceImpl.java +++ b/src/main/java/biz/nynja/account/services/AccountServiceImpl.java @@ -673,4 +673,5 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas .setError(newBuilder().setCause(error).setMessage(message)).build()); responseObserver.onCompleted(); } + } diff --git a/src/test/java/biz/nynja/account/services/AccountServiceTests.java b/src/test/java/biz/nynja/account/services/AccountServiceTests.java index 7debd739019fa0490b82f4ed53bf3bc268fb4ae1..8f86a3b9c1b9cadae3ccdfe6dc5dd7b48fb19a15 100644 --- a/src/test/java/biz/nynja/account/services/AccountServiceTests.java +++ b/src/test/java/biz/nynja/account/services/AccountServiceTests.java @@ -26,6 +26,7 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import biz.nynja.account.components.AccountServiceHelper; +import biz.nynja.account.components.PreparedStatementsCache; import biz.nynja.account.configurations.CassandraTestsConfig; import biz.nynja.account.grpc.AccountByAuthenticationProviderRequest; @@ -35,14 +36,19 @@ import biz.nynja.account.grpc.AccountServiceGrpc; import biz.nynja.account.grpc.AccountsByProfileIdRequest; import biz.nynja.account.grpc.AccountsResponse; import biz.nynja.account.grpc.AddAuthenticationProviderRequest; +import biz.nynja.account.grpc.AddContactInfoRequest; import biz.nynja.account.grpc.AuthProviderDetails; import biz.nynja.account.grpc.AuthenticationType; import biz.nynja.account.grpc.CompletePendingAccountCreationRequest; +import biz.nynja.account.grpc.ContactDetails; +import biz.nynja.account.grpc.ContactType; import biz.nynja.account.grpc.CreatePendingAccountRequest; import biz.nynja.account.grpc.CreatePendingAccountResponse; import biz.nynja.account.grpc.DeleteAccountRequest; import biz.nynja.account.grpc.DeleteProfileRequest; +import biz.nynja.account.grpc.EditContactInfoRequest; import biz.nynja.account.grpc.DeleteAuthenticationProviderRequest; +import biz.nynja.account.grpc.DeleteContactInfoRequest; import biz.nynja.account.grpc.ErrorResponse.Cause; import biz.nynja.account.grpc.StatusResponse; import biz.nynja.account.grpc.UpdateAccountRequest; @@ -53,6 +59,7 @@ import biz.nynja.account.models.AccountByAuthenticationProvider; import biz.nynja.account.repositories.AccountByAuthenticationProviderRepository; import biz.nynja.account.models.AccountByProfileId; import biz.nynja.account.models.AuthenticationProvider; +import biz.nynja.account.models.ContactInfo; import biz.nynja.account.models.PendingAccount; import biz.nynja.account.models.PendingAccountByAuthenticationProvider; import biz.nynja.account.models.Profile; @@ -164,6 +171,9 @@ public class AccountServiceTests extends GrpcServerTestBase { @MockBean private AccountServiceHelper util; + @MockBean + private PreparedStatementsCache preparedStatementsCache; + @Test public void testGetAccountByAccountId() throws ExecutionException, InterruptedException { final AccountByAccountIdRequest request = AccountByAccountIdRequest.newBuilder() @@ -913,4 +923,460 @@ public class AccountServiceTests extends GrpcServerTestBase { reply.getError().getCause().equals(Cause.ERROR_DELETING_AUTH_PROVIDER)); } + @Test + public void testAddContactInfoPhoneToAccountOK() { + final AddContactInfoRequest request = AddContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()).setContactInfo(ContactDetails.newBuilder() + .setType(ContactType.PHONE_CONTACT).setValue(Util.PHONE_PROVIDER).setLabel("testLabel").build()) + .build(); + given(accountRepositoryAdditional.addContactInfo(Mockito.any(UUID.class), Mockito.any(ContactInfo.class))) + .willReturn(true); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.addContactInfoToAccount(request); + assertNotNull("Reply should not be null", reply); + assertEquals("SUCCESS", reply.getStatus()); + } + + @Test + public void testAddContactInfoEmailToAccountOK() { + final AddContactInfoRequest request = AddContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .build(); + given(accountRepositoryAdditional.addContactInfo(Mockito.any(UUID.class), Mockito.any(ContactInfo.class))) + .willReturn(true); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.addContactInfoToAccount(request); + assertNotNull("Reply should not be null", reply); + assertEquals("SUCCESS", reply.getStatus()); + } + + @Test + public void testAddContactInfoToAccountInvalidAccountId() { + final AddContactInfoRequest request = AddContactInfoRequest.newBuilder().setAccountId(Util.INVALID_ACCOUNT_ID) + .setContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.addContactInfoToAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.INVALID_ACCOUNT_ID), + reply.getError().getCause().equals(Cause.INVALID_ACCOUNT_ID)); + } + + @Test + public void testAddContactInfoToAccountMissingAccountId() { + final AddContactInfoRequest request = AddContactInfoRequest.newBuilder() + .setContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.addContactInfoToAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.MISSING_ACCOUNT_ID), + reply.getError().getCause().equals(Cause.MISSING_ACCOUNT_ID)); + } + + @Test + public void testAddContactInfoToAccountMissingContactInfoType() { + final AddContactInfoRequest request = AddContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setContactInfo(ContactDetails.newBuilder().setValue(Util.EMAIL).build()).build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.addContactInfoToAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.MISSING_CONTACT_INFO_TYPE), + reply.getError().getCause().equals(Cause.MISSING_CONTACT_INFO_TYPE)); + } + + @Test + public void testAddContactInfoToAccountMissingContactInfoIdentifier() { + final AddContactInfoRequest request = AddContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setContactInfo(ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).build()).build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.addContactInfoToAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.MISSING_CONTACT_INFO_IDENTIFIER), + reply.getError().getCause().equals(Cause.MISSING_CONTACT_INFO_IDENTIFIER)); + } + + @Test + public void testAddContactInfoToAccountInvalidPhone() { + final AddContactInfoRequest request = AddContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setContactInfo(ContactDetails.newBuilder().setType(ContactType.PHONE_CONTACT) + .setValue(Util.INVALID_PHONE_PROVIDER).setLabel("testLabel").build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.addContactInfoToAccount(request); + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain cause '%s'", Cause.PHONE_NUMBER_INVALID), + reply.getError().getCause().equals(Cause.PHONE_NUMBER_INVALID)); + } + + @Test + public void testAddContactInfoToAccountInvalidEmail() { + final AddContactInfoRequest request = AddContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()).setContactInfo(ContactDetails.newBuilder() + .setType(ContactType.EMAIL_CONTACT).setValue(Util.INVALID_EMAIL).build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.addContactInfoToAccount(request); + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain cause '%s'", Cause.EMAIL_INVALID), + reply.getError().getCause().equals(Cause.EMAIL_INVALID)); + } + + @Test + public void testAddContactInfoEmailToAccountErrorAddingContactInfo() { + final AddContactInfoRequest request = AddContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .build(); + given(accountRepositoryAdditional.addContactInfo(Mockito.any(UUID.class), Mockito.any(ContactInfo.class))) + .willReturn(false); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.addContactInfoToAccount(request); + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain cause '%s'", Cause.ERROR_ADDING_CONTACT_INFO), + reply.getError().getCause().equals(Cause.ERROR_ADDING_CONTACT_INFO)); + } + + @Test + public void testRemoveContactInfoPhoneFromAccountOK() { + final DeleteContactInfoRequest request = DeleteContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()).setContactInfo(ContactDetails.newBuilder() + .setType(ContactType.PHONE_CONTACT).setValue(Util.PHONE_PROVIDER).setLabel("testLabel").build()) + .build(); + given(accountRepositoryAdditional.deleteContactInfo(Mockito.any(UUID.class), Mockito.any(ContactInfo.class))) + .willReturn(true); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.deleteContactInfoFromAccount(request); + assertNotNull("Reply should not be null", reply); + assertEquals("SUCCESS", reply.getStatus()); + } + + @Test + public void testRemoveContactInfoEmailFromAccountOK() { + final DeleteContactInfoRequest request = DeleteContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .build(); + given(accountRepositoryAdditional.deleteContactInfo(Mockito.any(UUID.class), Mockito.any(ContactInfo.class))) + .willReturn(true); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.deleteContactInfoFromAccount(request); + assertNotNull("Reply should not be null", reply); + assertEquals("SUCCESS", reply.getStatus()); + } + + @Test + public void testRemoveContactInfoFromAccountInvalidAccountId() { + final DeleteContactInfoRequest request = DeleteContactInfoRequest.newBuilder() + .setAccountId(Util.INVALID_ACCOUNT_ID) + .setContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.deleteContactInfoFromAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.INVALID_ACCOUNT_ID), + reply.getError().getCause().equals(Cause.INVALID_ACCOUNT_ID)); + } + + @Test + public void testRemoveContactInfoFromAccountMissingAccountId() { + final DeleteContactInfoRequest request = DeleteContactInfoRequest.newBuilder() + .setContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.deleteContactInfoFromAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.MISSING_ACCOUNT_ID), + reply.getError().getCause().equals(Cause.MISSING_ACCOUNT_ID)); + } + + @Test + public void testRemoveContactInfoFromAccountMissingContactInfoType() { + final DeleteContactInfoRequest request = DeleteContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setContactInfo(ContactDetails.newBuilder().setValue(Util.EMAIL).build()).build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.deleteContactInfoFromAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.MISSING_CONTACT_INFO_TYPE), + reply.getError().getCause().equals(Cause.MISSING_CONTACT_INFO_TYPE)); + } + + @Test + public void testRemoveContactInfoFromAccountMissingContactInfoIdentifier() { + final DeleteContactInfoRequest request = DeleteContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setContactInfo(ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).build()).build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.deleteContactInfoFromAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.MISSING_CONTACT_INFO_IDENTIFIER), + reply.getError().getCause().equals(Cause.MISSING_CONTACT_INFO_IDENTIFIER)); + } + + @Test + public void testRemoveContactInfoFromAccountInvalidPhone() { + final DeleteContactInfoRequest request = DeleteContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setContactInfo(ContactDetails.newBuilder().setType(ContactType.PHONE_CONTACT) + .setValue(Util.INVALID_PHONE_PROVIDER).setLabel("testLabel").build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.deleteContactInfoFromAccount(request); + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain cause '%s'", Cause.PHONE_NUMBER_INVALID), + reply.getError().getCause().equals(Cause.PHONE_NUMBER_INVALID)); + } + + @Test + public void testRemoveContactInfoFromAccountInvalidEmail() { + final DeleteContactInfoRequest request = DeleteContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()).setContactInfo(ContactDetails.newBuilder() + .setType(ContactType.EMAIL_CONTACT).setValue(Util.INVALID_EMAIL).build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.deleteContactInfoFromAccount(request); + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain cause '%s'", Cause.EMAIL_INVALID), + reply.getError().getCause().equals(Cause.EMAIL_INVALID)); + } + + @Test + public void testRemoveContactInfoEmailFromAccountErrorRemovingContactInfo() { + final DeleteContactInfoRequest request = DeleteContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .build(); + given(accountRepositoryAdditional.addContactInfo(Mockito.any(UUID.class), Mockito.any(ContactInfo.class))) + .willReturn(false); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.deleteContactInfoFromAccount(request); + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain cause '%s'", Cause.ERROR_REMOVING_CONTACT_INFO), + reply.getError().getCause().equals(Cause.ERROR_REMOVING_CONTACT_INFO)); + } + + @Test + public void testEditContactInfoPhoneForAccountOK() { + final EditContactInfoRequest request = EditContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setOldContactInfo(ContactDetails.newBuilder().setType(ContactType.PHONE_CONTACT) + .setValue(Util.PHONE_PROVIDER).setLabel("testLabel").build()) + .setEditedContactInfo(ContactDetails.newBuilder().setType(ContactType.PHONE_CONTACT) + .setValue(Util.PHONE_PROVIDER_EDITED).setLabel("testLabel").build()) + .build(); + given(accountRepositoryAdditional.editContactInfo(Mockito.any(UUID.class), Mockito.any(ContactInfo.class), + Mockito.any(ContactInfo.class))).willReturn(true); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.editContactInfoForAccount(request); + assertNotNull("Reply should not be null", reply); + assertEquals("SUCCESS", reply.getStatus()); + } + + @Test + public void testEditContactInfoEmailForAccountOK() { + final EditContactInfoRequest request = EditContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setOldContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .setEditedContactInfo(ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT) + .setValue(Util.EMAIL_EDITED).build()) + .build(); + given(accountRepositoryAdditional.editContactInfo(Mockito.any(UUID.class), Mockito.any(ContactInfo.class), + Mockito.any(ContactInfo.class))).willReturn(true); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.editContactInfoForAccount(request); + assertNotNull("Reply should not be null", reply); + assertEquals("SUCCESS", reply.getStatus()); + } + + @Test + public void testEditContactInfoForAccountInvalidAccountId() { + final EditContactInfoRequest request = EditContactInfoRequest.newBuilder().setAccountId(Util.INVALID_ACCOUNT_ID) + .setOldContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .setEditedContactInfo(ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT) + .setValue(Util.EMAIL_EDITED).build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.editContactInfoForAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.INVALID_ACCOUNT_ID), + reply.getError().getCause().equals(Cause.INVALID_ACCOUNT_ID)); + } + + @Test + public void testEditContactInfoForAccountMissingAccountId() { + final EditContactInfoRequest request = EditContactInfoRequest.newBuilder() + .setOldContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .setEditedContactInfo(ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT) + .setValue(Util.EMAIL_EDITED).build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.editContactInfoForAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.MISSING_ACCOUNT_ID), + reply.getError().getCause().equals(Cause.MISSING_ACCOUNT_ID)); + } + + @Test + public void testEditContactInfoForAccountMissingContactInfoType() { + final EditContactInfoRequest request = EditContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setOldContactInfo(ContactDetails.newBuilder().setValue(Util.EMAIL).build()) + .setEditedContactInfo(ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT) + .setValue(Util.EMAIL_EDITED).build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.editContactInfoForAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.MISSING_CONTACT_INFO_TYPE), + reply.getError().getCause().equals(Cause.MISSING_CONTACT_INFO_TYPE)); + } + + @Test + public void testEditContactInfoForAccountMissingContactInfoIdentifier() { + final EditContactInfoRequest request = EditContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setOldContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .setEditedContactInfo(ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).build()).build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.editContactInfoForAccount(request); + assertTrue(String.format("Reply should contain cause '%s'", Cause.MISSING_CONTACT_INFO_IDENTIFIER), + reply.getError().getCause().equals(Cause.MISSING_CONTACT_INFO_IDENTIFIER)); + } + + @Test + public void testEditContactInfoForAccountInvalidPhone() { + final EditContactInfoRequest request = EditContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setOldContactInfo(ContactDetails.newBuilder().setType(ContactType.PHONE_CONTACT) + .setValue(Util.INVALID_PHONE_PROVIDER).setLabel("testLabel").build()) + .setEditedContactInfo(ContactDetails.newBuilder().setType(ContactType.PHONE_CONTACT) + .setValue(Util.PHONE_PROVIDER_EDITED).setLabel("testLabel").build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.editContactInfoForAccount(request); + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain cause '%s'", Cause.PHONE_NUMBER_INVALID), + reply.getError().getCause().equals(Cause.PHONE_NUMBER_INVALID)); + } + + @Test + public void testEditContactInfoForAccountInvalidEmail() { + final EditContactInfoRequest request = EditContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setOldContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .setEditedContactInfo(ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT) + .setValue(Util.INVALID_EMAIL).build()) + .build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.editContactInfoForAccount(request); + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain cause '%s'", Cause.EMAIL_INVALID), + reply.getError().getCause().equals(Cause.EMAIL_INVALID)); + } + + @Test + public void testEditContactInfoEmailForAccountErrorEditingContactInfo() { + final EditContactInfoRequest request = EditContactInfoRequest.newBuilder() + .setAccountId(Util.ACCOUNT_ID.toString()) + .setOldContactInfo( + ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT).setValue(Util.EMAIL).build()) + .setEditedContactInfo(ContactDetails.newBuilder().setType(ContactType.EMAIL_CONTACT) + .setValue(Util.EMAIL_EDITED).build()) + .build(); + given(accountRepositoryAdditional.addContactInfo(Mockito.any(UUID.class), Mockito.any(ContactInfo.class))) + .willReturn(false); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final StatusResponse reply = accountServiceBlockingStub.editContactInfoForAccount(request); + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain cause '%s'", Cause.ERROR_EDITING_CONTACT_INFO), + reply.getError().getCause().equals(Cause.ERROR_EDITING_CONTACT_INFO)); + } } diff --git a/src/test/java/biz/nynja/account/utils/Util.java b/src/test/java/biz/nynja/account/utils/Util.java index 775a457d8bfb7599caf990c2bc81c052d92c3fd8..fe26e10986ae8f10c4ed6ae18b40ba9a802e5134 100644 --- a/src/test/java/biz/nynja/account/utils/Util.java +++ b/src/test/java/biz/nynja/account/utils/Util.java @@ -34,6 +34,7 @@ public class Util { public static final UUID ACCOUNT_ID = UUID.fromString("44532732-12b3-132d-e156-223732152200"); public static final UUID ACCOUNT_ID_NOT_FOUND = UUID.fromString("44532732-12b3-132d-e156-223732152202"); public static final UUID PROFILE_ID_NOT_FOUND = UUID.fromString("12352345-e89b-43d3-d156-456732452202"); + public static final String INVALID_ACCOUNT_ID = "111-222"; public static final String ACCOUNT_MARK = "AccountMark"; public static final String UPDATED_ACCOUNT_MARK = "PRIVATE"; public static final String AUTHENTICATION_PROVIDER = "Provider"; @@ -47,6 +48,8 @@ public class Util { public static final Set CONTACTS_INFO = new HashSet(); public static final String QR_CODE = "QRcode"; public static final String EMAIL = "email@test.com"; + public static final String EMAIL_EDITED = "test@mytestemail.com"; + public static final String INVALID_EMAIL = "invalidemail@"; public static final String USERNAME = "jdoe"; public static final String PASSWORD = "abc123"; public static final String FIRST_NAME = "John"; @@ -54,6 +57,8 @@ public class Util { public static final String MIDDLE_NAME = "Kass"; public static final String PHONE_NUMBER = "+359887123456"; public static final String PHONE_PROVIDER = "BG:+359887123456"; + public static final String PHONE_PROVIDER_EDITED = "BG:+359887111111"; + public static final String INVALID_PHONE_PROVIDER = "BG:+3"; public static final String PHONE_TYPE = "PHONE"; public static final String EMAIL_TYPE = "EMAIL"; public static final String FACBOOK_TYPE = "FACEBOOK";