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));
        }
예제 #2
0
        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());
        }
예제 #4
0
        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"));
        }
예제 #5
0
        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));
        }
예제 #6
0
        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"));
        }
예제 #7
0
        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);
            });
        }
예제 #8
0
        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);
        }
예제 #9
0
        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"));
        }
예제 #10
0
        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));
        }
예제 #11
0
        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());
        }
예제 #13
0
        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());
        }
예제 #14
0
        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);
        }
예제 #15
0
        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);
        }
예제 #18
0
        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);
        }