Minor clean up related to formatting

This commit is contained in:
Kiran Challa 2015-09-23 14:30:17 -07:00
parent 21c043d788
commit d89747927e
6 changed files with 123 additions and 70 deletions

View File

@ -27,16 +27,17 @@ namespace MusicStore
{ {
_runtimeEnvironment = runtimeEnvironment; _runtimeEnvironment = runtimeEnvironment;
} }
public bool IsRunningOnWindows public bool IsRunningOnWindows
{ {
get get
{ {
if (_isWindows == null) if (_isWindows == null)
{ {
_isWindows = _runtimeEnvironment.OperatingSystem.Equals("Windows", StringComparison.OrdinalIgnoreCase); _isWindows = _runtimeEnvironment.OperatingSystem.Equals(
"Windows", StringComparison.OrdinalIgnoreCase);
} }
return _isWindows.Value; return _isWindows.Value;
} }
} }
@ -65,7 +66,7 @@ namespace MusicStore
try try
{ {
int productType; int productType;
if (GetProductInfo(osVersion.Major, osVersion.Minor, 0,0, out productType)) if (GetProductInfo(osVersion.Major, osVersion.Minor, 0, 0, out productType))
{ {
_isNano = productType == PRODUCT_NANO_SERVER; _isNano = productType == PRODUCT_NANO_SERVER;
} }
@ -76,7 +77,7 @@ namespace MusicStore
} }
catch catch
{ {
// If the API call fails, the API set is not there which means // If the API call fails, the API set is not there which means
// that we are definetely not running on Nano // that we are definetely not running on Nano
_isNano = false; _isNano = false;
} }

View File

@ -1,16 +1,15 @@
using System;
using Microsoft.AspNet.Authorization; using Microsoft.AspNet.Authorization;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Diagnostics; using Microsoft.AspNet.Cors.Core;
using Microsoft.AspNet.Diagnostics.Entity; using Microsoft.AspNet.Diagnostics.Entity;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Data.Entity; using Microsoft.Data.Entity;
using Microsoft.Dnx.Runtime;
using Microsoft.Framework.Caching.Memory; using Microsoft.Framework.Caching.Memory;
using Microsoft.Framework.Configuration; using Microsoft.Framework.Configuration;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.Logging; using Microsoft.Framework.Logging;
using Microsoft.Dnx.Runtime;
using MusicStore.Components; using MusicStore.Components;
using MusicStore.Models; using MusicStore.Models;
@ -20,13 +19,15 @@ namespace MusicStore
{ {
private readonly Platform _platform; private readonly Platform _platform;
public Startup(IApplicationEnvironment env, IRuntimeEnvironment runtimeEnvironment) public Startup(IApplicationEnvironment applicationEnvironment, IRuntimeEnvironment runtimeEnvironment)
{ {
//Below code demonstrates usage of multiple configuration sources. For instance a setting say 'setting1' is found in both the registered sources, // Below code demonstrates usage of multiple configuration sources. For instance a setting say 'setting1'
//then the later source will win. By this way a Local config can be overridden by a different setting while deployed remotely. // is found in both the registered sources, then the later source will win. By this way a Local config
var builder = new ConfigurationBuilder(env.ApplicationBasePath) // can be overridden by a different setting while deployed remotely.
var builder = new ConfigurationBuilder(applicationEnvironment.ApplicationBasePath)
.AddJsonFile("config.json") .AddJsonFile("config.json")
.AddEnvironmentVariables(); //All environment variables in the process's context flow in as configuration values. //All environment variables in the process's context flow in as configuration values.
.AddEnvironmentVariables();
Configuration = builder.Build(); Configuration = builder.Build();
_platform = new Platform(runtimeEnvironment); _platform = new Platform(runtimeEnvironment);
@ -38,7 +39,9 @@ namespace MusicStore
{ {
services.Configure<AppSettings>(Configuration.GetSection("AppSettings")); services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
var useInMemoryStore = !_platform.IsRunningOnWindows || _platform.IsRunningOnMono || _platform.IsRunningOnNanoServer; var useInMemoryStore = !_platform.IsRunningOnWindows
|| _platform.IsRunningOnMono
|| _platform.IsRunningOnNanoServer;
// Add EF services to the services container // Add EF services to the services container
if (useInMemoryStore) if (useInMemoryStore)
@ -64,7 +67,8 @@ namespace MusicStore
.AddEntityFrameworkStores<MusicStoreContext>() .AddEntityFrameworkStores<MusicStoreContext>()
.AddDefaultTokenProviders(); .AddDefaultTokenProviders();
services.AddCors(options =>
services.Configure<CorsOptions>(options =>
{ {
options.AddPolicy("CorsPolicy", builder => options.AddPolicy("CorsPolicy", builder =>
{ {
@ -88,7 +92,8 @@ namespace MusicStore
// Configure Auth // Configure Auth
services.AddAuthorization(options => services.AddAuthorization(options =>
{ {
options.AddPolicy("ManageStore", new AuthorizationPolicyBuilder().RequireClaim("ManageStore", "Allowed").Build()); options.AddPolicy(
"ManageStore", new AuthorizationPolicyBuilder().RequireClaim("ManageStore", "Allowed").Build());
}); });
} }
@ -172,7 +177,8 @@ namespace MusicStore
options.ConsumerSecret = "jUBYkQuBFyqp7G3CUB9SW3AfflFr9z3oQBiNvumYy87Al0W4h8"; options.ConsumerSecret = "jUBYkQuBFyqp7G3CUB9SW3AfflFr9z3oQBiNvumYy87Al0W4h8";
}); });
// The MicrosoftAccount service has restrictions that prevent the use of http://localhost:5001/ for test applications. // The MicrosoftAccount service has restrictions that prevent the use of
// http://localhost:5001/ for test applications.
// As such, here is how to change this sample to uses http://ktesting.com:5001/ instead. // As such, here is how to change this sample to uses http://ktesting.com:5001/ instead.
// Edit the Project.json file and replace http://localhost:5001/ with http://ktesting.com:5001/. // Edit the Project.json file and replace http://localhost:5001/ with http://ktesting.com:5001/.

View File

@ -2,15 +2,15 @@ using System;
using System.Security.Claims; using System.Security.Claims;
using Microsoft.AspNet.Authorization; using Microsoft.AspNet.Authorization;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Diagnostics; using Microsoft.AspNet.Cors.Core;
using Microsoft.AspNet.Diagnostics.Entity; using Microsoft.AspNet.Diagnostics.Entity;
using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.Http.Features;
using Microsoft.Data.Entity; using Microsoft.Data.Entity;
using Microsoft.Dnx.Runtime;
using Microsoft.Framework.Caching.Memory; using Microsoft.Framework.Caching.Memory;
using Microsoft.Framework.Configuration; using Microsoft.Framework.Configuration;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.Logging; using Microsoft.Framework.Logging;
using Microsoft.Dnx.Runtime;
using Microsoft.Net.Http.Server; using Microsoft.Net.Http.Server;
using MusicStore.Components; using MusicStore.Components;
using MusicStore.Models; using MusicStore.Models;
@ -20,25 +20,31 @@ namespace MusicStore
/// <summary> /// <summary>
/// To make runtime to load an environment based startup class, specify the environment by the following ways: /// To make runtime to load an environment based startup class, specify the environment by the following ways:
/// 1. Drop a Microsoft.AspNet.Hosting.ini file in the wwwroot folder /// 1. Drop a Microsoft.AspNet.Hosting.ini file in the wwwroot folder
/// 2. Add a setting in the ini file named 'ASPNET_ENV' with value of the format 'Startup[EnvironmentName]'. For example: To load a Startup class named /// 2. Add a setting in the ini file named 'ASPNET_ENV' with value of the format 'Startup[EnvironmentName]'.
/// 'StartupNtlmAuthentication' the value of the env should be 'NtlmAuthentication' (eg. ASPNET_ENV=NtlmAuthentication). Runtime adds a 'Startup' prefix to this and loads 'StartupNtlmAuthentication'. /// For example: To load a Startup class named 'StartupNtlmAuthentication' the value of the env should be
/// 'NtlmAuthentication' (eg. ASPNET_ENV=NtlmAuthentication). Runtime adds a 'Startup' prefix to this and
/// loads 'StartupNtlmAuthentication'.
/// If no environment name is specified the default startup class loaded is 'Startup'. /// If no environment name is specified the default startup class loaded is 'Startup'.
///
/// Alternative ways to specify environment are: /// Alternative ways to specify environment are:
/// 1. Set the environment variable named SET ASPNET_ENV=NtlmAuthentication /// 1. Set the environment variable named SET ASPNET_ENV=NtlmAuthentication
/// 2. For selfhost based servers pass in a command line variable named --env with this value. Eg: /// 2. For selfhost based servers pass in a command line variable named --env with this value. Eg:
/// "commands": { /// "commands": {
/// "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5002 --ASPNET_ENV NtlmAuthentication", /// "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener
/// --server.urls http://localhost:5002 --ASPNET_ENV NtlmAuthentication",
/// }, /// },
/// </summary> /// </summary>
public class StartupNtlmAuthentication public class StartupNtlmAuthentication
{ {
public StartupNtlmAuthentication(IApplicationEnvironment env) public StartupNtlmAuthentication(IApplicationEnvironment applicationEnvironment)
{ {
//Below code demonstrates usage of multiple configuration sources. For instance a setting say 'setting1' is found in both the registered sources, // Below code demonstrates usage of multiple configuration sources. For instance a setting say 'setting1'
//then the later source will win. By this way a Local config can be overridden by a different setting while deployed remotely. // is found in both the registered sources, then the later source will win. By this way a Local config
var builder = new ConfigurationBuilder(env.ApplicationBasePath) // can be overridden by a different setting while deployed remotely.
var builder = new ConfigurationBuilder(applicationEnvironment.ApplicationBasePath)
.AddJsonFile("config.json") .AddJsonFile("config.json")
.AddEnvironmentVariables(); //All environment variables in the process's context flow in as configuration values. //All environment variables in the process's context flow in as configuration values.
.AddEnvironmentVariables();
Configuration = builder.Build(); Configuration = builder.Build();
} }
@ -54,7 +60,7 @@ namespace MusicStore
.AddDbContext<MusicStoreContext>(options => .AddDbContext<MusicStoreContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])); options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
services.AddCors(options => services.Configure<CorsOptions>(options =>
{ {
options.AddPolicy("CorsPolicy", builder => options.AddPolicy("CorsPolicy", builder =>
{ {
@ -78,7 +84,8 @@ namespace MusicStore
// Configure Auth // Configure Auth
services.Configure<AuthorizationOptions>(options => services.Configure<AuthorizationOptions>(options =>
{ {
options.AddPolicy("ManageStore", new AuthorizationPolicyBuilder().RequireClaim("ManageStore", "Allowed").Build()); options.AddPolicy(
"ManageStore", new AuthorizationPolicyBuilder().RequireClaim("ManageStore", "Allowed").Build());
}); });
} }
@ -88,12 +95,14 @@ namespace MusicStore
app.UseStatusCodePagesWithRedirects("~/Home/StatusCodePage"); app.UseStatusCodePagesWithRedirects("~/Home/StatusCodePage");
// Error page middleware displays a nice formatted HTML page for any unhandled exceptions in the request pipeline. // Error page middleware displays a nice formatted HTML page for any unhandled exceptions in the
// request pipeline.
// Note: Not recommended for production. // Note: Not recommended for production.
app.UseDeveloperExceptionPage(); app.UseDeveloperExceptionPage();
// Set up NTLM authentication for WebListener like below. // Set up NTLM authentication for WebListener like below.
// For IIS and IISExpress: Use inetmgr to setup NTLM authentication on the application vDir or modify the applicationHost.config to enable NTLM. // For IIS and IISExpress: Use inetmgr to setup NTLM authentication on the application vDir or
// modify the applicationHost.config to enable NTLM.
var listener = app.ServerFeatures.Get<WebListener>(); var listener = app.ServerFeatures.Get<WebListener>();
if (listener != null) if (listener != null)
{ {
@ -109,10 +118,12 @@ namespace MusicStore
app.Use(async (context, next) => app.Use(async (context, next) =>
{ {
//Who will get admin access? For demo sake I'm listing the currently logged on user as the application administrator. But this can be changed to suit the needs. // Who will get admin access? For demo sake I'm listing the currently logged on user as the application
// administrator. But this can be changed to suit the needs.
var identity = (ClaimsIdentity)context.User.Identity; var identity = (ClaimsIdentity)context.User.Identity;
if (context.User.GetUserName() == Environment.GetEnvironmentVariable("USERDOMAIN") + "\\" + Environment.GetEnvironmentVariable("USERNAME")) if (context.User.GetUserName() == Environment.GetEnvironmentVariable("USERDOMAIN") + "\\"
+ Environment.GetEnvironmentVariable("USERNAME"))
{ {
identity.AddClaim(new Claim("ManageStore", "Allowed")); identity.AddClaim(new Claim("ManageStore", "Allowed"));
} }

View File

@ -1,15 +1,13 @@
using System;
using Microsoft.AspNet.Authorization; using Microsoft.AspNet.Authorization;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Diagnostics;
using Microsoft.AspNet.Diagnostics.Entity; using Microsoft.AspNet.Diagnostics.Entity;
using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Data.Entity; using Microsoft.Data.Entity;
using Microsoft.Dnx.Runtime;
using Microsoft.Framework.Caching.Memory; using Microsoft.Framework.Caching.Memory;
using Microsoft.Framework.Configuration; using Microsoft.Framework.Configuration;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.Logging; using Microsoft.Framework.Logging;
using Microsoft.Dnx.Runtime;
using MusicStore.Components; using MusicStore.Components;
using MusicStore.Models; using MusicStore.Models;
@ -18,14 +16,18 @@ namespace MusicStore
/// <summary> /// <summary>
/// To make runtime to load an environment based startup class, specify the environment by the following ways: /// To make runtime to load an environment based startup class, specify the environment by the following ways:
/// 1. Drop a Microsoft.AspNet.Hosting.ini file in the wwwroot folder /// 1. Drop a Microsoft.AspNet.Hosting.ini file in the wwwroot folder
/// 2. Add a setting in the ini file named 'ASPNET_ENV' with value of the format 'Startup[EnvironmentName]'. For example: To load a Startup class named /// 2. Add a setting in the ini file named 'ASPNET_ENV' with value of the format 'Startup[EnvironmentName]'.
/// 'StartupOpenIdConnect' the value of the env should be 'OpenIdConnect' (eg. ASPNET_ENV=OpenIdConnect). Runtime adds a 'Startup' prefix to this and loads 'StartupOpenIdConnect'. /// For example: To load a Startup class named 'StartupOpenIdConnect' the value of the env should be
/// 'OpenIdConnect' (eg. ASPNET_ENV=OpenIdConnect). Runtime adds a 'Startup' prefix to this
/// and loads 'StartupOpenIdConnect'.
///
/// If no environment name is specified the default startup class loaded is 'Startup'. /// If no environment name is specified the default startup class loaded is 'Startup'.
/// Alternative ways to specify environment are: /// Alternative ways to specify environment are:
/// 1. Set the environment variable named SET ASPNET_ENV=OpenIdConnect /// 1. Set the environment variable named SET ASPNET_ENV=OpenIdConnect
/// 2. For selfhost based servers pass in a command line variable named --env with this value. Eg: /// 2. For selfhost based servers pass in a command line variable named --env with this value. Eg:
/// "commands": { /// "commands": {
/// "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5002 --ASPNET_ENV OpenIdConnect", /// "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener
/// --server.urls http://localhost:5002 --ASPNET_ENV OpenIdConnect",
/// }, /// },
/// </summary> /// </summary>
public class StartupOpenIdConnect public class StartupOpenIdConnect
@ -34,11 +36,13 @@ namespace MusicStore
public StartupOpenIdConnect(IApplicationEnvironment env, IRuntimeEnvironment runtimeEnvironment) public StartupOpenIdConnect(IApplicationEnvironment env, IRuntimeEnvironment runtimeEnvironment)
{ {
//Below code demonstrates usage of multiple configuration sources. For instance a setting say 'setting1' is found in both the registered sources, // Below code demonstrates usage of multiple configuration sources. For instance a setting say 'setting1'
//then the later source will win. By this way a Local config can be overridden by a different setting while deployed remotely. // is found in both the registered sources, then the later source will win. By this way a Local config can
// be overridden by a different setting while deployed remotely.
var builder = new ConfigurationBuilder(env.ApplicationBasePath) var builder = new ConfigurationBuilder(env.ApplicationBasePath)
.AddJsonFile("config.json") .AddJsonFile("config.json")
.AddEnvironmentVariables(); //All environment variables in the process's context flow in as configuration values. //All environment variables in the process's context flow in as configuration values.
.AddEnvironmentVariables();
Configuration = builder.Build(); Configuration = builder.Build();
_platform = new Platform(runtimeEnvironment); _platform = new Platform(runtimeEnvironment);
@ -97,7 +101,8 @@ namespace MusicStore
// Configure Auth // Configure Auth
services.Configure<AuthorizationOptions>(options => services.Configure<AuthorizationOptions>(options =>
{ {
options.AddPolicy("ManageStore", new AuthorizationPolicyBuilder().RequireClaim("ManageStore", "Allowed").Build()); options.AddPolicy(
"ManageStore", new AuthorizationPolicyBuilder().RequireClaim("ManageStore", "Allowed").Build());
}); });
} }

View File

@ -14,57 +14,84 @@ namespace E2ETests
public class PublishAndRunTests_OnX64 public class PublishAndRunTests_OnX64
{ {
// https://github.com/aspnet/MusicStore/issues/487 // https://github.com/aspnet/MusicStore/issues/487
// [ConditionalTheory, Trait("E2Etests", "E2Etests")] [ConditionalTheory, Trait("E2Etests", "E2Etests")]
[FrameworkSkipCondition(RuntimeFrameworks.Mono)] [FrameworkSkipCondition(RuntimeFrameworks.Mono)]
[InlineData(ServerType.WebListener, RuntimeFlavor.Clr, RuntimeArchitecture.x64, "http://localhost:5025/", false)] [InlineData(
ServerType.WebListener, RuntimeFlavor.Clr, RuntimeArchitecture.x64, "http://localhost:5025/", false)]
//https://github.com/aspnet/KRuntime/issues/642 //https://github.com/aspnet/KRuntime/issues/642
//[InlineData(ServerType.Helios, RuntimeFlavor.CoreClr, RuntimeArchitecture.amd64, "http://localhost:5026/")] //[InlineData(ServerType.Helios, RuntimeFlavor.CoreClr, RuntimeArchitecture.amd64, "http://localhost:5026/")]
public async Task Publish_And_Run_Tests_On_AMD64(ServerType serverType, RuntimeFlavor runtimeFlavor, RuntimeArchitecture architecture, string applicationBaseUrl, bool noSource) public async Task Publish_And_Run_Tests_On_AMD64(
ServerType serverType,
RuntimeFlavor runtimeFlavor,
RuntimeArchitecture architecture,
string applicationBaseUrl,
bool noSource)
{ {
var testRunner = new PublishAndRunTests(); var testRunner = new PublishAndRunTests();
await testRunner.Publish_And_Run_Tests(serverType, runtimeFlavor, architecture, applicationBaseUrl, noSource); await testRunner.Publish_And_Run_Tests(
serverType, runtimeFlavor, architecture, applicationBaseUrl, noSource);
} }
} }
public class PublishAndRunTests_OnX86 public class PublishAndRunTests_OnX86
{ {
// https://github.com/aspnet/MusicStore/issues/487 // https://github.com/aspnet/MusicStore/issues/487
// [ConditionalTheory, Trait("E2Etests", "E2Etests")] [ConditionalTheory, Trait("E2Etests", "E2Etests")]
[FrameworkSkipCondition(RuntimeFrameworks.Mono)] [FrameworkSkipCondition(RuntimeFrameworks.Mono)]
//[InlineData(ServerType.IISExpress, RuntimeFlavor.Clr, RuntimeArchitecture.x86, "http://localhost:5027/", false)] //[InlineData(
//[InlineData(ServerType.IISExpress, RuntimeFlavor.Clr, RuntimeArchitecture.x86, "http://localhost:5028/", true)] // ServerType.IISExpress, RuntimeFlavor.Clr, RuntimeArchitecture.x86, "http://localhost:5027/", false)]
public async Task Publish_And_Run_Tests_On_X86(ServerType serverType, RuntimeFlavor runtimeFlavor, RuntimeArchitecture architecture, string applicationBaseUrl, bool noSource) //[InlineData(
// ServerType.IISExpress, RuntimeFlavor.Clr, RuntimeArchitecture.x86, "http://localhost:5028/", true)]
public async Task Publish_And_Run_Tests_On_X86(
ServerType serverType,
RuntimeFlavor runtimeFlavor,
RuntimeArchitecture architecture,
string applicationBaseUrl,
bool noSource)
{ {
var testRunner = new PublishAndRunTests(); var testRunner = new PublishAndRunTests();
await testRunner.Publish_And_Run_Tests(serverType, runtimeFlavor, architecture, applicationBaseUrl, noSource); await testRunner.Publish_And_Run_Tests(
serverType, runtimeFlavor, architecture, applicationBaseUrl, noSource);
} }
// https://github.com/aspnet/MusicStore/issues/487 // https://github.com/aspnet/MusicStore/issues/487
// [ConditionalTheory, Trait("E2Etests", "E2Etests")] [ConditionalTheory, Trait("E2Etests", "E2Etests")]
[FrameworkSkipCondition(RuntimeFrameworks.CLR | RuntimeFrameworks.CoreCLR)] [FrameworkSkipCondition(RuntimeFrameworks.CLR | RuntimeFrameworks.CoreCLR)]
[InlineData(ServerType.Kestrel, RuntimeFlavor.Mono, RuntimeArchitecture.x86, "http://localhost:5029/", false)] [InlineData(ServerType.Kestrel, RuntimeFlavor.Mono, RuntimeArchitecture.x86, "http://localhost:5029/", false)]
[InlineData(ServerType.Kestrel, RuntimeFlavor.Mono, RuntimeArchitecture.x86, "http://localhost:5030/", true)] [InlineData(ServerType.Kestrel, RuntimeFlavor.Mono, RuntimeArchitecture.x86, "http://localhost:5030/", true)]
public async Task Publish_And_Run_Tests_On_Mono(ServerType serverType, RuntimeFlavor runtimeFlavor, RuntimeArchitecture architecture, string applicationBaseUrl, bool noSource) public async Task Publish_And_Run_Tests_On_Mono(
ServerType serverType,
RuntimeFlavor runtimeFlavor,
RuntimeArchitecture architecture,
string applicationBaseUrl,
bool noSource)
{ {
var testRunner = new PublishAndRunTests(); var testRunner = new PublishAndRunTests();
await testRunner.Publish_And_Run_Tests(serverType, runtimeFlavor, architecture, applicationBaseUrl, noSource); await testRunner.Publish_And_Run_Tests(
serverType, runtimeFlavor, architecture, applicationBaseUrl, noSource);
} }
} }
public class PublishAndRunTests public class PublishAndRunTests
{ {
public async Task Publish_And_Run_Tests(ServerType serverType, RuntimeFlavor runtimeFlavor, RuntimeArchitecture architecture, string applicationBaseUrl, bool noSource) public async Task Publish_And_Run_Tests(
ServerType serverType,
RuntimeFlavor runtimeFlavor,
RuntimeArchitecture architecture,
string applicationBaseUrl,
bool noSource)
{ {
var logger = new LoggerFactory() var logger = new LoggerFactory()
.AddConsole() .AddConsole()
.CreateLogger(string.Format("Publish:{0}:{1}:{2}:{3}", serverType, runtimeFlavor, architecture, noSource)); .CreateLogger($"Publish:{serverType}:{runtimeFlavor}:{architecture}:{noSource}");
using (logger.BeginScope("Publish_And_Run_Tests")) using (logger.BeginScope("Publish_And_Run_Tests"))
{ {
var musicStoreDbName = Guid.NewGuid().ToString().Replace("-", string.Empty); var musicStoreDbName = Guid.NewGuid().ToString().Replace("-", string.Empty);
var connectionString = string.Format(DbUtils.CONNECTION_STRING_FORMAT, musicStoreDbName); var connectionString = string.Format(DbUtils.CONNECTION_STRING_FORMAT, musicStoreDbName);
var deploymentParameters = new DeploymentParameters(Helpers.GetApplicationPath(), serverType, runtimeFlavor, architecture) var deploymentParameters = new DeploymentParameters(
Helpers.GetApplicationPath(), serverType, runtimeFlavor, architecture)
{ {
ApplicationBaseUriHint = applicationBaseUrl, ApplicationBaseUriHint = applicationBaseUrl,
PublishApplicationBeforeDeployment = true, PublishApplicationBeforeDeployment = true,
@ -89,9 +116,11 @@ namespace E2ETests
{ {
var deploymentResult = deployer.Deploy(); var deploymentResult = deployer.Deploy();
var httpClientHandler = new HttpClientHandler() { UseDefaultCredentials = true }; var httpClientHandler = new HttpClientHandler() { UseDefaultCredentials = true };
var httpClient = new HttpClient(httpClientHandler) { BaseAddress = new Uri(deploymentResult.ApplicationBaseUri) }; var httpClient = new HttpClient(httpClientHandler);
httpClient.BaseAddress = new Uri(deploymentResult.ApplicationBaseUri);
// Request to base address and check if various parts of the body are rendered & measure the cold startup time. // Request to base address and check if various parts of the body are rendered &
// measure the cold startup time.
// Add retry logic since tests are flaky on mono due to connection issues // Add retry logic since tests are flaky on mono due to connection issues
var response = await RetryHelper.RetryRequest(async () => var response = await RetryHelper.RetryRequest(async () =>
{ {
@ -106,7 +135,8 @@ namespace E2ETests
if (serverType != ServerType.IISExpress) if (serverType != ServerType.IISExpress)
{ {
if (Directory.GetFiles(deploymentParameters.ApplicationPath, "*.cmd", SearchOption.TopDirectoryOnly).Length > 0) if (Directory.GetFiles(
deploymentParameters.ApplicationPath, "*.cmd", SearchOption.TopDirectoryOnly).Length > 0)
{ {
throw new Exception("publishExclude parameter values are not honored."); throw new Exception("publishExclude parameter values are not honored.");
} }

View File

@ -5,15 +5,15 @@
"commands": { "commands": {
"test": "xunit.runner.aspnet" "test": "xunit.runner.aspnet"
}, },
"dependencies": { "dependencies": {
"Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-*", "Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-*",
"Microsoft.AspNet.Server.IIS": "1.0.0-*", "Microsoft.AspNet.Server.IIS": "1.0.0-*",
"Microsoft.AspNet.Server.Testing": "1.0.0-*", "Microsoft.AspNet.Server.Testing": "1.0.0-*",
"Microsoft.AspNet.WebUtilities": "1.0.0-*", "Microsoft.AspNet.WebUtilities": "1.0.0-*",
"Microsoft.Framework.Configuration.EnvironmentVariables": "1.0.0-*", "Microsoft.Framework.Configuration.EnvironmentVariables": "1.0.0-*",
"Microsoft.Framework.Logging.Console": "1.0.0-*", "Microsoft.Framework.Logging.Console": "1.0.0-*",
"xunit.runner.aspnet": "2.0.0-aspnet-*" "xunit.runner.aspnet": "2.0.0-aspnet-*"
}, },
"frameworks": { "frameworks": {
"dnx451": { "dnx451": {
"frameworkAssemblies": { "frameworkAssemblies": {