public void TestPostLegalEntityPrincipalCreateRequestManualReview()
 {
     legalEntityId = "201820";
     request       = new legalEntityPrincipalCreateRequest
     {
         principal = new legalEntityPrincipal
         {
             title        = "Mr.",
             firstName    = "Jon",
             lastName     = "Snow",
             emailAddress = "*****@*****.**",
             dateOfBirth  = new DateTime(1980, 10, 12),
             address      = new principalAddress
             {
                 streetAddress1 = "p2 street address 1",
                 streetAddress2 = "p2 street address 2",
                 city           = "Boston",
                 stateProvince  = "MA",
                 postalCode     = "01892",
                 countryCode    = "USA"
             },
             stakePercent = 31,
         }
     };
     response = request.PostLegalEntityPrincipalCreateRequest(legalEntityId);
     Assert.AreEqual(legalEntityId, response.legalEntityId);
     Assert.NotNull(response.principal.principalId);
     Assert.AreEqual("Jon", response.principal.firstName);
     Assert.AreEqual("Snow", response.principal.lastName);
     Assert.AreEqual(20, response.principal.responseCode);
     Assert.AreEqual("Manual Review", response.principal.responseDescription);
 }
        public void TestPostLegalEntityPrincipalCreateRequest()
        {
            legalEntityId = "2018";
            var xmlReq = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
                         "<legalEntityPrincipalCreateRequest xmlns=\"http://payfac.vantivcnp.com/api/merchant/onboard\">" +
                         "<principal>" +
                         "<title>Mr.</title>" +
                         "<firstName>Jon</firstName>" +
                         "<lastName>Snow</lastName>" +
                         "<emailAddress>[email protected]</emailAddress>" +
                         "<ssn>123450015</ssn>" +
                         "<dateOfBirth>1980-10-12</dateOfBirth>" +
                         "<address>" +
                         "<streetAddress1>p2 street address 1</streetAddress1>" +
                         "<streetAddress2>p2 street address 2</streetAddress2>" +
                         "<city>Boston</city>" +
                         "<stateProvince>MA</stateProvince>" +
                         "<postalCode>01892</postalCode>" +
                         "<countryCode>USA</countryCode>" +
                         "</address>" +
                         "<stakePercent>31</stakePercent>" +
                         "</principal>" +
                         "<sdkVersion>" + Versions.SDK_VERSION + "</sdkVersion>" +
                         "<language>" + Versions.LANGUAGE + "</language>" +
                         "</legalEntityPrincipalCreateRequest>";

            var expectedResponse = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
                                   "<principalCreateResponse xmlns=\"http://payfac.vantivcnp.com/api/merchant/onboard\">" +
                                   "    <legalEntityId>2018</legalEntityId>" +
                                   "    <principal>" +
                                   "        <principalId>8</principalId>" +
                                   "        <firstName>Jon</firstName>" +
                                   "        <lastName>Snow</lastName>" +
                                   "        <responseCode>10</responseCode>" +
                                   "        <responseDescription>Approved</responseDescription>" +
                                   "    </principal>" +
                                   "    <transactionId>9251158686</transactionId>" +
                                   "</principalCreateResponse>";

            var mock = new Mock <Communication>();

            mock.Setup(Communication => Communication.Post("/legalentity/2018/principal", xmlReq)).Returns(expectedResponse);

            Communication communicationMock = mock.Object;

            request.Communication = communicationMock;
            response = request.PostLegalEntityPrincipalCreateRequest(legalEntityId);

            Assert.AreEqual(legalEntityId, response.legalEntityId);
            Assert.NotNull(response.principal);
            Assert.NotNull(response.transactionId);
        }
        public void TestDeserializeResponse()
        {
            var expectedResponse = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
                                   "<principalCreateResponse xmlns=\"http://payfac.vantivcnp.com/api/merchant/onboard\">" +
                                   "    <legalEntityId>2018</legalEntityId>" +
                                   "    <principal>" +
                                   "        <principalId>8</principalId>" +
                                   "        <firstName>Jon</firstName>" +
                                   "        <lastName>Snow</lastName>" +
                                   "        <responseCode>10</responseCode>" +
                                   "        <responseDescription>Approved</responseDescription>" +
                                   "    </principal>" +
                                   "    <transactionId>9251158686</transactionId>" +
                                   "</principalCreateResponse>";
            principalCreateResponse testOutput = PayFacUtils.DeserializeResponse <principalCreateResponse>(expectedResponse);

            Assert.AreEqual(testOutput.transactionId, 9251158686);
            Assert.AreEqual(testOutput.legalEntityId, "2018");
        }
 public void TestPostLegalEntityPrincipalCreateRequestErrorResponse400()
 {
     legalEntityId = "201400";
     request       = new legalEntityPrincipalCreateRequest
     {
         principal = new legalEntityPrincipal
         {
             title        = "Mr.",
             firstName    = "Jon",
             lastName     = "Snow",
             emailAddress = "*****@*****.**",
             dateOfBirth  = new DateTime(1980, 10, 12),
             address      = new principalAddress
             {
                 streetAddress1 = "p2 street address 1",
                 streetAddress2 = "p2 street address 2",
                 city           = "Boston",
                 stateProvince  = "MA",
                 postalCode     = "01892",
                 countryCode    = "USA"
             },
             stakePercent = 31,
         }
     };
     try
     {
         response = request.PostLegalEntityPrincipalCreateRequest(legalEntityId);
         Assert.Fail("PayfacWebException expected, None thrown");
     }
     catch (PayFacWebException ex)
     {
         errorResponse errorResponse = ex.errorResponse;
         Assert.NotNull(errorResponse.transactionId);
         Assert.AreEqual("Could not find requested object.", errorResponse.errors[0]);
     }
 }
 public void TestGetLegalEntityRetrievalRequestErrorResponse500()
 {
     legalEntityId = "201500";
     request       = new legalEntityPrincipalCreateRequest
     {
         principal = new legalEntityPrincipal
         {
             title        = "Mr.",
             firstName    = "Jon",
             lastName     = "Snow",
             emailAddress = "*****@*****.**",
             dateOfBirth  = new DateTime(1980, 10, 12),
             address      = new principalAddress
             {
                 streetAddress1 = "p2 street address 1",
                 streetAddress2 = "p2 street address 2",
                 city           = "Boston",
                 stateProvince  = "MA",
                 postalCode     = "01892",
                 countryCode    = "USA"
             },
             stakePercent = 31,
         }
     };
     try
     {
         response = request.PostLegalEntityPrincipalCreateRequest(legalEntityId);
         Assert.Fail("PayfacWebException expected, None thrown");
     }
     catch (PayFacWebException ex)
     {
         errorResponse errorResponse = ex.errorResponse;
         Assert.NotNull(errorResponse.transactionId);
         Assert.AreEqual("Internal Error. This error has already been escalated to Vantiv for resolution. Please contact support with questions.", errorResponse.errors[0]);
     }
 }
 public void TestGetLegalEntityRetrievalRequestErrorResponse401()
 {
     legalEntityId = "201401";
     request       = new legalEntityPrincipalCreateRequest
     {
         principal = new legalEntityPrincipal
         {
             title        = "Mr.",
             firstName    = "Jon",
             lastName     = "Snow",
             emailAddress = "*****@*****.**",
             dateOfBirth  = new DateTime(1980, 10, 12),
             address      = new principalAddress
             {
                 streetAddress1 = "p2 street address 1",
                 streetAddress2 = "p2 street address 2",
                 city           = "Boston",
                 stateProvince  = "MA",
                 postalCode     = "01892",
                 countryCode    = "USA"
             },
             stakePercent = 31,
         }
     };
     try
     {
         response = request.PostLegalEntityPrincipalCreateRequest(legalEntityId);
         Assert.Fail("PayfacWebException expected, None thrown");
     }
     catch (PayFacWebException ex)
     {
         errorResponse errorResponse = ex.errorResponse;
         Assert.NotNull(errorResponse.transactionId);
         Assert.AreEqual("You are not authorized to access this resource. Please check your credentials.", errorResponse.errors[0]);
     }
 }