internal static void ProjectClean(IProject project, string outputFolder) { var builder = new Builder.Builder(project, outputFolder); builder.OnProgress += Asd_OnProgress; builder.Clean(); }
static void Main(string[] args) { var diretor = new Diretor(); IBuilder builder = new Builder.Builder(); diretor.Builder = builder; diretor.ConstruirFerrari(); Console.WriteLine("Diretor - Ferrari"); Console.WriteLine(builder.GetResult().ListarPecas()); diretor.ConstruirMasserati(); Console.WriteLine("Diretor - Masserati"); Console.WriteLine(builder.GetResult().ListarPecas()); IBuilder builderComum = new Builder.Builder(); builderComum.MarcaCarro = "ferrari"; builderComum.BuildEtapaA(); builderComum.BuildEtapaB(); builderComum.BuildEtapaC(); Console.WriteLine("Builder Comum - Masserati"); Console.WriteLine(builderComum.GetResult().ListarPecas()); Console.ReadKey(); }
public void CanCustomizeIdentityOptions() { var builder = new Builder.Builder(new ServiceCollection().BuildServiceProvider()); builder.UseServices(services => { services.AddIdentity <IdentityUser>(); services.AddSetup <PasswordsNegativeLengthSetup>(); }); var setup = builder.ApplicationServices.GetService <IOptionsSetup <IdentityOptions> >(); Assert.IsType(typeof(PasswordsNegativeLengthSetup), setup); var optionsGetter = builder.ApplicationServices.GetService <IOptionsAccessor <IdentityOptions> >(); Assert.NotNull(optionsGetter); setup.Setup(optionsGetter.Options); var myOptions = optionsGetter.Options; Assert.True(myOptions.Password.RequireLowercase); Assert.True(myOptions.Password.RequireDigit); Assert.True(myOptions.Password.RequireNonLetterOrDigit); Assert.True(myOptions.Password.RequireUppercase); Assert.Equal(-1, myOptions.Password.RequiredLength); }
public void Pass_Execute_EncryptionLevels_Passwords(ProtectionLevel projectProtectionLevel, string buildArgumentsProtectionLevel, bool sendPassword, bool sendNewPassword) { // Setup var password = sendPassword ? Fakes.RandomString() : null; var newPassword = sendNewPassword ? Fakes.RandomString() : null; _projectMock.Setup(p => p.ProtectionLevel).Returns(projectProtectionLevel); _projectMock.Setup(p => p.Parameters).Returns(new Dictionary <string, IParameter>()); _buildArgumentsMock.Setup(ba => ba.ProtectionLevel).Returns(buildArgumentsProtectionLevel); _buildArgumentsMock.Setup(ba => ba.ProjectPath).Returns(Path.GetTempFileName()); _buildArgumentsMock.Setup(ba => ba.Password).Returns(password); _buildArgumentsMock.Setup(ba => ba.NewPassword).Returns(newPassword); _buildArgumentsMock.Setup(ba => ba.Parameters).Returns(new ReadOnlyDictionary <string, string>(new Dictionary <string, string>())); _buildArgumentsMock.Setup(ba => ba.Configuration).Returns(Fakes.RandomString()); var project = _projectMock.Object; var buildArguments = _buildArgumentsMock.Object; var logger = _loggerMock.Object; var builder = new Builder.Builder(logger, project); // Execute var exception = Record.Exception(() => builder.Build(buildArguments)); // Assert Assert.Null(exception); }
public void VerifyUseInMemoryLifetimes() { var builder = new Builder.Builder(new ServiceCollection().BuildServiceProvider()); builder.UseServices(services => services.AddIdentity<ApplicationUser>().AddInMemory()); var userStore = builder.ApplicationServices.GetService<IUserStore<ApplicationUser>>(); var roleStore = builder.ApplicationServices.GetService<IRoleStore<IdentityRole>>(); var userManager = builder.ApplicationServices.GetService<UserManager<ApplicationUser>>(); var roleManager = builder.ApplicationServices.GetService<RoleManager<IdentityRole>>(); Assert.NotNull(userStore); Assert.NotNull(userManager); Assert.NotNull(roleStore); Assert.NotNull(roleManager); var userStore2 = builder.ApplicationServices.GetService<IUserStore<ApplicationUser>>(); var roleStore2 = builder.ApplicationServices.GetService<IRoleStore<IdentityRole>>(); var userManager2 = builder.ApplicationServices.GetService<UserManager<ApplicationUser>>(); var roleManager2 = builder.ApplicationServices.GetService<RoleManager<IdentityRole>>(); // Stores are singleton, managers are scoped Assert.Equal(userStore, userStore2); Assert.Equal(userManager, userManager2); Assert.Equal(roleStore, roleStore2); Assert.Equal(roleManager, roleManager2); }
public void Pass_Execute_EchoParametersCoverage() { // Setup var xmlDocument = new XmlDocument(); xmlDocument.LoadXml("<root><parent><child>123</child></parent></root>"); var projectParameters = new Dictionary <string, IParameter> { { "Parameter1", CreateParameter("Parameter1", Fakes.RandomString(), false, ParameterSource.Original) }, { "SensitiveOriginalParameterNoValue", CreateParameter("SensitiveOriginalParameterNoValue", null, true, ParameterSource.Original) }, { "Parameter2", CreateParameter("Parameter2", Fakes.RandomString(), false, ParameterSource.Configuration) }, { "SensitiveConfigParameterNoValue", CreateParameter("SensitiveConfigParameterNoValue", null, true, ParameterSource.Configuration) }, { "Parameter3", CreateParameter("Parameter3", Fakes.RandomString(), false, ParameterSource.Manual) } }; _projectMock.Setup(p => p.ProtectionLevel).Returns(ProtectionLevel.DontSaveSensitive); _projectMock.Setup(p => p.Parameters).Returns(projectParameters); _buildArgumentsMock.Setup(ba => ba.ProjectPath).Returns(Path.GetTempFileName()); _buildArgumentsMock.Setup(ba => ba.Parameters).Returns(new ReadOnlyDictionary <string, string>(new Dictionary <string, string>())); _buildArgumentsMock.Setup(ba => ba.Configuration).Returns(Fakes.RandomString()); var project = _projectMock.Object; var buildArguments = _buildArgumentsMock.Object; var logger = _loggerMock.Object; var builder = new Builder.Builder(logger, project); // Execute var exception = Record.Exception(() => builder.Build(buildArguments)); // Assert Assert.Null(exception); }
public async Task EnsureStartupUsageWorks() { var context = CreateContext(true); IBuilder builder = new Builder.Builder(new ServiceCollection().BuildServiceProvider()); builder.UseServices(services => { services.AddEntityFramework().AddSqlServer(); services.AddIdentitySqlServer(); services.SetupOptions <DbContextOptions>(options => options.UseSqlServer(ConnectionString)); // todo: constructor resolution doesn't work well with IdentityDbContext since it has 4 constructors services.AddInstance(context); }); var userStore = builder.ApplicationServices.GetService <IUserStore <IdentityUser> >(); var userManager = builder.ApplicationServices.GetService <UserManager <IdentityUser> >(); Assert.NotNull(userStore); Assert.NotNull(userManager); const string userName = "******"; const string password = "******"; var user = new IdentityUser { UserName = userName }; IdentityResultAssert.IsSuccess(await userManager.CreateAsync(user, password)); IdentityResultAssert.IsSuccess(await userManager.DeleteAsync(user)); }
public void Fail_Execute_InvalidContentReleaseNotes(string releaseNotes) { // Setup var releaseNotesPath = Path.Combine(_workingFolder, Guid.NewGuid().ToString("N")); File.Create(releaseNotesPath).Close(); if (releaseNotes != null) { File.WriteAllText(releaseNotesPath, releaseNotes); } _projectMock.Setup(p => p.ProtectionLevel).Returns(ProtectionLevel.DontSaveSensitive); _projectMock.Setup(p => p.Parameters).Returns(new Dictionary <string, IParameter>()); _buildArgumentsMock.Setup(ba => ba.ProjectPath).Returns(Path.GetTempFileName()); _buildArgumentsMock.Setup(ba => ba.Parameters).Returns(new ReadOnlyDictionary <string, string>(new Dictionary <string, string>())); _buildArgumentsMock.Setup(ba => ba.Configuration).Returns(Fakes.RandomString()); _buildArgumentsMock.Setup(ba => ba.ReleaseNotes).Returns(releaseNotesPath); var project = _projectMock.Object; var buildArguments = _buildArgumentsMock.Object; var logger = _loggerMock.Object; var builder = new Builder.Builder(logger, project); // Execute var exception = Record.Exception(() => builder.Build(buildArguments)); // Assert Assert.NotNull(exception); Assert.IsType <InvalidReleaseNotesException>(exception); }
public void VerifyUseInMemoryLifetimes() { var builder = new Builder.Builder(new ServiceCollection().BuildServiceProvider()); builder.UseServices(services => services.AddIdentity <ApplicationUser>().AddInMemory()); var userStore = builder.ApplicationServices.GetService <IUserStore <ApplicationUser> >(); var roleStore = builder.ApplicationServices.GetService <IRoleStore <IdentityRole> >(); var userManager = builder.ApplicationServices.GetService <UserManager <ApplicationUser> >(); var roleManager = builder.ApplicationServices.GetService <RoleManager <IdentityRole> >(); Assert.NotNull(userStore); Assert.NotNull(userManager); Assert.NotNull(roleStore); Assert.NotNull(roleManager); var userStore2 = builder.ApplicationServices.GetService <IUserStore <ApplicationUser> >(); var roleStore2 = builder.ApplicationServices.GetService <IRoleStore <IdentityRole> >(); var userManager2 = builder.ApplicationServices.GetService <UserManager <ApplicationUser> >(); var roleManager2 = builder.ApplicationServices.GetService <RoleManager <IdentityRole> >(); // Stores are singleton, managers are scoped Assert.Equal(userStore, userStore2); Assert.Equal(userManager, userManager2); Assert.Equal(roleStore, roleStore2); Assert.Equal(roleManager, roleManager2); }
public async Task EnsureStartupUsageWorks() { var context = CreateContext(true); IBuilder builder = new Builder.Builder(new ServiceCollection().BuildServiceProvider()); builder.UseServices(services => { services.AddEntityFramework().AddSqlServer(); services.AddIdentitySqlServer(); services.SetupOptions<DbContextOptions>(options => options.UseSqlServer(ConnectionString)); // todo: constructor resolution doesn't work well with IdentityDbContext since it has 4 constructors services.AddInstance(context); }); var userStore = builder.ApplicationServices.GetService<IUserStore<IdentityUser>>(); var userManager = builder.ApplicationServices.GetService<UserManager<IdentityUser>>(); Assert.NotNull(userStore); Assert.NotNull(userManager); const string userName = "******"; const string password = "******"; var user = new IdentityUser { UserName = userName }; IdentityResultAssert.IsSuccess(await userManager.CreateAsync(user, password)); IdentityResultAssert.IsSuccess(await userManager.DeleteAsync(user)); }
public void Pass_New() { // Setup // Execute var builder = new Builder.Builder(); // Assert Assert.NotNull(builder); }
public void Pass_Execute_BuildArgumentsParametersUpdate() { // Setup var outputParameters = new List <TestBuildParameterUpdateResult>(); var inputParameers = new List <TestBuildParameterUpdateInput>(); var paramsCount = Fakes.RandomInt(20, 100); for (var i = 0; i < paramsCount; i++) { inputParameers.Add(new TestBuildParameterUpdateInput() { Value = Fakes.RandomString(), // to ensure it is unique Name = $"{Guid.NewGuid():N}-{Fakes.RandomString()}" }); } _projectMock.Setup(p => p.ProtectionLevel).Returns(ProtectionLevel.DontSaveSensitive); _projectMock.Setup(p => p.Parameters).Returns(new Dictionary <string, IParameter>()); _projectMock.Setup(p => p.UpdateParameter(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <ParameterSource>())).Callback( (string parameterName, string value, ParameterSource parameterSource) => { outputParameters.Add(new TestBuildParameterUpdateResult { Name = parameterName, Value = value, Source = parameterSource }); }); _buildArgumentsMock.Setup(ba => ba.ProjectPath).Returns(Path.GetTempFileName()); _buildArgumentsMock.Setup(ba => ba.Parameters).Returns(new ReadOnlyDictionary <string, string>(inputParameers.ToDictionary(i => i.Name, i => i.Value))); _buildArgumentsMock.Setup(ba => ba.Configuration).Returns(Fakes.RandomString()); var project = _projectMock.Object; var buildArguments = _buildArgumentsMock.Object; var logger = _loggerMock.Object; var builder = new Builder.Builder(logger, project); // Execute var exception = Record.Exception(() => builder.Build(buildArguments)); // Assert Assert.Null(exception); Assert.True(outputParameters.Count == paramsCount); for (var cnt = 0; cnt < paramsCount; cnt++) { Assert.True( outputParameters[cnt].Value == inputParameers[cnt].Value && outputParameters[cnt].Name == inputParameers[cnt].Name && outputParameters[cnt].Source == ParameterSource.Manual ); } }
public void Fail_Execute_ProjectFileNotFoundException() { // Setup var buildArguments = new BuildArguments(_workingFolder, null, null, null, null, null, Fakes.RandomString(), null, null); var logger = _loggerMock.Object; var project = _projectMock.Object; // Execute var builder = new Builder.Builder(logger, project); var exception = Record.Exception(() => builder.Build(buildArguments)); Assert.NotNull(exception); Assert.IsType <ProjectFileNotFoundException>(exception); }
public void Fail_Execute_NoArgs() { // Setup var project = _projectMock.Object; var logger = _loggerMock.Object; var builder = new Builder.Builder(logger, project); // Execute var exception = Record.Exception(() => builder.Build(null)); // Assert Assert.NotNull(exception); Assert.IsType <ArgumentNullException>(exception); }
public void Pass_Validate_ProtectionLevelPasswordCombination(string protectionLevelString, bool password, bool newPassword) { // Setup var builder = new Builder.Builder(_loggerMock.Object, _projectMock.Object); _projectMock.Setup(p => p.Parameters).Returns(new Dictionary <string, IParameter>()); // Execute var exception = Record.Exception( () => builder.Build(new BuildArguments(Fakes.RandomString(), Fakes.RandomString(), null, protectionLevelString, password ? Fakes.RandomString() : null, newPassword ? Fakes.RandomString() : null, Fakes.RandomString(), null, null))); // Assert Assert.Null(exception); }
public void CanSetupIdentityOptions() { var app = new Builder.Builder(new ServiceCollection().BuildServiceProvider()); app.UseServices(services => { services.AddIdentity <IdentityUser>().SetupOptions(options => options.User.RequireUniqueEmail = true); }); var optionsGetter = app.ApplicationServices.GetService <IOptionsAccessor <IdentityOptions> >(); Assert.NotNull(optionsGetter); var myOptions = optionsGetter.Options; Assert.True(myOptions.User.RequireUniqueEmail); }
public void Fail_Validate_ProtectionLevelPasswordCombination(string protectionLevelString) { // Setup var builder = new Builder.Builder(_loggerMock.Object, _projectMock.Object); _projectMock.Setup(p => p.Parameters).Returns(new Dictionary <string, IParameter>()); var testException = new PasswordRequiredException(protectionLevelString); // Execute var exception = Record.Exception(() => builder.Build(new BuildArguments(Fakes.RandomString(), Fakes.RandomString(), null, protectionLevelString, null, null, Fakes.RandomString(), null, null))); // Assert Assert.NotNull(exception); Assert.IsType <PasswordRequiredException>(exception); Assert.Equal(exception.Message, testException.Message, StringComparer.InvariantCultureIgnoreCase); }
public void Pass_Execute_NullProjectPath() { // Setup var projectPath = Path.Combine(_workingFolder, $"{Fakes.RandomString()}.dtproj"); File.Create(projectPath).Close(); _projectMock.Setup(p => p.Parameters).Returns(() => new Dictionary <string, IParameter>()); var buildArguments = new BuildArguments(_workingFolder, null, null, null, null, null, Fakes.RandomString(), null, null); var logger = _loggerMock.Object; var project = _projectMock.Object; // Execute var builder = new Builder.Builder(logger, project); builder.Build(buildArguments); }
public async Task EnsureStartupUsageWorks() { var builder = new Builder.Builder(new ServiceCollection().BuildServiceProvider()); builder.UseServices(services => services.AddIdentity <ApplicationUser>().AddInMemory()); var userStore = builder.ApplicationServices.GetService <IUserStore <ApplicationUser> >(); var roleStore = builder.ApplicationServices.GetService <IRoleStore <IdentityRole> >(); var userManager = builder.ApplicationServices.GetService <UserManager <ApplicationUser> >(); var roleManager = builder.ApplicationServices.GetService <RoleManager <IdentityRole> >(); Assert.NotNull(userStore); Assert.NotNull(userManager); Assert.NotNull(roleStore); Assert.NotNull(roleManager); await CreateAdminUser(builder.ApplicationServices); }
public async Task EnsureStartupUsageWorks() { var builder = new Builder.Builder(new ServiceCollection().BuildServiceProvider()); builder.UseServices(services => services.AddIdentity<ApplicationUser>().AddInMemory()); var userStore = builder.ApplicationServices.GetService<IUserStore<ApplicationUser>>(); var roleStore = builder.ApplicationServices.GetService<IRoleStore<IdentityRole>>(); var userManager = builder.ApplicationServices.GetService<UserManager<ApplicationUser>>(); var roleManager = builder.ApplicationServices.GetService<RoleManager<IdentityRole>>(); Assert.NotNull(userStore); Assert.NotNull(userManager); Assert.NotNull(roleStore); Assert.NotNull(roleManager); await CreateAdminUser(builder.ApplicationServices); }
public void Building_Booleans() { const int seed = 20; var builder = new Builder.Builder(seed); var expected = new List <bool>(); const int total = 2000; for (var i = 0; i < total; i++) { expected.Add(builder.Bool()); } var result = new Builder.Builder(seed) .Observable(b => b.Bool()) .Take(total) .ToListObservable(); Assert.IsTrue(result.SequenceEqual(expected)); }
public void Building_Doubles() { const int seed = 20; var builder = new Builder.Builder(seed); var expected = new List <double>(); const int total = 2000; const int max = 1000; const int min = 100; for (var i = 0; i < total; i++) { expected.Add(builder.Double(min, max)); } var result = new Builder.Builder(seed) .Observable(b => b.Double(min, max)) .Take(total) .ToListObservable(); Assert.IsTrue(result.SequenceEqual(expected)); }
public async Task VerifyAccountControllerSignIn(bool isPersistent) { IBuilder app = new Builder.Builder(new ServiceCollection().BuildServiceProvider()); app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = ClaimsIdentityOptions.DefaultAuthenticationType }); var context = new Mock <HttpContext>(); var response = new Mock <HttpResponse>(); context.Setup(c => c.Response).Returns(response.Object).Verifiable(); response.Setup(r => r.SignIn(It.IsAny <ClaimsIdentity>(), It.Is <AuthenticationProperties>(v => v.IsPersistent == isPersistent))).Verifiable(); var contextAccessor = new Mock <IContextAccessor <HttpContext> >(); contextAccessor.Setup(a => a.Value).Returns(context.Object); app.UseServices(services => { services.AddInstance(contextAccessor.Object); services.AddIdentity <ApplicationUser, IdentityRole>().AddInMemory().AddAuthentication(); }); // Act var user = new ApplicationUser { UserName = "******" }; const string password = "******"; var userManager = app.ApplicationServices.GetService <UserManager <ApplicationUser> >(); var signInManager = app.ApplicationServices.GetService <SignInManager <ApplicationUser> >(); IdentityResultAssert.IsSuccess(await userManager.CreateAsync(user, password)); var result = await signInManager.PasswordSignInAsync(user.UserName, password, isPersistent, false); // Assert Assert.Equal(SignInStatus.Success, result); context.VerifyAll(); response.VerifyAll(); contextAccessor.VerifyAll(); }
public void Pass_Execute_CustomOutputFolder() { // Setup _projectMock.Setup(p => p.ProtectionLevel).Returns(ProtectionLevel.DontSaveSensitive); _projectMock.Setup(p => p.Parameters).Returns(new Dictionary <string, IParameter>()); _buildArgumentsMock.Setup(ba => ba.ProjectPath).Returns(Path.GetTempFileName()); _buildArgumentsMock.Setup(ba => ba.Parameters).Returns(new ReadOnlyDictionary <string, string>(new Dictionary <string, string>())); _buildArgumentsMock.Setup(ba => ba.Configuration).Returns(Fakes.RandomString()); _buildArgumentsMock.Setup(ba => ba.OutputFolder).Returns(Fakes.RandomString()); var project = _projectMock.Object; var buildArguments = _buildArgumentsMock.Object; var logger = _loggerMock.Object; var builder = new Builder.Builder(logger, project); // Execute var exception = Record.Exception(() => builder.Build(buildArguments)); // Assert Assert.Null(exception); }
public async Task VerifyAccountControllerSignIn(bool isPersistent) { IBuilder app = new Builder.Builder(new ServiceCollection().BuildServiceProvider()); app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = ClaimsIdentityOptions.DefaultAuthenticationType }); var context = new Mock<HttpContext>(); var response = new Mock<HttpResponse>(); context.Setup(c => c.Response).Returns(response.Object).Verifiable(); response.Setup(r => r.SignIn(It.IsAny<ClaimsIdentity>(), It.Is<AuthenticationProperties>(v => v.IsPersistent == isPersistent))).Verifiable(); var contextAccessor = new Mock<IContextAccessor<HttpContext>>(); contextAccessor.Setup(a => a.Value).Returns(context.Object); app.UseServices(services => { services.AddInstance(contextAccessor.Object); services.AddIdentity<ApplicationUser, IdentityRole>().AddInMemory().AddAuthentication(); }); // Act var user = new ApplicationUser { UserName = "******" }; const string password = "******"; var userManager = app.ApplicationServices.GetService<UserManager<ApplicationUser>>(); var signInManager = app.ApplicationServices.GetService<SignInManager<ApplicationUser>>(); IdentityResultAssert.IsSuccess(await userManager.CreateAsync(user, password)); var result = await signInManager.PasswordSignInAsync(user.UserName, password, isPersistent, false); // Assert Assert.Equal(SignInStatus.Success, result); context.VerifyAll(); response.VerifyAll(); contextAccessor.VerifyAll(); }
public void Null_Builder_Throws() { Builder.Builder builder = null; Assert.Throws <ArgumentNullException>(() => builder.Observable(b => b.Int())); }
public LambdaResolver(Builder.Builder builder) { _builder = builder; }