3 changed files with 80 additions and 2 deletions
@ -0,0 +1,71 @@ |
|||||
|
using Microsoft.AspNetCore.Mvc.Testing; |
||||
|
using Microsoft.eShopWeb.FunctionalTests.Web.Controllers; |
||||
|
using Microsoft.eShopWeb.Web; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Net; |
||||
|
using System.Net.Http; |
||||
|
using System.Text.RegularExpressions; |
||||
|
using System.Threading.Tasks; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace Microsoft.eShopWeb.FunctionalTests.WebRazorPages |
||||
|
{ |
||||
|
public class BasketPageCheckout : IClassFixture<CustomWebApplicationFactory<Startup>> |
||||
|
{ |
||||
|
public BasketPageCheckout(CustomWebApplicationFactory<Startup> factory) |
||||
|
{ |
||||
|
Client = factory.CreateClient(new WebApplicationFactoryClientOptions |
||||
|
{ |
||||
|
AllowAutoRedirect = true |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
public HttpClient Client { get; } |
||||
|
|
||||
|
private string GetRequestVerificationToken(string input) |
||||
|
{ |
||||
|
string regexpression = @"name=""__RequestVerificationToken"" type=""hidden"" value=""([-A-Za-z0-9+=/\\_]+?)"""; |
||||
|
var regex = new Regex(regexpression); |
||||
|
var match = regex.Match(input); |
||||
|
return match.Groups.LastOrDefault().Value; |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public async Task RedirectsToLoginIfNotAuthenticated() |
||||
|
{ |
||||
|
// Arrange & Act
|
||||
|
|
||||
|
// Load Home Page
|
||||
|
var response = await Client.GetAsync("/"); |
||||
|
response.EnsureSuccessStatusCode(); |
||||
|
var stringResponse1 = await response.Content.ReadAsStringAsync(); |
||||
|
|
||||
|
string token = GetRequestVerificationToken(stringResponse1); |
||||
|
|
||||
|
// Add Item to Cart
|
||||
|
var keyValues = new List<KeyValuePair<string, string>>(); |
||||
|
keyValues.Add(new KeyValuePair<string, string>("id", "2")); |
||||
|
keyValues.Add(new KeyValuePair<string, string>("name", "shirt")); |
||||
|
|
||||
|
keyValues.Add(new KeyValuePair<string, string>("price", "19.49")); |
||||
|
keyValues.Add(new KeyValuePair<string, string>("__RequestVerificationToken", token)); |
||||
|
|
||||
|
var formContent = new FormUrlEncodedContent(keyValues); |
||||
|
|
||||
|
var postResponse = await Client.PostAsync("/basket/index", formContent); |
||||
|
postResponse.EnsureSuccessStatusCode(); |
||||
|
var stringResponse = await postResponse.Content.ReadAsStringAsync(); |
||||
|
|
||||
|
// Assert
|
||||
|
Assert.Contains(".NET Black & White Mug", stringResponse); |
||||
|
|
||||
|
keyValues.Clear(); |
||||
|
keyValues.Add(new KeyValuePair<string, string>("__RequestVerificationToken", token)); |
||||
|
|
||||
|
formContent = new FormUrlEncodedContent(keyValues); |
||||
|
var postResponse2 = await Client.PostAsync("/Basket/Checkout", formContent); |
||||
|
Assert.Contains("/Identity/Account/Login", postResponse2.RequestMessage.RequestUri.ToString()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue