Ejemplo n.º 1
0
 public ReactTemplateTest(ProjectFactoryFixture projectFactory, BrowserFixture browserFixture, ITestOutputHelper output)
     : base(projectFactory, browserFixture, output)
 {
 }
Ejemplo n.º 2
0
 public ReactReduxTemplateTest(BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output)
 {
 }
Ejemplo n.º 3
0
 public ErrorBoundaryTest(BrowserFixture browserFixture, ToggleExecutionModeServerFixture <Program> serverFixture, ITestOutputHelper output)
     : base(browserFixture, serverFixture, output)
 {
 }
Ejemplo n.º 4
0
 public ServerDynamicComponentRenderingTest(BrowserFixture browserFixture, ToggleExecutionModeServerFixture <Program> serverFixture, ITestOutputHelper output)
     : base(browserFixture, serverFixture.WithServerExecution(), output)
 {
 }
Ejemplo n.º 5
0
 public CompressBobrilFunctionalTest(BrowserFixture browserFixture) : base(browserFixture)
 {
     RuntimeTemplate = File.ReadAllText($"{BobrilTestPath}/TestRuntime.html");
 }
Ejemplo n.º 6
0
 public ServerKeyTest(BrowserFixture browserFixture, ToggleExecutionModeServerFixture <Program> serverFixture, ITestOutputHelper output)
     : base(browserFixture, serverFixture.WithServerExecution(), output)
 {
 }
 public SpaTemplateTestBase(
     ProjectFactoryFixture projectFactory, BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output)
 {
     ProjectFactory = projectFactory;
 }
Ejemplo n.º 8
0
        public async Task BlazorServerTemplateWorks_NoAuth()
        {
            // Additional arguments are needed. See: https://github.com/dotnet/aspnetcore/issues/24278
            Environment.SetEnvironmentVariable("EnableDefaultScopedCssItems", "true");

            Project = await ProjectFactory.GetOrCreateProject("blazorservernoauth", Output);

            var createResult = await Project.RunDotNetNewAsync("blazorserver");

            Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", Project, createResult));

            var publishResult = await Project.RunDotNetPublishAsync();

            Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", Project, publishResult));

            // Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
            // The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
            // later, while the opposite is not true.

            var buildResult = await Project.RunDotNetBuildAsync();

            Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", Project, buildResult));

            using (var aspNetProcess = Project.StartBuiltProjectAsync())
            {
                Assert.False(
                    aspNetProcess.Process.HasExited,
                    ErrorMessages.GetFailedProcessMessageOrEmpty("Run built project", Project, aspNetProcess.Process));

                await aspNetProcess.AssertStatusCode("/", HttpStatusCode.OK, "text/html");

                if (BrowserFixture.IsHostAutomationSupported())
                {
                    aspNetProcess.VisitInBrowser(Browser);
                    TestBasicNavigation();
                }
                else
                {
                    BrowserFixture.EnforceSupportedConfigurations();
                }
            }

            using (var aspNetProcess = Project.StartPublishedProjectAsync())
            {
                Assert.False(
                    aspNetProcess.Process.HasExited,
                    ErrorMessages.GetFailedProcessMessageOrEmpty("Run published project", Project, aspNetProcess.Process));

                await aspNetProcess.AssertStatusCode("/", HttpStatusCode.OK, "text/html");

                if (BrowserFixture.IsHostAutomationSupported())
                {
                    aspNetProcess.VisitInBrowser(Browser);
                    TestBasicNavigation();
                }
                else
                {
                    BrowserFixture.EnforceSupportedConfigurations();
                }
            }
        }
Ejemplo n.º 9
0
 public BindTest(BrowserFixture browserFixture, DevHostServerFixture <Program> serverFixture)
     : base(browserFixture, serverFixture)
 {
     Navigate(ServerPathBase, noReload: true);
     MountTestComponent <BindCasesComponent>();
 }
Ejemplo n.º 10
0
 public GlobalizationTest(BrowserFixture browserFixture, TServerFixture serverFixture, ITestOutputHelper output)
     : base(browserFixture, serverFixture, output)
 {
 }
Ejemplo n.º 11
0
 public ComponentRenderingTest(BrowserFixture browserFixture, DevHostServerFixture <Program> serverFixture)
     : base(browserFixture, serverFixture)
 {
     Navigate("/", noReload: true);
 }
Ejemplo n.º 12
0
 public AngularTemplateTest(BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output)
 {
 }
 public RazorComponentsTemplateTest(ProjectFactoryFixture projectFactory, BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output)
 {
     ProjectFactory = projectFactory;
 }
Ejemplo n.º 14
0
 public HostedInAspNetTest(BrowserFixture browserFixture, AspNetSiteServerFixture serverFixture)
     : base(browserFixture, serverFixture)
 {
     serverFixture.BuildWebHostMethod = HostedInAspNet.Server.Program.BuildWebHost;
     serverFixture.Environment        = AspNetEnvironment.Development;
 }
 public BlazorServerTemplateTest(ProjectFactoryFixture projectFactory, BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output)
 {
     ProjectFactory = projectFactory;
 }
Ejemplo n.º 16
0
 public SpaTemplateTestBase(BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output)
 {
 }
Ejemplo n.º 17
0
 public ServerInteropTest(BrowserFixture browserFixture, ToggleExecutionModeServerFixture <Program> serverFixture, ITestOutputHelper output)
     : base(browserFixture, serverFixture.WithServerExecution().WithAdditionalArguments(GetAdditionalArguments()), output)
 {
 }
Ejemplo n.º 18
0
        private async Task BlazorWasmHostedTemplate_IndividualAuth_Works(bool useLocalDb)
        {
            // Additional arguments are needed. See: https://github.com/dotnet/aspnetcore/issues/24278
            Environment.SetEnvironmentVariable("EnableDefaultScopedCssItems", "true");

            var project = await ProjectFactory.GetOrCreateProject("blazorhostedindividual" + (useLocalDb ? "uld" : ""), Output);

            var createResult = await project.RunDotNetNewAsync("blazorwasm", args : new[] { "--hosted", "-au", "Individual", useLocalDb ? "-uld" : "" });

            Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));

            var serverProject = GetSubProject(project, "Server", $"{project.ProjectName}.Server");

            var serverProjectFileContents = ReadFile(serverProject.TemplateOutputDir, $"{serverProject.ProjectName}.csproj");

            if (!useLocalDb)
            {
                Assert.Contains(".db", serverProjectFileContents);
            }

            var appSettings     = ReadFile(serverProject.TemplateOutputDir, "appsettings.json");
            var element         = JsonSerializer.Deserialize <JsonElement>(appSettings);
            var clientsProperty = element.GetProperty("IdentityServer").EnumerateObject().Single().Value.EnumerateObject().Single();
            var replacedSection = element.GetRawText().Replace(clientsProperty.Name, serverProject.ProjectName.Replace(".Server", ".Client"));
            var appSettingsPath = Path.Combine(serverProject.TemplateOutputDir, "appsettings.json");

            File.WriteAllText(appSettingsPath, replacedSection);

            var publishResult = await serverProject.RunDotNetPublishAsync();

            Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", serverProject, publishResult));

            // Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
            // The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
            // later, while the opposite is not true.

            var buildResult = await serverProject.RunDotNetBuildAsync();

            Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", serverProject, buildResult));

            var migrationsResult = await serverProject.RunDotNetEfCreateMigrationAsync("blazorwasm");

            Assert.True(0 == migrationsResult.ExitCode, ErrorMessages.GetFailedProcessMessage("run EF migrations", serverProject, migrationsResult));
            serverProject.AssertEmptyMigration("blazorwasm");

            if (useLocalDb)
            {
                var dbUpdateResult = await serverProject.RunDotNetEfUpdateDatabaseAsync();

                Assert.True(0 == dbUpdateResult.ExitCode, ErrorMessages.GetFailedProcessMessage("update database", serverProject, dbUpdateResult));
            }

            await BuildAndRunTest(project.ProjectName, serverProject, usesAuth : true);

            UpdatePublishedSettings(serverProject);

            if (BrowserFixture.IsHostAutomationSupported())
            {
                using var aspNetProcess = serverProject.StartPublishedProjectAsync();

                Assert.False(
                    aspNetProcess.Process.HasExited,
                    ErrorMessages.GetFailedProcessMessageOrEmpty("Run published project", serverProject, aspNetProcess.Process));

                await aspNetProcess.AssertStatusCode("/", HttpStatusCode.OK, "text/html");

                aspNetProcess.VisitInBrowser(Browser);
                TestBasicNavigation(project.ProjectName, usesAuth: true);
            }
            else
            {
                BrowserFixture.EnforceSupportedConfigurations();
            }
        }
Ejemplo n.º 19
0
 public RazorComponentsTemplateTest(BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output)
 {
 }
Ejemplo n.º 20
0
 public ServerAuthTest(BrowserFixture browserFixture, ToggleExecutionModeServerFixture <BasicTestApp.Program> serverFixture, ITestOutputHelper output)
     : base(browserFixture, serverFixture.WithServerExecution(), output, ExecutionMode.Server)
 {
 }
        // Rather than using [Theory] to pass each of the different values for 'template',
        // it's important to distribute the SPA template tests over different test classes
        // so they can be run in parallel. Xunit doesn't parallelize within a test class.
        protected async Task SpaTemplateImplAsync(
            string key,
            string template,
            bool useLocalDb = false,
            bool usesAuth   = false)
        {
            Project = await ProjectFactory.GetOrCreateProject(key, Output);

            using var createResult = await Project.RunDotNetNewAsync(template, auth : usesAuth? "Individual" : null, language : null, useLocalDb);

            Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", Project, createResult));

            // We shouldn't have to do the NPM restore in tests because it should happen
            // automatically at build time, but by doing it up front we can avoid having
            // multiple NPM installs run concurrently which otherwise causes errors when
            // tests run in parallel.
            var clientAppSubdirPath = Path.Combine(Project.TemplateOutputDir, "ClientApp");

            ValidatePackageJson(clientAppSubdirPath);

            var projectFileContents = ReadFile(Project.TemplateOutputDir, $"{Project.ProjectName}.csproj");

            if (usesAuth && !useLocalDb)
            {
                Assert.Contains(".db", projectFileContents);
            }

            using var npmRestoreResult = await Project.RestoreWithRetryAsync(Output, clientAppSubdirPath);

            Assert.True(0 == npmRestoreResult.ExitCode, ErrorMessages.GetFailedProcessMessage("npm restore", Project, npmRestoreResult));

            using var lintResult = await ProcessEx.RunViaShellAsync(Output, clientAppSubdirPath, "npm run lint");

            Assert.True(0 == lintResult.ExitCode, ErrorMessages.GetFailedProcessMessage("npm run lint", Project, lintResult));

            if (template == "react" || template == "reactredux")
            {
                using var testResult = await ProcessEx.RunViaShellAsync(Output, clientAppSubdirPath, "npm run test");

                Assert.True(0 == testResult.ExitCode, ErrorMessages.GetFailedProcessMessage("npm run test", Project, testResult));
            }

            using var publishResult = await Project.RunDotNetPublishAsync();

            Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", Project, publishResult));

            // Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
            // The output from publish will go into bin/Release/netcoreapp3.0/publish and won't be affected by calling build
            // later, while the opposite is not true.

            using var buildResult = await Project.RunDotNetBuildAsync();

            Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", Project, buildResult));

            // localdb is not installed on the CI machines, so skip it.
            var shouldVisitFetchData = !(useLocalDb && Project.IsCIEnvironment);

            if (usesAuth)
            {
                using var migrationsResult = await Project.RunDotNetEfCreateMigrationAsync(template);

                Assert.True(0 == migrationsResult.ExitCode, ErrorMessages.GetFailedProcessMessage("run EF migrations", Project, migrationsResult));
                Project.AssertEmptyMigration(template);

                if (shouldVisitFetchData)
                {
                    using var dbUpdateResult = await Project.RunDotNetEfUpdateDatabaseAsync();

                    Assert.True(0 == dbUpdateResult.ExitCode, ErrorMessages.GetFailedProcessMessage("update database", Project, dbUpdateResult));
                }
            }

            using (var aspNetProcess = Project.StartBuiltProjectAsync())
            {
                Assert.False(
                    aspNetProcess.Process.HasExited,
                    ErrorMessages.GetFailedProcessMessageOrEmpty("Run built project", Project, aspNetProcess.Process));

                await WarmUpServer(aspNetProcess);

                await aspNetProcess.AssertStatusCode("/", HttpStatusCode.OK, "text/html");

                if (BrowserFixture.IsHostAutomationSupported())
                {
                    var(browser, logs) = await BrowserFixture.GetOrCreateBrowserAsync(Output, $"{Project.ProjectName}.build");

                    aspNetProcess.VisitInBrowser(browser);
                    TestBasicNavigation(visitFetchData: shouldVisitFetchData, usesAuth, browser, logs);
                }
                else
                {
                    BrowserFixture.EnforceSupportedConfigurations();
                }
            }

            if (usesAuth)
            {
                UpdatePublishedSettings();
            }

            using (var aspNetProcess = Project.StartPublishedProjectAsync())
            {
                Assert.False(
                    aspNetProcess.Process.HasExited,
                    ErrorMessages.GetFailedProcessMessageOrEmpty("Run published project", Project, aspNetProcess.Process));

                await WarmUpServer(aspNetProcess);

                await aspNetProcess.AssertStatusCode("/", HttpStatusCode.OK, "text/html");

                if (BrowserFixture.IsHostAutomationSupported())
                {
                    var(browser, logs) = await BrowserFixture.GetOrCreateBrowserAsync(Output, $"{Project.ProjectName}.publish");

                    aspNetProcess.VisitInBrowser(browser);
                    TestBasicNavigation(visitFetchData: shouldVisitFetchData, usesAuth, browser, logs);
                }
                else
                {
                    BrowserFixture.EnforceSupportedConfigurations();
                }
            }
        }
Ejemplo n.º 22
0
 public RoutingTest(BrowserFixture browserFixture, DevHostServerFixture <Program> serverFixture)
     : base(browserFixture, serverFixture)
 {
     _server = serverFixture;
     Navigate(ServerPathBase, noReload: true);
 }