public void YotiClientEngine_PerformAmlCheckAsync_Other() { var keyPair = GetKeyPair(); string sdkId = "fake-sdk-id"; FakeHttpRequester httpRequester = new FakeHttpRequester((httpClient, httpMethod, uri, headers, byteContent) => { return(Task.FromResult(new Response { Success = false, StatusCode = (int)HttpStatusCode.Forbidden, Content = "{Content}" })); }); YotiClientEngine engine = new YotiClientEngine(httpRequester); AmlProfile amlProfile = TestTools.Aml.CreateStandardAmlProfile(); AggregateException aggregateException = Assert.ThrowsException <AggregateException>(() => { AmlResult amlResult = engine.PerformAmlCheck(sdkId, keyPair, YotiConstants.DefaultYotiApiUrl, amlProfile); }); Assert.IsTrue(Exceptions.IsExceptionInAggregateException <AmlException>(aggregateException)); }
public void SuccessfulShareShouldReturnCorrectValues() { const string wrappedReceiptKey = "kyHPjq2+Y48cx+9yS/XzmW09jVUylSdhbP+3Q9Tc9p6bCEnyfa8vj38AIu744RzzE+Dc4qkSF21VfzQKtJVILfOXu5xRc7MYa5k3zWhjiesg/gsrv7J4wDyyBpHIJB8TWXnubYMbSYQJjlsfwyxE9kGe0YI08pRo2Tiht0bfR5Z/YrhAk4UBvjp84D+oyug/1mtGhKphA4vgPhQ9/y2wcInYxju7Q6yzOsXGaRUXR38Tn2YmY9OBgjxiTnhoYJFP1X9YJkHeWMW0vxF1RHxgIVrpf7oRzdY1nq28qzRg5+wC7cjRpS2i/CKUAo0oVG4pbpXsaFhaTewStVC7UFtA77JHb3EnF4HcSWMnK5FM7GGkL9MMXQenh11NZHKPWXpux0nLZ6/vwffXZfsiyTIcFL/NajGN8C/hnNBljoQ+B3fzWbjcq5ueUOPwARZ1y38W83UwMynzkud/iEdHLaZIu4qUCRkfSxJg7Dc+O9/BdiffkOn2GyFmNjVeq754DCUypxzMkjYxokedN84nK13OU4afVyC7t5DDxAK/MqAc69NCBRLqMi5f8BMeOZfMcSWPGC9a2Qu8VgG125TuZT4+wIykUhGyj3Bb2/fdPsxwuKFR+E0uqs0ZKvcv1tkNRRtKYBqTacgGK9Yoehg12cyLrITLdjU1fmIDn4/vrhztN5w="; const string otherPartyProfileContent = "ChCZAib1TBm9Q5GYfFrS1ep9EnAwQB5shpAPWLBgZgFgt6bCG3S5qmZHhrqUbQr3yL6yeLIDwbM7x4nuT/MYp+LDXgmFTLQNYbDTzrEzqNuO2ZPn9Kpg+xpbm9XtP7ZLw3Ep2BCmSqtnll/OdxAqLb4DTN4/wWdrjnFC+L/oQEECu646"; const string rememberMeId = "remember_me_id0123456789"; const string parentRememberMeId = "parent_remember_me_id0123456789"; const string receiptId = "receipt_id_123"; Mock <HttpMessageHandler> handlerMock = SetupMockMessageHandler( HttpStatusCode.OK, "{\"receipt\":{\"wrapped_receipt_key\": \"" + wrappedReceiptKey + "\",\"other_party_profile_content\": \"" + otherPartyProfileContent + "\",\"remember_me_id\":\"" + rememberMeId + "\",\"parent_remember_me_id\":\"" + parentRememberMeId + "\",\"receipt_id\":\"" + receiptId + "\", \"sharing_outcome\":\"SUCCESS\", \"timestamp\":\"2016-01-01T00:00:00Z\"}}"); var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); ActivityDetails activityDetails = engine.GetActivityDetailsAsync(EncryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)).Result; Assert.IsNotNull(activityDetails); Assert.IsNotNull(activityDetails.Profile); Assert.AreEqual(receiptId, activityDetails.ReceiptId); Assert.AreEqual(rememberMeId, activityDetails.RememberMeId); Assert.AreEqual(parentRememberMeId, activityDetails.ParentRememberMeId); Assert.IsNull(activityDetails.ExtraData.AttributeIssuanceDetails); Assert.AreEqual(new DateTime(2016, 1, 1, 0, 0, 0), activityDetails.Timestamp); Assert.IsNotNull(activityDetails.Profile.Selfie); Assert.AreEqual(Convert.ToBase64String(Encoding.UTF8.GetBytes("selfie0123456789")), Convert.ToBase64String(activityDetails.Profile.Selfie.GetValue().GetContent())); Assert.AreEqual("phone_number0123456789", activityDetails.Profile.MobileNumber.GetValue()); Assert.AreEqual(new DateTime(1980, 1, 1), activityDetails.Profile.DateOfBirth.GetValue()); }
public async Task YotiClientEngine_PerformAmlCheckAsync() { var keyPair = GetKeyPair(); string sdkId = "fake-sdk-id"; FakeHttpRequester httpRequester = new FakeHttpRequester((httpClient, httpMethod, uri, headers, byteContent) => { return(Task.FromResult(new Response { Success = true, StatusCode = 200, Content = "{\"on_fraud_list\":true,\"on_pep_list\":false,\"on_watch_list\":false}" })); }); YotiClientEngine engine = new YotiClientEngine(httpRequester); AmlProfile amlProfile = TestTools.Aml.CreateStandardAmlProfile(); AmlResult amlResult = await engine.PerformAmlCheckAsync(sdkId, keyPair, YotiConstants.DefaultYotiApiUrl, amlProfile); Assert.IsNotNull(amlResult); Assert.IsTrue(amlResult.IsOnFraudList()); Assert.IsFalse(amlResult.IsOnPepList()); Assert.IsFalse(amlResult.IsOnWatchList()); }
public void InvalidTokenShouldThrowException(string encryptedToken) { var engine = new YotiClientEngine(new HttpClient()); var profileException = Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => { await engine.GetActivityDetailsAsync(encryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)); }).Result; Assert.IsTrue(profileException.Message.Contains("'encryptedConnectToken' must not be empty or null")); }
public void ShouldAddAuthKeyHeaderToProfileRequest() { Mock <HttpMessageHandler> handlerMock = SetupMockMessageHandler( HttpStatusCode.OK, "{\"receipt\":{\"wrapped_receipt_key\": \"kyHPjq2+Y48cx+9yS/XzmW09jVUylSdhbP+3Q9Tc9p6bCEnyfa8vj38AIu744RzzE+Dc4qkSF21VfzQKtJVILfOXu5xRc7MYa5k3zWhjiesg/gsrv7J4wDyyBpHIJB8TWXnubYMbSYQJjlsfwyxE9kGe0YI08pRo2Tiht0bfR5Z/YrhAk4UBvjp84D+oyug/1mtGhKphA4vgPhQ9/y2wcInYxju7Q6yzOsXGaRUXR38Tn2YmY9OBgjxiTnhoYJFP1X9YJkHeWMW0vxF1RHxgIVrpf7oRzdY1nq28qzRg5+wC7cjRpS2i/CKUAo0oVG4pbpXsaFhaTewStVC7UFtA77JHb3EnF4HcSWMnK5FM7GGkL9MMXQenh11NZHKPWXpux0nLZ6/vwffXZfsiyTIcFL/NajGN8C/hnNBljoQ+B3fzWbjcq5ueUOPwARZ1y38W83UwMynzkud/iEdHLaZIu4qUCRkfSxJg7Dc+O9/BdiffkOn2GyFmNjVeq754DCUypxzMkjYxokedN84nK13OU4afVyC7t5DDxAK/MqAc69NCBRLqMi5f8BMeOZfMcSWPGC9a2Qu8VgG125TuZT4+wIykUhGyj3Bb2/fdPsxwuKFR+E0uqs0ZKvcv1tkNRRtKYBqTacgGK9Yoehg12cyLrITLdjU1fmIDn4/vrhztN5w=\",\"other_party_profile_content\": \"ChCZAib1TBm9Q5GYfFrS1ep9EnAwQB5shpAPWLBgZgFgt6bCG3S5qmZHhrqUbQr3yL6yeLIDwbM7x4nuT/MYp+LDXgmFTLQNYbDTzrEzqNuO2ZPn9Kpg+xpbm9XtP7ZLw3Ep2BCmSqtnll/OdxAqLb4DTN4/wWdrjnFC+L/oQEECu646\",\"remember_me_id\":\"remember_me_id0123456789\",\"parent_remember_me_id\":\"parent_remember_me_id0123456789\",\"receipt_id\":\"receipt_id_123\", \"sharing_outcome\":\"SUCCESS\", \"timestamp\":\"2016-01-01T00:00:00Z\"}}"); var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); ActivityDetails _ = engine.GetActivityDetailsAsync(EncryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)).Result; Assert.IsTrue(_httpRequestMessage.Headers.Contains(Constants.Api.AuthKeyHeader)); }
public void SharingFailureShouldReturnSharingFailure() { Mock <HttpMessageHandler> handlerMock = SetupMockMessageHandler( HttpStatusCode.OK, "{\"session_data\":null,\"receipt\":{\"receipt_id\": null,\"other_party_profile_content\": null,\"policy_uri\":null,\"personal_key\":null,\"remember_me_id\":null, \"sharing_outcome\":\"FAILURE\",\"timestamp\":\"2016-09-23T13:04:11Z\"}}"); var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); var profileException = Assert.ThrowsExceptionAsync <YotiProfileException>(async() => { await engine.GetActivityDetailsAsync(EncryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)); }).Result; Assert.IsTrue(profileException.Message.StartsWith("The share was not successful")); }
public void AmlBadRequestShouldThrowException(HttpStatusCode httpStatusCode) { Mock <HttpMessageHandler> handlerMock = SetupMockMessageHandler( httpStatusCode, "{\"status\":\"bad\""); var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); AmlProfile amlProfile = TestTools.Aml.CreateStandardAmlProfile(); Assert.ThrowsExceptionAsync <AmlException>(async() => { await engine.PerformAmlCheckAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl), amlProfile); }); }
public void EmptyStringParentRememberMeIdShouldBeHandled() { const string wrappedReceiptKey = "kyHPjq2+Y48cx+9yS/XzmW09jVUylSdhbP+3Q9Tc9p6bCEnyfa8vj38AIu744RzzE+Dc4qkSF21VfzQKtJVILfOXu5xRc7MYa5k3zWhjiesg/gsrv7J4wDyyBpHIJB8TWXnubYMbSYQJjlsfwyxE9kGe0YI08pRo2Tiht0bfR5Z/YrhAk4UBvjp84D+oyug/1mtGhKphA4vgPhQ9/y2wcInYxju7Q6yzOsXGaRUXR38Tn2YmY9OBgjxiTnhoYJFP1X9YJkHeWMW0vxF1RHxgIVrpf7oRzdY1nq28qzRg5+wC7cjRpS2i/CKUAo0oVG4pbpXsaFhaTewStVC7UFtA77JHb3EnF4HcSWMnK5FM7GGkL9MMXQenh11NZHKPWXpux0nLZ6/vwffXZfsiyTIcFL/NajGN8C/hnNBljoQ+B3fzWbjcq5ueUOPwARZ1y38W83UwMynzkud/iEdHLaZIu4qUCRkfSxJg7Dc+O9/BdiffkOn2GyFmNjVeq754DCUypxzMkjYxokedN84nK13OU4afVyC7t5DDxAK/MqAc69NCBRLqMi5f8BMeOZfMcSWPGC9a2Qu8VgG125TuZT4+wIykUhGyj3Bb2/fdPsxwuKFR+E0uqs0ZKvcv1tkNRRtKYBqTacgGK9Yoehg12cyLrITLdjU1fmIDn4/vrhztN5w="; const string parentRememberMeId = ""; Mock <HttpMessageHandler> handlerMock = SetupMockMessageHandler( HttpStatusCode.OK, "{\"receipt\":{\"wrapped_receipt_key\": \"" + wrappedReceiptKey + "\",\"parent_remember_me_id\":\"" + parentRememberMeId + "\", \"sharing_outcome\":\"SUCCESS\", \"timestamp\":\"2016-01-01T00:00:00Z\"}}"); var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); ActivityDetails activityDetails = engine.GetActivityDetailsAsync(EncryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)).Result; Assert.AreEqual(string.Empty, activityDetails.ParentRememberMeId); }
public void NullReceiptShouldThrowException() { Mock <HttpMessageHandler> handlerMock = SetupMockMessageHandler( HttpStatusCode.OK, "{\"session_data\":null,\"receipt\":null}"); var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); var profileException = Assert.ThrowsExceptionAsync <YotiProfileException>(async() => { await engine.GetActivityDetailsAsync(EncryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)); }).Result; Assert.IsTrue(profileException.Message.StartsWith("The receipt of the parsed response is null")); }
public void ShareURLNonSuccessStatusCodesShouldThrowException(HttpStatusCode httpStatusCode) { Mock <HttpMessageHandler> handlerMock = SetupMockMessageHandler( httpStatusCode, "{\"status\":\"bad\""); var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); DynamicScenario dynamicScenario = TestTools.ShareUrl.CreateStandardDynamicScenario(); var aggregateException = Assert.ThrowsException <AggregateException>(() => { engine.CreateShareURLAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl), dynamicScenario).Wait(); }); Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException <DynamicShareException>(aggregateException)); }
public async Task CreateShareURLAsyncShouldReturnCorrectValues() { string shareUrl = @"https://yoti.com/shareurl"; string refId = "NpdmVVGC-28356678-c236-4518-9de4-7a93009ccaf0-c5f92f2a-5539-453e-babc-9b06e1d6b7de"; Mock <HttpMessageHandler> handlerMock = SetupMockMessageHandler( HttpStatusCode.OK, "{\"qrcode\":\"" + shareUrl + "\",\"ref_id\":\"" + refId + "\"}"); var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); DynamicScenario dynamicScenario = TestTools.ShareUrl.CreateStandardDynamicScenario(); ShareUrlResult shareUrlResult = await engine.CreateShareURLAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl), dynamicScenario); Assert.IsNotNull(shareUrlResult); Assert.AreEqual(new Uri(shareUrl), shareUrlResult.Url); Assert.AreEqual(refId, shareUrlResult.RefId); }
public void YotiClientEngine_ParseProfile_Success() { var keyPair = GetKeyPair(); string sdkId = "fake-sdk-id"; string wrapped_receipt_key = "kyHPjq2+Y48cx+9yS/XzmW09jVUylSdhbP+3Q9Tc9p6bCEnyfa8vj38AIu744RzzE+Dc4qkSF21VfzQKtJVILfOXu5xRc7MYa5k3zWhjiesg/gsrv7J4wDyyBpHIJB8TWXnubYMbSYQJjlsfwyxE9kGe0YI08pRo2Tiht0bfR5Z/YrhAk4UBvjp84D+oyug/1mtGhKphA4vgPhQ9/y2wcInYxju7Q6yzOsXGaRUXR38Tn2YmY9OBgjxiTnhoYJFP1X9YJkHeWMW0vxF1RHxgIVrpf7oRzdY1nq28qzRg5+wC7cjRpS2i/CKUAo0oVG4pbpXsaFhaTewStVC7UFtA77JHb3EnF4HcSWMnK5FM7GGkL9MMXQenh11NZHKPWXpux0nLZ6/vwffXZfsiyTIcFL/NajGN8C/hnNBljoQ+B3fzWbjcq5ueUOPwARZ1y38W83UwMynzkud/iEdHLaZIu4qUCRkfSxJg7Dc+O9/BdiffkOn2GyFmNjVeq754DCUypxzMkjYxokedN84nK13OU4afVyC7t5DDxAK/MqAc69NCBRLqMi5f8BMeOZfMcSWPGC9a2Qu8VgG125TuZT4+wIykUhGyj3Bb2/fdPsxwuKFR+E0uqs0ZKvcv1tkNRRtKYBqTacgGK9Yoehg12cyLrITLdjU1fmIDn4/vrhztN5w="; string other_party_profile_content = "ChCZAib1TBm9Q5GYfFrS1ep9EnAwQB5shpAPWLBgZgFgt6bCG3S5qmZHhrqUbQr3yL6yeLIDwbM7x4nuT/MYp+LDXgmFTLQNYbDTzrEzqNuO2ZPn9Kpg+xpbm9XtP7ZLw3Ep2BCmSqtnll/OdxAqLb4DTN4/wWdrjnFC+L/oQEECu646"; string remember_me_id = "remember_me_id0123456789"; FakeHttpRequester httpRequester = new FakeHttpRequester((httpClient, httpMethod, uri, headers, byteContent) => { return(Task.FromResult(new Response { Success = true, StatusCode = 200, Content = "{\"receipt\":{\"wrapped_receipt_key\": \"" + wrapped_receipt_key + "\",\"other_party_profile_content\": \"" + other_party_profile_content + "\",\"remember_me_id\":\"" + remember_me_id + "\", \"sharing_outcome\":\"SUCCESS\"}}" })); }); YotiClientEngine engine = new YotiClientEngine(httpRequester); var activityDetails = engine.GetActivityDetails(_encryptedToken, sdkId, keyPair, YotiConstants.DefaultYotiApiUrl); Assert.IsNotNull(activityDetails); Assert.AreEqual(ActivityOutcome.Success, activityDetails.Outcome); Assert.IsNotNull(activityDetails.UserProfile); Assert.IsNotNull(activityDetails.Profile); Assert.AreEqual(remember_me_id, activityDetails.UserProfile.Id); Assert.AreEqual(remember_me_id, activityDetails.Profile.Id); Assert.IsNotNull(activityDetails.UserProfile.Selfie); Assert.AreEqual(Convert.ToBase64String(Encoding.UTF8.GetBytes("selfie0123456789")), Convert.ToBase64String(activityDetails.UserProfile.Selfie.Data)); Assert.IsNotNull(activityDetails.Profile.Selfie); Assert.AreEqual(Convert.ToBase64String(Encoding.UTF8.GetBytes("selfie0123456789")), Convert.ToBase64String(activityDetails.Profile.Selfie.GetImage().Data)); Assert.AreEqual("phone_number0123456789", activityDetails.UserProfile.MobileNumber); Assert.AreEqual("phone_number0123456789", activityDetails.Profile.MobileNumber.GetValue()); Assert.AreEqual(new DateTime(1980, 1, 1), activityDetails.UserProfile.DateOfBirth); Assert.AreEqual(new DateTime(1980, 1, 1), (DateTime)activityDetails.Profile.DateOfBirth.GetValue()); }
public async Task PerformAmlCheckAsyncShouldReturnCorrectValues() { Mock <HttpMessageHandler> handlerMock = SetupMockMessageHandler( HttpStatusCode.OK, "{\"on_fraud_list\":true,\"on_pep_list\":false,\"on_watch_list\":false}"); var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); AmlProfile amlProfile = TestTools.Aml.CreateStandardAmlProfile(); AmlResult amlResult = await engine.PerformAmlCheckAsync( SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl), amlProfile); Assert.IsNotNull(amlResult); Assert.IsTrue(amlResult.IsOnFraudList()); Assert.IsFalse(amlResult.IsOnPepList()); Assert.IsFalse(amlResult.IsOnWatchList()); }
public void YotiClientEngine_TokenDecodedSuccessfully() { var keyPair = GetKeyPair(); string sdkId = "fake-sdk-id"; FakeHttpRequester httpRequester = new FakeHttpRequester((uri, headers) => { Assert.AreEqual("/api/v1/profile/" + token, uri.AbsolutePath); return(Task.FromResult(new Response { Success = false, StatusCode = 500 })); }); YotiClientEngine engine = new YotiClientEngine(httpRequester); engine.GetActivityDetails(encryptedToken, sdkId, keyPair); }
public void YotiClientEngine_Http404_ReturnsProfileNotFound() { var keyPair = GetKeyPair(); string sdkId = "fake-sdk-id"; FakeHttpRequester httpRequester = new FakeHttpRequester((uri, headers) => { return(Task.FromResult(new Response { Success = false, StatusCode = 404 })); }); YotiClientEngine engine = new YotiClientEngine(httpRequester); var activityDetails = engine.GetActivityDetails(encryptedToken, sdkId, keyPair); Assert.IsNotNull(activityDetails); Assert.AreEqual(ActivityOutcome.ProfileNotFound, activityDetails.Outcome); }
public void YotiClientEngine_HttpFailure_ReturnsFailure() { var keyPair = GetKeyPair(); string sdkId = "fake-sdk-id"; FakeHttpRequester httpRequester = new FakeHttpRequester((httpClient, httpMethod, uri, headers, byteContent) => { return(Task.FromResult(new Response { Success = false, StatusCode = 500 })); }); YotiClientEngine engine = new YotiClientEngine(httpRequester); var activityDetails = engine.GetActivityDetails(_encryptedToken, sdkId, keyPair, YotiConstants.DefaultYotiApiUrl); Assert.IsNotNull(activityDetails); Assert.AreEqual(ActivityOutcome.Failure, activityDetails.Outcome); }
public void YotiClientEngine_TokenDecodedSuccessfully() { var keyPair = GetKeyPair(); string sdkId = "fake-sdk-id"; FakeHttpRequester httpRequester = new FakeHttpRequester((httpClient, httpMethod, uri, headers, byteContent) => { Assert.AreEqual("/api/v1/profile/" + _token, uri.AbsolutePath); return(Task.FromResult(new Response { Success = false, StatusCode = 500 })); }); YotiClientEngine engine = new YotiClientEngine(httpRequester); ActivityDetails activityDetails = engine.GetActivityDetails(_encryptedToken, sdkId, keyPair, YotiConstants.DefaultYotiApiUrl); Assert.IsNotNull(activityDetails.Outcome); }
public void YotiClientEngine_SharingFailure_ReturnsFailure() { var keyPair = GetKeyPair(); string sdkId = "fake-sdk-id"; FakeHttpRequester httpRequester = new FakeHttpRequester((uri, headers) => { return(Task.FromResult(new Response { Success = true, StatusCode = 200, Content = "{\"session_data\":null,\"receipt\":{\"receipt_id\": null,\"other_party_profile_content\": null,\"policy_uri\":null,\"personal_key\":null,\"remember_me_id\":null, \"sharing_outcome\":\"FAILURE\",\"timestamp\":\"2016-09-23T13:04:11Z\"}}" })); }); YotiClientEngine engine = new YotiClientEngine(httpRequester); var activityDetails = engine.GetActivityDetails(encryptedToken, sdkId, keyPair); Assert.IsNotNull(activityDetails); Assert.AreEqual(ActivityOutcome.Failure, activityDetails.Outcome); }