public async Task GetFormToken_FormFieldIsEmpty_ReturnsNull() { // Arrange var mockHttpContext = new Mock <HttpContext>(); var requestContext = new Mock <HttpRequest>(); var formCollection = new Mock <IFormCollection>(); formCollection.Setup(f => f["form-field-name"]).Returns(string.Empty); requestContext.Setup(o => o.ReadFormAsync(CancellationToken.None)) .Returns(Task.FromResult(formCollection.Object)); mockHttpContext.Setup(o => o.Request) .Returns(requestContext.Object); var options = new AntiforgeryOptions() { FormFieldName = "form-field-name", }; var tokenStore = new DefaultAntiforgeryTokenStore( optionsAccessor: new TestOptionsManager(options), tokenSerializer: null); // Act var token = await tokenStore.GetFormTokenAsync(mockHttpContext.Object); // Assert Assert.Null(token); }
public async Task GetFormToken_FormFieldIsInvalid_PropagatesException() { // Arrange var formCollection = new Mock <IFormCollection>(); formCollection.Setup(f => f["form-field-name"]).Returns("invalid-value"); var requestContext = new Mock <HttpRequest>(); requestContext.Setup(o => o.ReadFormAsync(CancellationToken.None)) .Returns(Task.FromResult(formCollection.Object)); var mockHttpContext = new Mock <HttpContext>(); mockHttpContext.Setup(o => o.Request) .Returns(requestContext.Object); var expectedException = new InvalidOperationException("some exception"); var mockSerializer = new Mock <IAntiforgeryTokenSerializer>(); mockSerializer.Setup(o => o.Deserialize("invalid-value")) .Throws(expectedException); var options = new AntiforgeryOptions() { FormFieldName = "form-field-name", }; var tokenStore = new DefaultAntiforgeryTokenStore( optionsAccessor: new TestOptionsManager(options), tokenSerializer: mockSerializer.Object); // Act & assert var exception = await Assert.ThrowsAsync <InvalidOperationException>( async() => await tokenStore.GetFormTokenAsync(mockHttpContext.Object)); Assert.Same(expectedException, exception); }
public async Task GetFormToken_FormFieldIsValid_ReturnsToken() { // Arrange var expectedToken = new AntiforgeryToken(); // Arrange var mockHttpContext = new Mock <HttpContext>(); var requestContext = new Mock <HttpRequest>(); var formCollection = new Mock <IFormCollection>(); formCollection.Setup(f => f["form-field-name"]).Returns("valid-value"); requestContext.Setup(o => o.ReadFormAsync(CancellationToken.None)) .Returns(Task.FromResult(formCollection.Object)); mockHttpContext.Setup(o => o.Request) .Returns(requestContext.Object); var mockSerializer = new Mock <IAntiforgeryTokenSerializer>(); mockSerializer.Setup(o => o.Deserialize("valid-value")) .Returns(expectedToken); var options = new AntiforgeryOptions() { FormFieldName = "form-field-name", }; var tokenStore = new DefaultAntiforgeryTokenStore( optionsAccessor: new TestOptionsManager(options), tokenSerializer: mockSerializer.Object); // Act var retVal = await tokenStore.GetFormTokenAsync(mockHttpContext.Object); // Assert Assert.Same(expectedToken, retVal); }
public async Task GetFormToken_FormFieldIsValid_ReturnsToken() { // Arrange var expectedToken = new AntiforgeryToken(); // Arrange var mockHttpContext = new Mock<HttpContext>(); var requestContext = new Mock<HttpRequest>(); var formCollection = new Mock<IFormCollection>(); formCollection.Setup(f => f["form-field-name"]).Returns("valid-value"); requestContext.Setup(o => o.ReadFormAsync(CancellationToken.None)) .Returns(Task.FromResult(formCollection.Object)); mockHttpContext.Setup(o => o.Request) .Returns(requestContext.Object); var mockSerializer = new Mock<IAntiforgeryTokenSerializer>(); mockSerializer.Setup(o => o.Deserialize("valid-value")) .Returns(expectedToken); var options = new AntiforgeryOptions() { FormFieldName = "form-field-name", }; var tokenStore = new DefaultAntiforgeryTokenStore( optionsAccessor: new TestOptionsManager(options), tokenSerializer: mockSerializer.Object); // Act var retVal = await tokenStore.GetFormTokenAsync(mockHttpContext.Object); // Assert Assert.Same(expectedToken, retVal); }
public async Task GetFormToken_FormFieldIsInvalid_PropagatesException() { // Arrange var formCollection = new Mock<IFormCollection>(); formCollection.Setup(f => f["form-field-name"]).Returns("invalid-value"); var requestContext = new Mock<HttpRequest>(); requestContext.Setup(o => o.ReadFormAsync(CancellationToken.None)) .Returns(Task.FromResult(formCollection.Object)); var mockHttpContext = new Mock<HttpContext>(); mockHttpContext.Setup(o => o.Request) .Returns(requestContext.Object); var expectedException = new InvalidOperationException("some exception"); var mockSerializer = new Mock<IAntiforgeryTokenSerializer>(); mockSerializer.Setup(o => o.Deserialize("invalid-value")) .Throws(expectedException); var options = new AntiforgeryOptions() { FormFieldName = "form-field-name", }; var tokenStore = new DefaultAntiforgeryTokenStore( optionsAccessor: new TestOptionsManager(options), tokenSerializer: mockSerializer.Object); // Act & assert var exception = await Assert.ThrowsAsync<InvalidOperationException>( async () => await tokenStore.GetFormTokenAsync(mockHttpContext.Object)); Assert.Same(expectedException, exception); }
public async Task GetFormToken_FormFieldIsEmpty_ReturnsNull() { // Arrange var mockHttpContext = new Mock<HttpContext>(); var requestContext = new Mock<HttpRequest>(); var formCollection = new Mock<IFormCollection>(); formCollection.Setup(f => f["form-field-name"]).Returns(string.Empty); requestContext.Setup(o => o.ReadFormAsync(CancellationToken.None)) .Returns(Task.FromResult(formCollection.Object)); mockHttpContext.Setup(o => o.Request) .Returns(requestContext.Object); var options = new AntiforgeryOptions() { FormFieldName = "form-field-name", }; var tokenStore = new DefaultAntiforgeryTokenStore( optionsAccessor: new TestOptionsManager(options), tokenSerializer: null); // Act var token = await tokenStore.GetFormTokenAsync(mockHttpContext.Object); // Assert Assert.Null(token); }