Example #1
0
        public async Task Then_ClientCallBack_user_log_entry_is_created()
        {
            _mockHttp.When("https://localhost/callback").Respond(HttpStatusCode.OK);

            var callbackService = new CallbackService(_mockHttp.ToHttpClient(), _loginContext);

            var invitation = new Invitation
            {
                Email       = "*****@*****.**",
                SourceId    = "S0U4C31D",
                CallbackUri = new Uri("https://localhost/callback")
            };

            SystemTime.UtcNow = () => new DateTime(2019, 1, 1, 1, 1, 1);
            var logId = Guid.NewGuid();

            GuidGenerator.NewGuid = () => logId;

            await callbackService.Callback(invitation, "LOGINUSERID");

            var logEntry = _loginContext.UserLogs.Single();

            var expectedLogEntry = new UserLog
            {
                Id        = logId,
                DateTime  = SystemTime.UtcNow(),
                Email     = "*****@*****.**",
                Action    = "Client callback",
                Result    = "Callback OK",
                ExtraData = JsonConvert.SerializeObject(new { CallbackUri = "https://localhost/callback", SourceId = "S0U4C31D", UserId = "LOGINUSERID" })
            };

            logEntry.Should().BeEquivalentTo(expectedLogEntry);
        }
Example #2
0
        public void And_callback_target_does_not_return_200_Then_callback_fields_are_not_updated()
        {
            _mockHttp.When("https://localhost/callback").Respond(HttpStatusCode.BadRequest);

            var invitationId = Guid.NewGuid();
            var invitation   = new Invitation
            {
                Id          = invitationId,
                SourceId    = "S0U4C31D",
                CallbackUri = new Uri("https://localhost/callback")
            };

            _loginContext.Invitations.Add(invitation);
            _loginContext.SaveChanges();

            var callbackService = new CallbackService(_mockHttp.ToHttpClient(), _loginContext);


            SystemTime.UtcNow = () => new DateTime(2018, 2, 27, 9, 0, 0);

            callbackService.Callback(invitation, "LOGINUSERID");

            var updatedInvitation = _loginContext.Invitations.Single(i => i.Id == invitationId);

            updatedInvitation.IsCalledBack.Should().BeFalse();
            updatedInvitation.CallbackDate.Should().BeNull();
        }
Example #3
0
    public void Callback <TReturnValue>(Func <TReturnValue> callback)
    {
        if (callback == null)
        {
            throw new ArgumentNullException(nameof(callback));
        }

        var callbackService = new CallbackService(_originalMethodInfo, _hookServiceFactory, _hookBuilder);

        using (callbackService.Callback(callback))
        {
            _action();
        }
    }
Example #4
0
        public void Then_correct_json_is_posted_to_callback_uri()
        {
            _mockHttp.Expect("https://localhost/callback").WithContent(JsonConvert.SerializeObject(new { sub = "LOGINUSERID", sourceId = "S0U4C31D" }));

            var callbackService = new CallbackService(_mockHttp.ToHttpClient(), _loginContext);

            var invitation = new Invitation
            {
                SourceId    = "S0U4C31D",
                CallbackUri = new Uri("https://localhost/callback")
            };

            callbackService.Callback(invitation, "LOGINUSERID");

            _mockHttp.VerifyNoOutstandingExpectation();
        }
Example #5
0
        public async Task And_callback_target_url_cannot_be_resolved_Then_callback_error_log_entry_inserted()
        {
            _mockHttp.When("https://localhost/callback").Throw(new HttpRequestException());

            var invitationId = Guid.NewGuid();
            var invitation   = new Invitation
            {
                Email       = "*****@*****.**",
                Id          = invitationId,
                SourceId    = "S0U4C31D",
                CallbackUri = new Uri("https://localhost/callback")
            };

            _loginContext.Invitations.Add(invitation);
            _loginContext.SaveChanges();

            var callbackService = new CallbackService(_mockHttp.ToHttpClient(), _loginContext);

            SystemTime.UtcNow = () => new DateTime(2019, 1, 1, 1, 1, 1);
            var logId = Guid.NewGuid();

            GuidGenerator.NewGuid = () => logId;

            await callbackService.Callback(invitation, "LOGINUSERID");

            var logEntry = _loginContext.UserLogs.Single();

            var expectedLogEntry = new UserLog
            {
                Id        = logId,
                DateTime  = SystemTime.UtcNow(),
                Email     = "*****@*****.**",
                Action    = "Client callback",
                Result    = "Callback error",
                ExtraData = JsonConvert.SerializeObject(new { CallbackUri = "https://localhost/callback", SourceId = "S0U4C31D",
                                                              UserId      = "LOGINUSERID",
                                                              Content     = "Exception of type 'System.Net.Http.HttpRequestException' was thrown." })
            };

            logEntry.Should().BeEquivalentTo(expectedLogEntry);
        }