public async Task CanCallAuthorizeAsync() { var context = new SubmitContext(new EmptyApi(serviceProvider), new ChangeSet()); var cancellationToken = CancellationToken.None; var testClass = new ConventionBasedChangeSetItemAuthorizer(typeof(EmptyApi)); var result = await testClass.AuthorizeAsync(context, dataModificationItem, cancellationToken); result.Should().BeTrue("AuthorizeAsync should be true by default."); }
public async Task CannotCallAuthorizeAsyncWithNullContext() { var testClass = new ConventionBasedChangeSetItemAuthorizer(typeof(EmptyApi)); Func <Task> act = () => testClass.AuthorizeAsync( default(SubmitContext), dataModificationItem, CancellationToken.None); await act.Should().ThrowAsync <ArgumentNullException>(); }
public async Task AuthorizeAsyncInvokesConventionMethod() { var api = new NoPermissionApi(serviceProvider); var context = new SubmitContext(api, new ChangeSet()); var cancellationToken = CancellationToken.None; var testClass = new ConventionBasedChangeSetItemAuthorizer(typeof(NoPermissionApi)); var result = await testClass.AuthorizeAsync(context, dataModificationItem, 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 testClass = new ConventionBasedChangeSetItemAuthorizer(typeof(IncorrectArgumentsApi)); var context = new SubmitContext(api, new ChangeSet()); var cancellationToken = CancellationToken.None; var result = await testClass.AuthorizeAsync(context, dataModificationItem, 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 testClass = new ConventionBasedChangeSetItemAuthorizer(typeof(WrongReturnTypeApi)); var context = new SubmitContext(api, new ChangeSet()); var cancellationToken = CancellationToken.None; var result = await testClass.AuthorizeAsync(context, dataModificationItem, 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 testClass = new ConventionBasedChangeSetItemAuthorizer(typeof(PrivateMethodApi)); var context = new SubmitContext(api, new ChangeSet()); var cancellationToken = CancellationToken.None; var result = await testClass.AuthorizeAsync(context, dataModificationItem, 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 async Task CannotCallAuthorizeAsyncWithNullItem() { var testClass = new ConventionBasedChangeSetItemAuthorizer(typeof(EmptyApi)); Func <Task> act = () => testClass.AuthorizeAsync(new SubmitContext(new EmptyApi(serviceProvider), new ChangeSet()), default(ChangeSetItem), CancellationToken.None); await act.Should().ThrowAsync <ArgumentNullException>(); }