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); }
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(); }
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(); } }
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(); }
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); }