예제 #1
0
            public async Task UponSuccess_KeepsTrackOfKnownUser()
            {
                var requestBuilder = A.Fake <IHttpRequestMessageBuilder>();

                A.CallTo(() => _webRequestSender.NewRequest(A <HttpMethod> ._, A <Uri> ._)).Returns(requestBuilder);
                var httpRequestMessage = new HttpRequestMessage();

                A.CallTo(() => requestBuilder.Build()).Returns(httpRequestMessage);
                var googleUserJson      = "{I am the user}";
                var httpResponseMessage = new HttpResponseMessage {
                    Content = new StringContent(googleUserJson)
                };

                A.CallTo(() => _webRequestSender.SendRequestAsync(httpRequestMessage)).Returns(httpResponseMessage);
                var googleUser = new GoogleUserDataRecord {
                    Id = "CorrelationId123", Given_name = "John", Family_name = "Snow"
                };

                A.CallTo(() => _jsonSerializer.Deserialize <GoogleUserDataRecord>(googleUserJson)).Returns(googleUser);

                var knownUser = new KnownUserRecord {
                    UniqueId = Guid.NewGuid(), ExternalCorrelationId = googleUser.Id, FirstName = googleUser.Given_name, LastName = googleUser.Family_name
                };

                A.CallTo(() => _knownUserFromGoogleUserBuilder.BuildKnownUser(googleUser)).Returns(knownUser);

                await _sut.ActivateGooglePlusUser(_accessToken);

                A.CallTo(() => _knownUserDataService.AddOrUpdateKnownUser(knownUser)).MustHaveHappened();
            }
예제 #2
0
 public override void SetUp()
 {
     base.SetUp();
     _googleUser = new GoogleUserDataRecord {
         Id          = "G000123",
         Given_name  = "Pol",
         Family_name = "Tak"
     };
 }
예제 #3
0
            public async Task SendsToTheCorrectGoogleApiUrl()
            {
                var googleUser = new GoogleUserDataRecord {
                    Id = "CorrelationId123"
                };

                A.CallTo(() => _jsonSerializer.Deserialize <GoogleUserDataRecord>(A <string> ._)).Returns(googleUser);
                var expectedUri = new Uri("https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=" + _accessToken, UriKind.Absolute);
                await _sut.ActivateGooglePlusUser(_accessToken);

                A.CallTo(() => _webRequestSender.NewRequest(HttpMethod.Get, expectedUri)).MustHaveHappened();
            }
        public KnownUserRecord BuildKnownUser(GoogleUserDataRecord googleUser)
        {
            if (googleUser == null)
            {
                throw new ArgumentNullException(nameof(googleUser));
            }

            if (string.IsNullOrEmpty(googleUser.Id))
            {
                throw new InvalidOperationException("The specified Google user does not have a correlation id, which is required.");
            }

            return(new KnownUserRecord {
                UniqueId = Guid.NewGuid(),
                ExternalCorrelationId = googleUser.Id,
                Type = 'G',
                FirstName = googleUser.Given_name,
                LastName = googleUser.Family_name,
            });
        }
예제 #5
0
            public async Task UponSuccess_ReturnsCorrelationIdForGoogleUser()
            {
                var requestBuilder = A.Fake <IHttpRequestMessageBuilder>();

                A.CallTo(() => _webRequestSender.NewRequest(A <HttpMethod> ._, A <Uri> ._)).Returns(requestBuilder);
                var httpRequestMessage = new HttpRequestMessage();

                A.CallTo(() => requestBuilder.Build()).Returns(httpRequestMessage);
                var googleUserJson      = "{I am the user}";
                var httpResponseMessage = new HttpResponseMessage {
                    Content = new StringContent(googleUserJson)
                };

                A.CallTo(() => _webRequestSender.SendRequestAsync(httpRequestMessage)).Returns(httpResponseMessage);
                var googleUser = new GoogleUserDataRecord {
                    Id = "CorrelationId123"
                };

                A.CallTo(() => _jsonSerializer.Deserialize <GoogleUserDataRecord>(googleUserJson)).Returns(googleUser);

                var actual = await _sut.ActivateGooglePlusUser(_accessToken);

                actual.Should().Be(googleUser.Id);
            }