Пример #1
0
        public void AddAccount_GivenAPersonThatExistsInCCM_ShouldBeAbleToCreateACreditCardAccountInCCM()
        {
            // ARRANGE
            var primaryApplicant = GetApplicant();

            var credentials = new Credentials()
            {
                BaseUrl  = "https://some.bank.or.cu/api",
                Username = "******",
                Password = "******",
                Facility = "validFacility"
            };

            var credentialsHeader = GetCredentialsHeader(credentials);

            var messageXml = _account.Message?.SerializeToXmlString();

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                _app.HostValues.Where(hv => hv.Field1.StartsWith("AddAccount.")).ToList(),
                _account.Message?.HostValueParentNode
                );

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                primaryApplicant.HostValues.Where(hv => hv.Field1.StartsWith("AddAccount.")).ToList(),
                _account.Message?.HostValueParentNode
                );

            var processMessageNodeRequest = new ProcessMessageNodeRequest()
            {
                CredentialsHeader = credentialsHeader,
                request           = GetXmlNode(messageXml)
            };

            var stubServiceRepo = Substitute.For <ISoapRepository>();

            stubServiceRepo.GetProcessMessageNodeRequest(credentialsHeader, messageXml).Returns(processMessageNodeRequest);

            _messageResponse = GetMessageResponseSuccess();

            stubServiceRepo.AddAccount(_account, _app, primaryApplicant).Returns(_messageResponse);
            var stubLmsRepo = Substitute.For <ILmsRepository>();

            stubLmsRepo.GetUserFullNameById(_app.FinalDecisionUserId.GetValueOrDefault()).Returns("Steve Higgs");

            var mockBehavior = new AddAccountBehavior(_app, _userToken, stubServiceRepo, stubLmsRepo);

            mockBehavior.Account = _account;

            // ACT
            var result        = mockBehavior.AddAccount(primaryApplicant);
            var accountNumber = mockBehavior.MessageResponse.AccountNumber;

            // ASSERT
            Assert.AreEqual(0, result.Messages.Count(m => m.Type == MessageType.Error));
            Assert.IsTrue(result.Result);
            Assert.AreEqual("Success", mockBehavior.MessageResponse.ResponseCode);
            Assert.AreEqual("9000000000007", accountNumber);
        }
Пример #2
0
        public void UpdateAccount_WhenApplicationIsAnAddon_AndPrimaryPersonExistsInCCM_ShouldSuccessfullyUpdateCreditLimitInCCM()
        {
            // ARRANGE
            _applicationAddOn         = GetApplication_AddOn();
            _primaryApplicant         = GetApplicant();
            _userToken                = "aBc123";
            _account                  = GetUpdateAccountDto(_applicationAddOn, _primaryApplicant, _userToken);
            _applicationAddOn.IsAddon = true;

            var credentials = new Credentials()
            {
                BaseUrl  = "https://some.bank.or.cu/api",
                Username = "******",
                Password = "******",
                Facility = "validFacility"
            };

            var credentialsHeader = GetCredentialsHeader(credentials);

            var messageXml = _account.Message?.SerializeToXmlString();

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                _applicationAddOn.HostValues.Where(hv => hv.Field1.StartsWith("UpdateAccount.")).ToList(),
                _account.Message?.HostValueParentNode
                );

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                _primaryApplicant.HostValues.Where(hv => hv.Field1.StartsWith("UpdateAccount.")).ToList(),
                _account.Message?.HostValueParentNode
                );

            var processMessageNodeRequest = new ProcessMessageNodeRequest()
            {
                CredentialsHeader = credentialsHeader,
                request           = GetXmlNode(messageXml)
            };

            var stubServiceRepo = Substitute.For <ISoapRepository>();

            stubServiceRepo.GetProcessMessageNodeRequest(credentialsHeader, messageXml).Returns(processMessageNodeRequest);

            _messageResponse = GetMessageResponseSuccess();

            stubServiceRepo.UpdateAccount(_account, _applicationAddOn, _primaryApplicant).Returns(_messageResponse);

            var mockBehavior = new UpdateAccountBehavior(_applicationAddOn, _userToken, stubServiceRepo);

            mockBehavior.Account = _account;

            // ACT
            var result = mockBehavior.UpdateAccount(_primaryApplicant);

            // ASSERT
            Assert.AreEqual(0, result.Messages.Count(m => m.Type == MessageType.Error));
            Assert.IsTrue(result.Result);
            Assert.AreEqual("Success", mockBehavior.MessageResponse.ResponseCode);
        }
Пример #3
0
        public void AddCard_GivenAPersonThatHasAnAccountInCCM_ShouldBeAbleToCreateAPlasticCard()
        {
            // ARRANGE
            var applicant = GetApplicant();
            var lmsPerson = new LmsPerson()
            {
                Applicant = applicant
            };

            var credentials = new Credentials()
            {
                BaseUrl  = "https://some.bank.or.cu/api",
                Username = "******",
                Password = "******",
                Facility = "validFacility"
            };

            var credentialsHeader = GetCredentialsHeader(credentials);

            var messageXml = _card.Message?.SerializeToXmlString();

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                applicant.HostValues.Where(hv => hv.Field1.StartsWith("AddCard.")).ToList(),
                _card.Message?.HostValueParentNode
                );

            var processMessageNodeRequest = new ProcessMessageNodeRequest()
            {
                CredentialsHeader = credentialsHeader,
                request           = GetXmlNode(messageXml)
            };

            var stubServiceRepo = Substitute.For <ISoapRepository>();

            stubServiceRepo.GetProcessMessageNodeRequest(credentialsHeader, messageXml).Returns(processMessageNodeRequest);

            _messageResponse = GetMessageResponseSuccess();

            stubServiceRepo.AddCard(_card, _app, lmsPerson).Returns(_messageResponse);

            var stubLmsRepo = Substitute.For <ILmsRepository>();

            var mockBehavior = new AddCardBehavior(_app, _userToken, stubServiceRepo, stubLmsRepo);

            mockBehavior.Card = _card;

            // ACT
            var result     = mockBehavior.AddCard(lmsPerson);
            var cardNumber = mockBehavior.MessageResponse?.CardNumber;

            // ASSERT
            Assert.AreEqual(0, result.Messages.Count(m => m.Type == MessageType.Error));
            Assert.IsTrue(result.Result);
            Assert.AreEqual("Success", mockBehavior.MessageResponse.ResponseCode);
            Assert.AreEqual("4398790000000001", cardNumber);
        }
Пример #4
0
        public void AddAccountPartyRelationship_GivenAJointPersonThatExistsInCCM_ShouldNotBeAbleToAddThatJointToTheAccountInCCM()
        {
            // ARRANGE
            var jointApplicant = GetApplicant();

            var credentials = new Credentials()
            {
                BaseUrl  = "https://some.bank.or.cu/api",
                Username = "******",
                Password = "******",
                Facility = "validFacility"
            };

            var credentialsHeader = GetCredentialsHeader(credentials);

            var messageXml = _accountPartyRelationship.Message?.SerializeToXmlString();

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                _app.HostValues.Where(hv => hv.Field1.StartsWith("AddAccountPartyRelationship.")).ToList(),
                _accountPartyRelationship.Message?.HostValueParentNode
                );

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                jointApplicant.HostValues.Where(hv => hv.Field1.StartsWith("AddAccountPartyRelationship.")).ToList(),
                _accountPartyRelationship.Message?.HostValueParentNode
                );

            var processMessageNodeRequest = new ProcessMessageNodeRequest()
            {
                CredentialsHeader = credentialsHeader,
                request           = GetXmlNode(messageXml)
            };

            var stubServiceRepo = Substitute.For <ISoapRepository>();

            stubServiceRepo.GetProcessMessageNodeRequest(credentialsHeader, messageXml).Returns(processMessageNodeRequest);

            _messageResponse = GetMessageResponseFail();

            stubServiceRepo.AddAccountPartyRelationship(_accountPartyRelationship, _app, jointApplicant).Returns(_messageResponse);

            var mockBehavior = new AddAccountPartyRelationshipBehavior(_app, _userToken, stubServiceRepo);

            mockBehavior.AccountPartyRelationship = _accountPartyRelationship;

            // ACT
            var result = mockBehavior.AddAccountPartyRelationship(jointApplicant);

            // ASSERT
            Assert.AreEqual(0, result.Messages.Count(m => m.Type == MessageType.Error));
            Assert.IsTrue(result.Result);
            Assert.AreEqual("SystemMalfunction", mockBehavior.MessageResponse.ResponseCode);
        }
Пример #5
0
        public void AddAccount_GivenValidCredentialsAndDto_ShouldAddTheAccountSuccessfully(int applicationId, string personNumber)
        {
            // ARRANGE
            var    app         = GetApplication(applicationId);
            var    applicant   = GetApplicant();
            var    addAccount  = GetAddAccount(personNumber);
            var    credentials = GetCredentials();
            string messageXml  = addAccount.Message?.SerializeToXmlString();

            var stubSoapClient = Substitute.For <CcmWebServiceSoap>();
            //var stubSoapClient = new CcmWebServiceSoapClient("CcmWebServiceSoap", "https://dna-ccmapp-ttd.uccu.com/ccm-Test-ws/ccmwebservice/ccmwebservice.asmx");

            var repo = new SoapRepository("ABC123", credentials, stubSoapClient);

            var credentialsHeader = new CredentialsHeader()
            {
                Username  = credentials.Username,
                Password  = credentials.Password,
                Facility  = credentials.Facility,
                CultureId = "en"
            };

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(messageXml, app.HostValues, addAccount.Message?.HostValueParentNode);
            messageXml = HostValueTranslator.UpdateRequestWithHostValues(messageXml, applicant.HostValues, addAccount.Message?.HostValueParentNode);

            var processMessageNodeRequest = new ProcessMessageNodeRequest();

            processMessageNodeRequest.CredentialsHeader = credentialsHeader;
            processMessageNodeRequest.request           = GetXmlNode(messageXml);
            repo.ProcessMessageNodeRequest = processMessageNodeRequest;

            var messageResponse = new MessageResponse()
            {
                TraceNumber   = applicationId.ToString(),
                ResponseCode  = "Success",
                AccountNumber = "2001158945704"
            };
            var messageResponseXml = messageResponse.SerializeToXmlString();

            var processMessageNodeResponse = new ProcessMessageNodeResponse()
            {
                ProcessMessageNodeResult = GetXmlNode(messageResponseXml)
            };

            repo.SoapClient.ProcessMessageNode(processMessageNodeRequest).Returns(processMessageNodeResponse);

            // ACT
            var messageNodeResponse = repo.ProcessMessage(messageXml);

            // ASSERT
            Assert.IsNotNull(repo.MessageResponse);
            Assert.AreEqual("Success", repo.MessageResponse.ResponseCode);
        }
Пример #6
0
        public void TestConnection_WhenGivenValidCredentials_ShouldEstablishConnectivityWithCCM()
        {
            // ARRANGE
            _app.IsAddon = true;

            var credentials = new Credentials()
            {
                BaseUrl  = "https://some.bank.or.cu/api",
                Username = "******",
                Password = "******",
                Facility = "validFacility"
            };

            var credentialsHeader = GetCredentialsHeader(credentials);

            var messageXml = _person.Message?.SerializeToXmlString();

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                _app.HostValues.Where(hv => hv.Field1.StartsWith("UpdatePerson.")).ToList(),
                _person.Message?.HostValueParentNode
                );

            var processMessageNodeRequest = new ProcessMessageNodeRequest()
            {
                CredentialsHeader = credentialsHeader,
                request           = GetXmlNode(messageXml)
            };

            var stubServiceRepo = Substitute.For <ISoapRepository>();

            stubServiceRepo.GetProcessMessageNodeRequest(credentialsHeader, messageXml).Returns(processMessageNodeRequest);

            _messageResponse = GetMessageResponseSystemMalfunction();

            stubServiceRepo.UpdatePerson(_person, _app).Returns(_messageResponse);

            var mockBehavior = new TestConnectionBehavior(_app, _userToken, stubServiceRepo);

            mockBehavior.Person = _person;

            // ACT
            var result = mockBehavior.TestConnection("fooServiceUrl", "barUserName", "fooPassword", "barFacility");

            // ASSERT
            Assert.IsTrue(result.Result);
            Assert.AreEqual("SystemMalfunction", mockBehavior.MessageResponse.ResponseCode);
            Assert.AreEqual("Modify Party request failed. Party 99999999 not found.", mockBehavior.MessageResponse.ErrorMessage);
            Assert.IsTrue(mockBehavior.ConnectionEstablished);
        }
Пример #7
0
        public ProcessMessageNodeRequest GetProcessMessageNodeRequest(CredentialsHeader credentialsHeader, string request)
        {
            ProcessMessageNodeRequest processMessageNodeRequest = null;

            using (var tr = new Tracer("LMS.Connector.CCM.Repositories.SoapRepository.GetProcessMessageNodeRequest"))
            {
                var newNode = GetXmlNodeRequest(request);

                processMessageNodeRequest = new ProcessMessageNodeRequest()
                {
                    CredentialsHeader = credentialsHeader,
                    request           = newNode
                };
            }

            return(processMessageNodeRequest);
        }
Пример #8
0
        public void AddOrganization_GivenAnOrganizationThatExistsInDNA_ButNotInCCM_ShouldBeAbleToAddThatOrganizationInCCM()
        {
            // ARRANGE
            var applicant = GetOrganization();
            var lmsPerson = new LmsPerson()
            {
                Applicant = applicant
            };

            var address = applicant.Addresses.FirstOrDefault(a => a.AddressTypeId == 311);
            var phone   = applicant.Phones.FirstOrDefault();

            var credentials = new Credentials()
            {
                BaseUrl  = "https://some.bank.or.cu/api",
                Username = "******",
                Password = "******",
                Facility = "validFacility"
            };

            var credentialsHeader = GetCredentialsHeader(credentials);

            var messageXml = _organization.Message?.SerializeToXmlString();

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                _app.HostValues.Where(hv => hv.Field1.StartsWith("AddOrganization.")).ToList(),
                _organization.Message?.HostValueParentNode
                );

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                applicant.HostValues.Where(hv => hv.Field1.StartsWith("AddOrganization.")).ToList(),
                _organization.Message?.HostValueParentNode
                );

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                address.HostValues.Where(hv => hv.Field1.StartsWith("AddOrganization.")).ToList(),
                _organization.Message?.HostValueParentNode
                );

            messageXml = HostValueTranslator.UpdateRequestWithHostValues(
                messageXml,
                phone.HostValues.Where(hv => hv.Field1.StartsWith("AddOrganization.")).ToList(),
                _organization.Message?.HostValueParentNode
                );

            var processMessageNodeRequest = new ProcessMessageNodeRequest()
            {
                CredentialsHeader = credentialsHeader,
                request           = GetXmlNode(messageXml)
            };

            var stubServiceRepo = Substitute.For <ISoapRepository>();

            stubServiceRepo.GetProcessMessageNodeRequest(credentialsHeader, messageXml).Returns(processMessageNodeRequest);

            _messageResponse = GetMessageResponseSuccess();

            stubServiceRepo.AddOrganization(_organization, _app, applicant, address, phone).Returns(_messageResponse);
            var stubLmsRepo = Substitute.For <ILmsRepository>();

            var mockBehavior = new AddOrganizationBehavior(_app, _userToken, stubServiceRepo, stubLmsRepo);

            mockBehavior.Organization   = _organization;
            mockBehavior.CurrentAddress = address;
            mockBehavior.MainPhone      = phone;

            // ACT
            var result = mockBehavior.AddOrganization(applicant);

            // ASSERT
            Assert.AreEqual(0, result.Messages.Count(m => m.Type == MessageType.Error));
            Assert.IsTrue(result.Result);
            Assert.AreEqual("Success", mockBehavior.MessageResponse.ResponseCode);
        }