2016-06-03 17:36:40 -07:00
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using FluentAssertions ;
using Microsoft.DotNet.Cli.Utils ;
using Microsoft.DotNet.Configurer ;
using Microsoft.DotNet.Tools.Test ;
using Microsoft.Extensions.DependencyModel.Tests ;
using Moq ;
using Xunit ;
namespace Microsoft.DotNet.Configurer.UnitTests
{
public class GivenADotnetFirstTimeUseConfigurer
{
2017-05-31 13:44:03 -07:00
private const string CliFallbackFolderPath = "some path" ;
2016-06-03 17:36:40 -07:00
private Mock < INuGetCachePrimer > _nugetCachePrimerMock ;
2016-06-06 10:39:05 -07:00
private Mock < INuGetCacheSentinel > _nugetCacheSentinelMock ;
2017-06-14 12:09:06 -04:00
private Mock < IFirstTimeUseNoticeSentinel > _firstTimeUseNoticeSentinelMock ;
2017-11-10 14:47:05 -08:00
private Mock < IAspNetCertificateSentinel > _aspNetCertificateSentinelMock ;
private Mock < IAspNetCoreCertificateGenerator > _aspNetCoreCertificateGeneratorMock ;
2016-06-10 13:02:48 -07:00
private Mock < IEnvironmentProvider > _environmentProviderMock ;
2017-06-14 12:09:06 -04:00
private Mock < IReporter > _reporterMock ;
2017-11-27 10:45:43 -08:00
private Mock < IEnvironmentPath > _pathAdder ;
2016-06-03 17:36:40 -07:00
public GivenADotnetFirstTimeUseConfigurer ( )
{
_nugetCachePrimerMock = new Mock < INuGetCachePrimer > ( ) ;
2016-06-06 10:39:05 -07:00
_nugetCacheSentinelMock = new Mock < INuGetCacheSentinel > ( ) ;
2017-06-14 12:09:06 -04:00
_firstTimeUseNoticeSentinelMock = new Mock < IFirstTimeUseNoticeSentinel > ( ) ;
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock = new Mock < IAspNetCertificateSentinel > ( ) ;
_aspNetCoreCertificateGeneratorMock = new Mock < IAspNetCoreCertificateGenerator > ( ) ;
2016-06-10 13:02:48 -07:00
_environmentProviderMock = new Mock < IEnvironmentProvider > ( ) ;
2017-06-14 12:09:06 -04:00
_reporterMock = new Mock < IReporter > ( ) ;
2017-11-27 10:45:43 -08:00
_pathAdder = new Mock < IEnvironmentPath > ( ) ;
2016-06-10 13:02:48 -07:00
_environmentProviderMock
. Setup ( e = > e . GetEnvironmentVariableAsBool ( "DOTNET_SKIP_FIRST_TIME_EXPERIENCE" , false ) )
. Returns ( false ) ;
2017-06-14 12:09:06 -04:00
_environmentProviderMock
. Setup ( e = > e . GetEnvironmentVariableAsBool ( "DOTNET_PRINT_TELEMETRY_MESSAGE" , true ) )
. Returns ( true ) ;
}
[Fact]
public void It_does_not_print_the_first_time_use_notice_if_the_sentinel_exists ( )
{
_firstTimeUseNoticeSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( true ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-06-14 12:09:06 -04:00
_environmentProviderMock . Object ,
2017-05-31 13:44:03 -07:00
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2017-06-14 12:09:06 -04:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
2017-06-21 12:44:17 -07:00
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . FirstTimeWelcomeMessage ) ) , Times . Never ) ;
2017-06-14 12:09:06 -04:00
_reporterMock . Verify ( r = > r . Write ( It . IsAny < string > ( ) ) , Times . Never ) ;
}
[Fact]
public void It_does_not_print_the_first_time_use_notice_when_the_user_has_set_the_DOTNET_SKIP_FIRST_TIME_EXPERIENCE_environemnt_variable ( )
{
_firstTimeUseNoticeSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
_environmentProviderMock
. Setup ( e = > e . GetEnvironmentVariableAsBool ( "DOTNET_SKIP_FIRST_TIME_EXPERIENCE" , false ) )
. Returns ( true ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-06-14 12:09:06 -04:00
_environmentProviderMock . Object ,
2017-05-31 13:44:03 -07:00
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2017-06-14 12:09:06 -04:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
2017-06-21 12:44:17 -07:00
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . FirstTimeWelcomeMessage ) ) , Times . Never ) ;
2017-06-14 12:09:06 -04:00
_reporterMock . Verify ( r = > r . Write ( It . IsAny < string > ( ) ) , Times . Never ) ;
}
[Fact]
public void It_does_not_print_the_first_time_use_notice_when_the_user_has_set_the_DOTNET_PRINT_TELEMETRY_MESSAGE_environemnt_variable ( )
{
_firstTimeUseNoticeSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
_environmentProviderMock
. Setup ( e = > e . GetEnvironmentVariableAsBool ( "DOTNET_PRINT_TELEMETRY_MESSAGE" , true ) )
. Returns ( false ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-06-14 12:09:06 -04:00
_environmentProviderMock . Object ,
2017-05-31 13:44:03 -07:00
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2017-06-14 12:09:06 -04:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
2017-06-21 12:44:17 -07:00
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . FirstTimeWelcomeMessage ) ) , Times . Never ) ;
2017-06-14 12:09:06 -04:00
_reporterMock . Verify ( r = > r . Write ( It . IsAny < string > ( ) ) , Times . Never ) ;
}
[Fact]
public void It_prints_the_telemetry_if_the_sentinel_does_not_exist ( )
{
_firstTimeUseNoticeSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-06-14 12:09:06 -04:00
_environmentProviderMock . Object ,
2017-05-31 13:44:03 -07:00
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2017-06-14 12:09:06 -04:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
2017-06-21 12:44:17 -07:00
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . FirstTimeWelcomeMessage ) ) ) ;
2017-06-14 12:09:06 -04:00
_reporterMock . Verify ( r = > r . Write ( It . IsAny < string > ( ) ) , Times . Never ) ;
2016-06-03 17:36:40 -07:00
}
[Fact]
public void It_does_not_prime_the_cache_if_the_sentinel_exists ( )
{
2016-06-06 10:39:05 -07:00
_nugetCacheSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( true ) ;
2016-06-03 17:36:40 -07:00
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
2016-06-10 13:02:48 -07:00
_nugetCacheSentinelMock . Object ,
2017-06-14 12:09:06 -04:00
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-06-14 12:09:06 -04:00
_environmentProviderMock . Object ,
2017-05-31 13:44:03 -07:00
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2016-06-10 13:02:48 -07:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_nugetCachePrimerMock . Verify ( r = > r . PrimeCache ( ) , Times . Never ) ;
}
2016-06-10 15:06:48 -07:00
[Fact]
public void It_does_not_prime_the_cache_if_first_run_experience_is_already_happening ( )
{
_nugetCacheSentinelMock . Setup ( n = > n . InProgressSentinelAlreadyExists ( ) ) . Returns ( true ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
2017-06-14 12:09:06 -04:00
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-06-14 12:09:06 -04:00
_environmentProviderMock . Object ,
2017-05-31 13:44:03 -07:00
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2017-06-14 12:09:06 -04:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_nugetCachePrimerMock . Verify ( r = > r . PrimeCache ( ) , Times . Never ) ;
}
[Fact]
public void It_does_not_prime_the_cache_if_cache_is_missing ( )
{
_nugetCachePrimerMock . Setup ( n = > n . SkipPrimingTheCache ( ) ) . Returns ( true ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-06-14 12:09:06 -04:00
_environmentProviderMock . Object ,
2017-05-31 13:44:03 -07:00
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2016-06-10 15:06:48 -07:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_nugetCachePrimerMock . Verify ( r = > r . PrimeCache ( ) , Times . Never ) ;
}
2016-06-10 13:02:48 -07:00
[Fact]
public void It_does_not_prime_the_cache_if_the_sentinel_exists_but_the_user_has_set_the_DOTNET_SKIP_FIRST_TIME_EXPERIENCE_environemnt_variable ( )
{
_nugetCacheSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
_environmentProviderMock
. Setup ( e = > e . GetEnvironmentVariableAsBool ( "DOTNET_SKIP_FIRST_TIME_EXPERIENCE" , false ) )
. Returns ( true ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
2017-06-14 12:09:06 -04:00
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-06-14 12:09:06 -04:00
_environmentProviderMock . Object ,
2017-05-31 13:44:03 -07:00
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2016-06-03 17:36:40 -07:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_nugetCachePrimerMock . Verify ( r = > r . PrimeCache ( ) , Times . Never ) ;
}
[Fact]
public void It_primes_the_cache_if_the_sentinel_does_not_exist ( )
{
2016-06-06 10:39:05 -07:00
_nugetCacheSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
2016-06-03 17:36:40 -07:00
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
2016-06-10 13:02:48 -07:00
_nugetCacheSentinelMock . Object ,
2017-06-14 12:09:06 -04:00
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-06-14 12:09:06 -04:00
_environmentProviderMock . Object ,
2017-05-31 13:44:03 -07:00
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2016-06-03 17:36:40 -07:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_nugetCachePrimerMock . Verify ( r = > r . PrimeCache ( ) , Times . Once ) ;
2016-06-10 15:06:48 -07:00
}
2017-06-14 12:09:06 -04:00
[Fact]
public void It_prints_first_use_notice_and_primes_the_cache_if_the_sentinels_do_not_exist ( )
{
_nugetCacheSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
_firstTimeUseNoticeSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-06-14 12:09:06 -04:00
_environmentProviderMock . Object ,
2017-05-31 13:44:03 -07:00
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2017-06-14 12:09:06 -04:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
2017-06-21 12:44:17 -07:00
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . FirstTimeWelcomeMessage ) ) ) ;
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . NugetCachePrimeMessage ) ) ) ;
2017-06-14 12:09:06 -04:00
_nugetCachePrimerMock . Verify ( r = > r . PrimeCache ( ) , Times . Once ) ;
_reporterMock . Verify ( r = > r . Write ( It . IsAny < string > ( ) ) , Times . Never ) ;
}
2017-07-25 22:30:36 -07:00
[Fact]
public void It_prints_the_first_time_use_notice_if_the_cache_sentinel_exists_but_the_first_notice_sentinel_does_not ( )
{
_nugetCacheSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( true ) ;
_firstTimeUseNoticeSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-07-25 22:30:36 -07:00
_environmentProviderMock . Object ,
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2017-07-25 22:30:36 -07:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_reporterMock . Verify ( r = >
r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . FirstTimeWelcomeMessage ) ) ) ;
_reporterMock . Verify (
r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . NugetCachePrimeMessage ) ) ,
Times . Never ) ;
_reporterMock . Verify ( r = > r . Write ( It . IsAny < string > ( ) ) , Times . Never ) ;
}
2017-11-27 10:45:43 -08:00
[Fact]
public void It_adds_executable_package_path_to_environment_path_when_the_first_notice_sentinel_does_not_exist ( )
{
_nugetCacheSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( true ) ;
_firstTimeUseNoticeSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
new FakeCreateWillExistNuGetCacheSentinel ( false , true ) ,
new FakeCreateWillExistFirstTimeUseNoticeSentinel ( false ) ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-11-27 10:45:43 -08:00
_environmentProviderMock . Object ,
_reporterMock . Object ,
CliFallbackFolderPath ,
_pathAdder . Object ) ;
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_pathAdder . Verify ( p = > p . AddPackageExecutablePathToUserPath ( ) , Times . AtLeastOnce ) ;
}
2017-07-25 22:30:36 -07:00
[Fact]
public void It_prints_the_unauthorized_notice_if_the_cache_sentinel_reports_Unauthorized ( )
{
_nugetCacheSentinelMock . Setup ( n = > n . UnauthorizedAccess ) . Returns ( true ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-07-25 22:30:36 -07:00
_environmentProviderMock . Object ,
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2017-07-25 22:30:36 -07:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_reporterMock . Verify ( r = >
r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . FirstTimeWelcomeMessage ) ) ) ;
_reporterMock . Verify ( r = >
r . WriteLine ( It . Is < string > ( str = >
str = = string . Format ( LocalizableStrings . UnauthorizedAccessMessage , CliFallbackFolderPath ) ) ) ) ;
_reporterMock . Verify (
r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . NugetCachePrimeMessage ) ) ,
Times . Never ) ;
_reporterMock . Verify ( r = > r . Write ( It . IsAny < string > ( ) ) , Times . Never ) ;
}
[Fact]
public void It_does_not_prime_the_cache_if_the_cache_sentinel_reports_Unauthorized ( )
{
_nugetCacheSentinelMock . Setup ( n = > n . UnauthorizedAccess ) . Returns ( true ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
2017-11-10 14:47:05 -08:00
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
2017-07-25 22:30:36 -07:00
_environmentProviderMock . Object ,
_reporterMock . Object ,
2017-11-27 10:45:43 -08:00
CliFallbackFolderPath ,
_pathAdder . Object ) ;
2017-07-25 22:30:36 -07:00
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_nugetCachePrimerMock . Verify ( r = > r . PrimeCache ( ) , Times . Never ) ;
}
2017-11-27 10:45:43 -08:00
2017-11-10 14:47:05 -08:00
[Fact]
public void It_does_not_generate_the_aspnet_https_development_certificate_if_the_sentinel_exists ( )
{
_aspNetCertificateSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( true ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
_environmentProviderMock . Object ,
_reporterMock . Object ,
CliFallbackFolderPath ,
_pathAdder . Object ) ;
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . AspNetCertificateInstalled ) ) , Times . Never ) ;
_aspNetCoreCertificateGeneratorMock . Verify ( s = > s . GenerateAspNetCoreDevelopmentCertificate ( ) , Times . Never ) ;
}
[Fact]
public void It_does_not_generate_the_aspnet_https_development_certificate_when_the_user_has_set_the_DOTNET_SKIP_FIRST_TIME_EXPERIENCE_environment_variable ( )
{
_aspNetCertificateSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
_environmentProviderMock
. Setup ( e = > e . GetEnvironmentVariableAsBool ( "DOTNET_SKIP_FIRST_TIME_EXPERIENCE" , false ) )
. Returns ( true ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
_environmentProviderMock . Object ,
_reporterMock . Object ,
CliFallbackFolderPath ,
_pathAdder . Object ) ;
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . AspNetCertificateInstalled ) ) , Times . Never ) ;
_aspNetCoreCertificateGeneratorMock . Verify ( s = > s . GenerateAspNetCoreDevelopmentCertificate ( ) , Times . Never ) ;
}
[Fact]
public void It_does_not_generate_the_aspnet_https_development_certificate_when_the_user_has_set_the_DOTNET_GENERATE_ASPNET_CERTIFICATE_environment_variable ( )
{
_aspNetCertificateSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
_environmentProviderMock
. Setup ( e = > e . GetEnvironmentVariableAsBool ( "DOTNET_GENERATE_ASPNET_CERTIFICATE" , true ) )
. Returns ( false ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
_environmentProviderMock . Object ,
_reporterMock . Object ,
CliFallbackFolderPath ,
_pathAdder . Object ) ;
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . AspNetCertificateInstalled ) ) , Times . Never ) ;
_aspNetCoreCertificateGeneratorMock . Verify ( s = > s . GenerateAspNetCoreDevelopmentCertificate ( ) , Times . Never ) ;
}
[Fact]
public void It_generates_the_aspnet_https_development_certificate_if_the_sentinel_does_not_exist ( )
{
_aspNetCertificateSentinelMock . Setup ( n = > n . Exists ( ) ) . Returns ( false ) ;
_environmentProviderMock . Setup ( e = > e . GetEnvironmentVariableAsBool ( "DOTNET_GENERATE_ASPNET_CERTIFICATE" , true ) )
. Returns ( true ) ;
var dotnetFirstTimeUseConfigurer = new DotnetFirstTimeUseConfigurer (
_nugetCachePrimerMock . Object ,
_nugetCacheSentinelMock . Object ,
_firstTimeUseNoticeSentinelMock . Object ,
_aspNetCertificateSentinelMock . Object ,
_aspNetCoreCertificateGeneratorMock . Object ,
_environmentProviderMock . Object ,
_reporterMock . Object ,
CliFallbackFolderPath ,
_pathAdder . Object ) ;
dotnetFirstTimeUseConfigurer . Configure ( ) ;
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . FirstTimeWelcomeMessage ) ) ) ;
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . NugetCachePrimeMessage ) ) ) ;
_reporterMock . Verify ( r = > r . WriteLine ( It . Is < string > ( str = > str = = LocalizableStrings . AspNetCertificateInstalled ) ) ) ;
_aspNetCoreCertificateGeneratorMock . Verify ( s = > s . GenerateAspNetCoreDevelopmentCertificate ( ) , Times . Once ) ;
}
2017-11-27 10:45:43 -08:00
private class FakeCreateWillExistFirstTimeUseNoticeSentinel : IFirstTimeUseNoticeSentinel
{
private bool _exists ;
public FakeCreateWillExistFirstTimeUseNoticeSentinel ( bool exists )
{
_exists = exists ;
}
public void Dispose ( )
{
}
public bool Exists ( )
{
return _exists ;
}
public void CreateIfNotExists ( )
{
_exists = true ;
}
}
private class FakeCreateWillExistNuGetCacheSentinel : INuGetCacheSentinel
{
private bool _inProgressSentinelAlreadyExists ;
private bool _exists ;
public FakeCreateWillExistNuGetCacheSentinel ( bool inProgressSentinelAlreadyExists , bool exists )
{
_inProgressSentinelAlreadyExists = inProgressSentinelAlreadyExists ;
_exists = exists ;
}
public void Dispose ( )
{
}
public bool InProgressSentinelAlreadyExists ( )
{
return _inProgressSentinelAlreadyExists ;
}
public bool Exists ( )
{
return _exists ;
}
public void CreateIfNotExists ( )
{
_exists = true ;
}
public bool UnauthorizedAccess { get ; set ; }
}
2016-06-03 17:36:40 -07:00
}
}