diff --git a/test/E2ETests/SmokeTests.cs b/test/E2ETests/SmokeTests.cs
index 139e0d9d1c..a9cd2db829 100644
--- a/test/E2ETests/SmokeTests.cs
+++ b/test/E2ETests/SmokeTests.cs
@@ -9,9 +9,12 @@ namespace E2ETests
{
public class SmokeTests
{
- private string ApplicationBaseUrl = null;
private const string Connection_string_Format = "Server=(localdb)\\v11.0;Database={0};Trusted_Connection=True;MultipleActiveResultSets=true";
+ private string ApplicationBaseUrl = null;
+ private HttpClient httpClient = null;
+ private HttpClientHandler httpClientHandler = null;
+
[Theory]
[InlineData(HostType.Helios, KreFlavor.DesktopClr, "http://localhost:5001/")]
//[InlineData(HostType.SelfHost, KreFlavor.DesktopClr, "http://localhost:5002/")]
@@ -23,6 +26,7 @@ namespace E2ETests
Console.WriteLine("Pointing MusicStore DB to '{0}'", string.Format(Connection_string_Format, musicStoreDbName));
Console.WriteLine("Pointing MusicStoreIdentity DB to '{0}'", string.Format(Connection_string_Format, musicStoreIdentityDbName));
+ //Override the connection strings using environment based configuration
Environment.SetEnvironmentVariable("SQLAZURECONNSTR_DefaultConnection", string.Format(Connection_string_Format, musicStoreDbName));
Environment.SetEnvironmentVariable("SQLAZURECONNSTR_IdentityConnection", string.Format(Connection_string_Format, musicStoreIdentityDbName));
@@ -31,53 +35,53 @@ namespace E2ETests
try
{
- var httpClientHandler = new HttpClientHandler();
- var httpClient = new HttpClient(httpClientHandler) { BaseAddress = new Uri(applicationBaseUrl) };
+ httpClientHandler = new HttpClientHandler();
+ httpClient = new HttpClient(httpClientHandler) { BaseAddress = new Uri(applicationBaseUrl) };
//Request to base address and check if various parts of the body are rendered
- VerifyHomePage(httpClient);
+ VerifyHomePage();
//Making a request to a protected resource should automatically redirect to login page
- AccessStoreWithoutPermissions(httpClient);
+ AccessStoreWithoutPermissions();
//Register a user - Negative scenario where the Password & ConfirmPassword do not match
- RegisterUserWithNonMatchingPasswords(httpClient, httpClientHandler);
+ RegisterUserWithNonMatchingPasswords();
//Register a valid user
- var generatedUserName = RegisterValidUser(httpClient, httpClientHandler);
+ var generatedUserName = RegisterValidUser();
//Register a user - Negative scenario : Trying to register a user name that's already registered.
- RegisterExistingUser(httpClient, httpClientHandler, generatedUserName);
+ RegisterExistingUser(generatedUserName);
//Logout from this user session - This should take back to the home page
- SignOutUser(httpClient, httpClientHandler, generatedUserName);
+ SignOutUser(generatedUserName);
//Sign in scenarios: Invalid password - Expected an invalid user name password error.
- SignInWithInvalidPassword(httpClient, httpClientHandler, generatedUserName);
+ SignInWithInvalidPassword(generatedUserName);
//Sign in scenarios: Valid user name & password.
- SignInWithUser(httpClient, httpClientHandler, generatedUserName, "Password~1");
+ SignInWithUser(generatedUserName, "Password~1");
//Change password scenario
- ChangePassword(httpClient, httpClientHandler, generatedUserName);
+ ChangePassword(generatedUserName);
//Making a request to a protected resource that this user does not have access to - should automatically redirect to login page again
- AccessStoreWithoutPermissions(httpClient, generatedUserName);
+ AccessStoreWithoutPermissions(generatedUserName);
//Logout from this user session - This should take back to the home page
- SignOutUser(httpClient, httpClientHandler, generatedUserName);
+ SignOutUser(generatedUserName);
//Login as an admin user
- SignInWithUser(httpClient, httpClientHandler, "Administrator", "YouShouldChangeThisPassword1!");
+ SignInWithUser("Administrator", "YouShouldChangeThisPassword1!");
//Now navigating to the store manager should work fine as this user has the necessary permission to administer the store.
- AccessStoreWithPermissions(httpClient);
+ AccessStoreWithPermissions();
//Create an album
- CreateAlbum(httpClient, httpClientHandler);
+ CreateAlbum();
//Logout from this user session - This should take back to the home page
- SignOutUser(httpClient, httpClientHandler, "Administrator");
+ SignOutUser("Administrator");
}
finally
{
@@ -107,7 +111,7 @@ namespace E2ETests
}
}
- private void VerifyHomePage(HttpClient httpClient)
+ private void VerifyHomePage()
{
var response = httpClient.GetAsync(string.Empty).Result;
var responseContent = response.Content.ReadAsStringAsync().Result;
@@ -126,9 +130,9 @@ namespace E2ETests
Console.WriteLine("Application initialization successful.");
}
- private void AccessStoreWithoutPermissions(HttpClient httpClient, string generatedUserName = null)
+ private void AccessStoreWithoutPermissions(string userName = null)
{
- Console.WriteLine("Trying to access StoreManager that needs ManageStore claim with the current user : {0}", generatedUserName ?? "Anonymous");
+ Console.WriteLine("Trying to access StoreManager that needs ManageStore claim with the current user : {0}", userName ?? "Anonymous");
var response = httpClient.GetAsync("/StoreManager/").Result;
var responseContent = response.Content.ReadAsStringAsync().Result;
Assert.Contains("
Use a local account to log in.
", responseContent, StringComparison.OrdinalIgnoreCase);
@@ -136,7 +140,7 @@ namespace E2ETests
Console.WriteLine("Redirected to login page as expected.");
}
- private void AccessStoreWithPermissions(HttpClient httpClient)
+ private void AccessStoreWithPermissions()
{
Console.WriteLine("Trying to access the store inventory..");
var response = httpClient.GetAsync("/StoreManager/").Result;
@@ -145,7 +149,7 @@ namespace E2ETests
Console.WriteLine("Successfully acccessed the store inventory");
}
- private void RegisterUserWithNonMatchingPasswords(HttpClient httpClient, HttpClientHandler httpClientHandler)
+ private void RegisterUserWithNonMatchingPasswords()
{
Console.WriteLine("Trying to create user with not matching password and confirm password");
var response = httpClient.GetAsync("/Account/Register").Result;
@@ -169,7 +173,7 @@ namespace E2ETests
Console.WriteLine("Server side model validator rejected the user '{0}''s registration as passwords do not match.", generatedUserName);
}
- private string RegisterValidUser(HttpClient httpClient, HttpClientHandler httpClientHandler)
+ private string RegisterValidUser()
{
var response = httpClient.GetAsync("/Account/Register").Result;
var responseContent = response.Content.ReadAsStringAsync().Result;
@@ -195,15 +199,15 @@ namespace E2ETests
return generatedUserName;
}
- private void RegisterExistingUser(HttpClient httpClient, HttpClientHandler httpClientHandler, string generatedUserName)
+ private void RegisterExistingUser(string userName)
{
- Console.WriteLine("Trying to register a user with name '{0}' again", generatedUserName);
+ Console.WriteLine("Trying to register a user with name '{0}' again", userName);
var response = httpClient.GetAsync("/Account/Register").Result;
var responseContent = response.Content.ReadAsStringAsync().Result;
- Console.WriteLine("Creating a new user with name '{0}'", generatedUserName);
+ Console.WriteLine("Creating a new user with name '{0}'", userName);
var formParameters = new List>
{
- new KeyValuePair("UserName", generatedUserName),
+ new KeyValuePair("UserName", userName),
new KeyValuePair("Password", "Password~1"),
new KeyValuePair("ConfirmPassword", "Password~1"),
new KeyValuePair("__RequestVerificationToken", HtmlDOMHelper.RetrieveAntiForgeryToken(responseContent, "/Account/Register")),
@@ -213,13 +217,13 @@ namespace E2ETests
response = httpClient.PostAsync("/Account/Register", content).Result;
responseContent = response.Content.ReadAsStringAsync().Result;
//Bug? Registering the same user again does not throw this error
- Assert.Contains(string.Format("Name {0} is already taken.", generatedUserName), responseContent, StringComparison.OrdinalIgnoreCase);
- Console.WriteLine("Identity threw a valid exception that user '{0}' already exists in the system", generatedUserName);
+ Assert.Contains(string.Format("Name {0} is already taken.", userName), responseContent, StringComparison.OrdinalIgnoreCase);
+ Console.WriteLine("Identity threw a valid exception that user '{0}' already exists in the system", userName);
}
- private void SignOutUser(HttpClient httpClient, HttpClientHandler httpClientHandler, string generatedUserName)
+ private void SignOutUser(string userName)
{
- Console.WriteLine("Signing out from '{0}''s session", generatedUserName);
+ Console.WriteLine("Signing out from '{0}''s session", userName);
var response = httpClient.GetAsync(string.Empty).Result;
var responseContent = response.Content.ReadAsStringAsync().Result;
var formParameters = new List>
@@ -237,17 +241,17 @@ namespace E2ETests
Assert.Contains("/Images/home-showcase.png", responseContent, StringComparison.OrdinalIgnoreCase);
//Verify cookie cleared on logout
Assert.Null(httpClientHandler.CookieContainer.GetCookies(new Uri(ApplicationBaseUrl)).GetCookieWithName(".AspNet.Microsoft.AspNet.Identity.Security.Application"));
- Console.WriteLine("Successfully signed out of '{0}''s session", generatedUserName);
+ Console.WriteLine("Successfully signed out of '{0}''s session", userName);
}
- private void SignInWithInvalidPassword(HttpClient httpClient, HttpClientHandler httpClientHandler, string generatedUserName)
+ private void SignInWithInvalidPassword(string userName)
{
var response = httpClient.GetAsync("/Account/Login").Result;
var responseContent = response.Content.ReadAsStringAsync().Result;
- Console.WriteLine("Signing in with user '{0}'", generatedUserName);
+ Console.WriteLine("Signing in with user '{0}'", userName);
var formParameters = new List>
{
- new KeyValuePair("UserName", generatedUserName),
+ new KeyValuePair("UserName", userName),
new KeyValuePair("Password", "InvalidPassword~1"),
new KeyValuePair("__RequestVerificationToken", HtmlDOMHelper.RetrieveAntiForgeryToken(responseContent, "/Account/Login")),
};
@@ -261,14 +265,14 @@ namespace E2ETests
Console.WriteLine("Identity successfully prevented an invalid user login.");
}
- private void SignInWithUser(HttpClient httpClient, HttpClientHandler httpClientHandler, string generatedUserName, string password)
+ private void SignInWithUser(string userName, string password)
{
var response = httpClient.GetAsync("/Account/Login").Result;
var responseContent = response.Content.ReadAsStringAsync().Result;
- Console.WriteLine("Signing in with user '{0}'", generatedUserName);
+ Console.WriteLine("Signing in with user '{0}'", userName);
var formParameters = new List>
{
- new KeyValuePair("UserName", generatedUserName),
+ new KeyValuePair("UserName", userName),
new KeyValuePair("Password", password),
new KeyValuePair("__RequestVerificationToken", HtmlDOMHelper.RetrieveAntiForgeryToken(responseContent, "/Account/Login")),
};
@@ -276,14 +280,14 @@ namespace E2ETests
var content = new FormUrlEncodedContent(formParameters.ToArray());
response = httpClient.PostAsync("/Account/Login", content).Result;
responseContent = response.Content.ReadAsStringAsync().Result;
- Assert.Contains(string.Format("Hello {0}!", generatedUserName), responseContent, StringComparison.OrdinalIgnoreCase);
+ Assert.Contains(string.Format("Hello {0}!", userName), responseContent, StringComparison.OrdinalIgnoreCase);
Assert.Contains("Log off", responseContent, StringComparison.OrdinalIgnoreCase);
//Verify cookie sent
Assert.NotNull(httpClientHandler.CookieContainer.GetCookies(new Uri(ApplicationBaseUrl)).GetCookieWithName(".AspNet.Microsoft.AspNet.Identity.Security.Application"));
- Console.WriteLine("Successfully signed in with user '{0}'", generatedUserName);
+ Console.WriteLine("Successfully signed in with user '{0}'", userName);
}
- private void ChangePassword(HttpClient httpClient, HttpClientHandler httpClientHandler, string generatedUserName)
+ private void ChangePassword(string userName)
{
var response = httpClient.GetAsync("/Account/Manage").Result;
var responseContent = response.Content.ReadAsStringAsync().Result;
@@ -300,10 +304,10 @@ namespace E2ETests
responseContent = response.Content.ReadAsStringAsync().Result;
Assert.Contains("Your password has been changed.", responseContent, StringComparison.OrdinalIgnoreCase);
Assert.NotNull(httpClientHandler.CookieContainer.GetCookies(new Uri(ApplicationBaseUrl)).GetCookieWithName(".AspNet.Microsoft.AspNet.Identity.Security.Application"));
- Console.WriteLine("Successfully changed the password for user '{0}'", generatedUserName);
+ Console.WriteLine("Successfully changed the password for user '{0}'", userName);
}
- private void CreateAlbum(HttpClient httpClient, HttpClientHandler httpClientHandler)
+ private void CreateAlbum()
{
var albumName = Guid.NewGuid().ToString().Replace("-", string.Empty).Substring(0, 12);
Console.WriteLine("Trying to create an album with name '{0}'", albumName);