public async Task CannotCallAuthorizeAsyncWithNullContext() { var testClass = new ConventionBasedOperationAuthorizer(typeof(EmptyApi)); Func <Task> act = () => testClass.AuthorizeAsync( default(OperationContext), CancellationToken.None); await act.Should().ThrowAsync <ArgumentNullException>(); }
public async Task CanCallAuthorizeAsync() { var context = new OperationContext( new EmptyApi(serviceProvider), s => new object(), "Test", true, null); var cancellationToken = CancellationToken.None; var testClass = new ConventionBasedOperationAuthorizer(typeof(EmptyApi)); var result = await testClass.AuthorizeAsync(context, cancellationToken); result.Should().BeTrue("AuthorizeAsync should be true by default."); }
public async Task AuthorizeAsyncInvokesConventionMethod() { var api = new NoPermissionApi(serviceProvider); var context = new OperationContext( api, s => new object(), "Test", true, null); var cancellationToken = CancellationToken.None; var testClass = new ConventionBasedOperationAuthorizer(typeof(NoPermissionApi)); var result = await testClass.AuthorizeAsync(context, cancellationToken); result.Should().BeFalse("AuthorizeAsync should invoke CanInsertObject."); api.InvocationCount.Should().Be(1); }
public async Task AuthorizeAsyncWithWrongNumberOfArguments() { testTraceListener.Clear(); var api = new IncorrectArgumentsApi(serviceProvider); var context = new OperationContext( api, s => new object(), "Test", true, null); var cancellationToken = CancellationToken.None; var testClass = new ConventionBasedOperationAuthorizer(typeof(IncorrectArgumentsApi)); var result = await testClass.AuthorizeAsync(context, cancellationToken); result.Should().BeTrue("AuthorizeAsync should return true, because the api type is incorrect."); testTraceListener.Messages.Should().Contain("incorrect number of arguments"); api.InvocationCount.Should().Be(0); }
public async Task AuthorizeAsyncWithWrongReturnType() { testTraceListener.Clear(); var api = new WrongReturnTypeApi(serviceProvider); var context = new OperationContext( api, s => new object(), "Test", true, null); var cancellationToken = CancellationToken.None; var testClass = new ConventionBasedOperationAuthorizer(typeof(WrongReturnTypeApi)); var result = await testClass.AuthorizeAsync(context, cancellationToken); result.Should().BeTrue("AuthorizeAsync should return true, because CanInsertObject returns an int."); testTraceListener.Messages.Should().Contain("does not return a boolean value"); api.InvocationCount.Should().Be(0); }
public async Task AuthorizeAsyncWithPrivateMethod() { testTraceListener.Clear(); var api = new PrivateMethodApi(serviceProvider); var context = new OperationContext( api, s => new object(), "Test", true, null); var cancellationToken = CancellationToken.None; var testClass = new ConventionBasedOperationAuthorizer(typeof(PrivateMethodApi)); var result = await testClass.AuthorizeAsync(context, cancellationToken); result.Should().BeTrue("AuthorizeAsync should return true, because CanInsertObject is private."); testTraceListener.Messages.Should().Contain("inaccessible due to its protection level"); api.InvocationCount.Should().Be(0); }
public void CanConstruct() { var instance = new ConventionBasedOperationAuthorizer(typeof(EmptyApi)); instance.Should().NotBeNull(); }