public async Task GetThrowingResource_Fails() { // Arrange var throwingResource = new ThrowingResource(); _dbContext.Add(throwingResource); await _dbContext.SaveChangesAsync(); // Act var(body, response) = await Get($"/api/v1/throwingResources/{throwingResource.Id}"); // Assert AssertEqualStatusCode(HttpStatusCode.InternalServerError, response); var errorDocument = JsonConvert.DeserializeObject <ErrorDocument>(body); Assert.Single(errorDocument.Errors); Assert.Equal(HttpStatusCode.InternalServerError, errorDocument.Errors[0].StatusCode); Assert.Equal("An unhandled error occurred while processing this request.", errorDocument.Errors[0].Title); Assert.Equal("Exception has been thrown by the target of an invocation.", errorDocument.Errors[0].Detail); var stackTraceLines = ((JArray)errorDocument.Errors[0].Meta.Data["stackTrace"]).Select(token => token.Value <string>()); Assert.Contains(stackTraceLines, line => line.Contains( "System.InvalidOperationException: The value for the 'FailsOnSerialize' property is currently unavailable.")); }
public void Inline_Rollback_ResourceGetsRolledBack() { var resource = new ThrowingResource(false); using (var txM = new ResolveScope <ITransactionManager>(_Container)) using (var scope = new ResolveScope <MyService>(_Container)) { scope.Service.VerifyInAmbient(() => { txM.Service.CurrentTransaction.Value.Inner.EnlistVolatile(resource, EnlistmentOptions.EnlistDuringPrepareRequired); txM.Service.CurrentTransaction.Value.Rollback(); }); } Assert.That(resource.WasRolledBack); }