コード例 #1
0
ファイル: WebSocketTest.cs プロジェクト: Xamarui/Katana
        public async Task WebsocketBasic(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, WebsocketBasicConfiguration);

                using (var client = new ClientWebSocket())
                {
                    await client.ConnectAsync(new Uri(applicationUrl.Replace("http://", "ws://")), CancellationToken.None);

                    var receiveBody = new byte[100];

                    for (int i = 0; i < 4; i++)
                    {
                        var message = "Message " + i.ToString();
                        byte[] sendBody = Encoding.UTF8.GetBytes(message);
                        await client.SendAsync(new ArraySegment<byte>(sendBody), WebSocketMessageType.Text, true, CancellationToken.None);
                        var receiveResult = await client.ReceiveAsync(new ArraySegment<byte>(receiveBody), CancellationToken.None);

                        Assert.Equal(WebSocketMessageType.Text, receiveResult.MessageType);
                        Assert.True(receiveResult.EndOfMessage);
                        Assert.Equal(sendBody.Length, receiveResult.Count);
                        Assert.Equal(message, Encoding.UTF8.GetString(receiveBody, 0, receiveResult.Count));
                    }
                }
            }
        }
コード例 #2
0
        public void Static_EmbeddedFileSystem(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, EmbeddedFileSystemConfiguration);
                var httpClient = new HttpClient() { BaseAddress = new Uri(applicationUrl) };

                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleAVI.avi", "video/x-msvideo");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleC.c", "text/plain");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleCHM.CHM", "application/octet-stream");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleCPP.cpp", "text/plain");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleCSS.css", "text/css");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleCSV.csv", "application/octet-stream");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleCUR.cur", "application/octet-stream");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleDISCO.disco", "text/xml");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleDOC.DOC", "application/msword");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleDOCX.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleHTM.htm", "text/html");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleHTML.html", "text/html");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleICO.ico", "image/x-icon");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleJPEG.jpg", "image/jpeg");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SampleJPG.jpg", "image/jpeg");
                DownloadAndCompareFiles(httpClient, "RequirementFiles.EmbeddedResources.SamplePNG.png", "image/png");

                //Unknown MIME types should not be served by default
                var response = httpClient.GetAsync("RequirementFiles.EmbeddedResources.Unknown.Unknown").Result;
                Assert.Equal<HttpStatusCode>(HttpStatusCode.NotFound, response.StatusCode);
            }
        }
コード例 #3
0
        public void OwinCallCancelled(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var serverInstance = new NotificationServer();
                serverInstance.StartNotificationService();

                string applicationUrl = deployer.Deploy(hostType, Configuration);

                try
                {
                    Trace.WriteLine(string.Format("Making a request to url : ", applicationUrl));
                    HttpClient httpClient = new HttpClient();
                    Task<HttpResponseMessage> response = httpClient.GetAsync(applicationUrl);
                    response.Wait(1 * 1000);
                    httpClient.CancelPendingRequests();
                    bool receivedNotification = serverInstance.NotificationReceived.WaitOne(20 * 1000);
                    Assert.True(receivedNotification, "CallCancelled CancellationToken was not issued on cancelling the call");
                }
                finally
                {
                    serverInstance.Dispose();
                }
            }
        }
コード例 #4
0
        public void Static_ValidIfModifiedSince(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, ValidModifiedSinceConfiguration);
                var httpClient = new HttpClient() { BaseAddress = new Uri(applicationUrl) };
                var fileContent = File.ReadAllBytes(@"RequirementFiles/Dir1/RangeRequest.txt");

                var response = httpClient.GetAsync(@"RequirementFiles/Dir1/RangeRequest.txt").Result;
                Assert.Equal<HttpStatusCode>(HttpStatusCode.OK, response.StatusCode);

                //Modified since = lastmodified. Expect a 304
                httpClient.DefaultRequestHeaders.IfModifiedSince = response.Content.Headers.LastModified;
                response = httpClient.GetAsync(@"RequirementFiles/Dir1/RangeRequest.txt").Result;
                Assert.Equal<HttpStatusCode>(HttpStatusCode.NotModified, response.StatusCode);

                //Modified since > lastmodified. Expect a 304
                httpClient.DefaultRequestHeaders.IfModifiedSince = response.Content.Headers.LastModified.Value.AddMinutes(12);
                response = httpClient.GetAsync(@"RequirementFiles/Dir1/RangeRequest.txt").Result;
                Assert.Equal<HttpStatusCode>(HttpStatusCode.NotModified, response.StatusCode);

                //Modified since < lastmodified. Expect an OK. 
                httpClient.DefaultRequestHeaders.IfModifiedSince = response.Content.Headers.LastModified.Value.Subtract(new TimeSpan(10 * 1000));
                response = httpClient.GetAsync(@"RequirementFiles/Dir1/RangeRequest.txt").Result;
                Assert.Equal<HttpStatusCode>(HttpStatusCode.OK, response.StatusCode);
                CompareBytes(fileContent, response.Content.ReadAsByteArrayAsync().Result, 0, fileContent.Length - 1);

                //Modified since is an invalid date string. Expect an OK. 
                httpClient.DefaultRequestHeaders.TryAddWithoutValidation("If-Modified-Since", "InvalidDate");
                response = httpClient.GetAsync(@"RequirementFiles/Dir1/RangeRequest.txt").Result;
                Assert.Equal<HttpStatusCode>(HttpStatusCode.OK, response.StatusCode);
            }
        }
コード例 #5
0
        public void ExplicitlyRegisterOwinHttpHandler()
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                deployer.AutomaticAppStartupInWebHost = false;
                string url = deployer.Deploy(HostType.IIS);
                var webConfigPath = deployer.GetWebConfigPath();

                var addHandler = "<system.webServer>" +
                                            "<handlers>" +
                                                "<add name=\"Owin\" verb=\"*\" type=\"Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb\" path=\"*\" />" +
                                            "</handlers>" +
                                        "</system.webServer>";

                var configuration = new XmlDocument() { InnerXml = File.ReadAllText(webConfigPath) };
                var configurationNode = configuration.SelectSingleNode("/configuration");
                configurationNode.InnerXml += addHandler;
                File.WriteAllText(webConfigPath, configuration.InnerXml);

                ((WebDeployer)deployer.Application).Application.Deploy("Default.aspx", File.ReadAllText("RequirementFiles\\Default.aspx"));

                Assert.Equal(Startup.RESULT, HttpClientUtility.GetResponseTextFromUrl(url + "/Default.aspx"));
                Assert.Equal(Startup.RESULT, HttpClientUtility.GetResponseTextFromUrl(url));
            }
        }
コード例 #6
0
ファイル: DirectoryBrowser.cs プロジェクト: Xamarui/Katana
        public void Static_DirectoryBrowserDefaults(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, DirectoryBrowserDefaultsConfiguration);

                HttpResponseMessage response = null;

                //1. Check directory browsing enabled at application level
                var responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl, out response);
                Assert.True(!string.IsNullOrWhiteSpace(responseText), "Received empty response");
                Assert.True((response.Content).Headers.ContentType.ToString() == "text/html; charset=utf-8");
                Assert.True(responseText.Contains("RequirementFiles/"));

                //2. Check directory browsing @RequirementFiles with a ending '/'
                responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "RequirementFiles/", out response);
                Assert.True(!string.IsNullOrWhiteSpace(responseText), "Received empty response");
                Assert.True((response.Content).Headers.ContentType.ToString() == "text/html; charset=utf-8");
                Assert.True(responseText.Contains("Dir1/") && responseText.Contains("Dir2/") && responseText.Contains("Dir3/"), "Directories Dir1, Dir2, Dir3 not found");

                //2. Check directory browsing @RequirementFiles with request path not ending '/'
                responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "RequirementFiles", out response);
                Assert.True(!string.IsNullOrWhiteSpace(responseText), "Received empty response");
                Assert.True((response.Content).Headers.ContentType.ToString() == "text/html; charset=utf-8");
                Assert.True(responseText.Contains("Dir1/") && responseText.Contains("Dir2/") && responseText.Contains("Dir3/"), "Directories Dir1, Dir2, Dir3 not found");
            }
        }
コード例 #7
0
        public void ApplicationPoolStop(HostType hostType)
        {
            var serverInstance = new NotificationServer();
            serverInstance.StartNotificationService();
            try
            {
                using (ApplicationDeployer deployer = new ApplicationDeployer())
                {
                    string applicationUrl = deployer.Deploy(hostType, Configuration);
                    Assert.True(HttpClientUtility.GetResponseTextFromUrl(applicationUrl) == "SUCCESS");

                    if (hostType == HostType.IIS)
                    {
                        string webConfig = deployer.GetWebConfigPath();
                        string webConfigContent = File.ReadAllText(webConfig);
                        File.WriteAllText(webConfig, webConfigContent);
                    }
                }

                bool receivedNotification = serverInstance.NotificationReceived.WaitOne(20 * 1000);
                Assert.True(receivedNotification, "Cancellation token was not issued on closing host");
            }
            finally
            {
                serverInstance.Dispose();
            }
        }
コード例 #8
0
ファイル: OwinHostAppSettings.cs プロジェクト: Xamarui/Katana
        public void ReadAppSettings()
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(HostType.IIS, Configuration);
                var vDirPath = Path.GetDirectoryName(deployer.GetWebConfigPath());
                var options = new MyStartOptions(true) { DontPassStartupClassInCommandLine = true, TargetApplicationDirectory = vDirPath };
                string webConfigPath = deployer.GetWebConfigPath();

                XmlDocument configuration = new XmlDocument() { InnerXml = File.ReadAllText(webConfigPath) };
                var appSettingsNode = configuration.SelectSingleNode("/configuration/appSettings");
                appSettingsNode.InnerXml += "<add key=\"traceoutput\" value=\"MyLogTextThroughAppSetting.txt\" />";
                File.WriteAllText(webConfigPath, configuration.InnerXml);

                using (new HostServer(options))
                {
                    var httpClient = new HttpClient();
                    httpClient.DefaultRequestHeaders.Add("outputFile", "Test logging");
                    string response = httpClient.GetAsync("http://localhost:5000/").Result.Content.ReadAsStringAsync().Result;

                    Assert.Equal("SUCCESS", response);
                    Assert.True(File.Exists("MyLogTextThroughAppSetting.txt"), "Log file MyLogTextThroughAppSetting.txt is not created on specifying through appSetting");
                }
            }
        }
コード例 #9
0
        public void Security_ReturnUrlAndSecureCookie(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, ReturnUrlAndSecureCookieConfiguration);
                string secureServerUri = new UriBuilder(applicationUrl) { Scheme = Uri.UriSchemeHttps }.Uri.AbsoluteUri;

                HttpClientHandler handler = new HttpClientHandler();
                HttpClient httpClient = new HttpClient(handler);

                // Unauthenticated request - verify Redirect url
                HttpResponseMessage response = httpClient.GetAsync(applicationUrl).Result;
                CookiesCommon.IsRedirectedToCookiesLogin(response.RequestMessage.RequestUri, applicationUrl, "Unauthenticated requests not automatically redirected to login page", "MyRedirectUrl");

                var validCookieCredentials = new FormUrlEncodedContent(new kvp[] { new kvp("username", "test"), new kvp("password", "test") });
                response = httpClient.PostAsync(response.RequestMessage.RequestUri, validCookieCredentials).Result;
                response.EnsureSuccessStatusCode();

                //Verify cookie sent
                Assert.False(handler.CookieContainer.Count != 1, "Forms auth cookie not received automatically after successful login");
                Cookie loginCookie = handler.CookieContainer.GetCookies(new Uri(secureServerUri))[0];

                Assert.Equal(loginCookie.Secure, true);
            }
        }
コード例 #10
0
ファイル: InstanceContextTest.cs プロジェクト: Xamarui/Katana
        public void InstanceContext(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy<InstanceContextStartup>(hostType);
                string[] urls = new string[] { applicationUrl, applicationUrl + "/one", applicationUrl + "/two" };

                bool failed = false;

                foreach (string url in urls)
                {
                    string previousResponse = null;
                    for (int count = 0; count < 3; count++)
                    {
                        string currentResponse = HttpClientUtility.GetResponseTextFromUrl(url);

                        if (!currentResponse.Contains("SUCCESS") || (previousResponse != null && currentResponse != previousResponse))
                        {
                            failed = true;
                        }

                        previousResponse = currentResponse;
                    }
                }

                Assert.True(!failed, "At least one of the instance contexts is not correct");
            }
        }
コード例 #11
0
ファイル: StaticFile.cs プロジェクト: Xamarui/Katana
        public void Static_ContentTypes(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, ContentTypesConfiguration);
                var httpClient = new HttpClient() { BaseAddress = new Uri(applicationUrl) };

                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleAVI.avi", "video/x-msvideo");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleC.c", "text/plain");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleCHM.chm", "application/octet-stream");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleCpp.cpp", "text/plain");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleCss.CSS", "text/css");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleCSV.csV", "application/octet-stream");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleCUR.cur", "application/octet-stream");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleDisco.disco", "text/xml");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\Sampledoc.doc", "application/msword");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\Sampledocx.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleHTM.htm", "text/html");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\Samplehtml.html", "text/html");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\Sampleico.ico", "image/x-icon");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleJPEG.jpg", "image/jpeg");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SampleJPG.jpg", "image/jpeg");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\ContentTypes\SamplePNG.png", "image/png");
                DownloadAndCompareFiles(httpClient, @"RequirementFiles\Dir1\EmptyFile.txt", "text/plain");

                //Unknown MIME types should not be served by default
                var response = httpClient.GetAsync(@"RequirementFiles\ContentTypes\Unknown.Unknown").Result;
                Assert.Equal<HttpStatusCode>(HttpStatusCode.NotFound, response.StatusCode);
            }
        }
コード例 #12
0
 public void ConvertibleMiddlewareTest(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy<ConvertibleMiddleWarePatternStartup>(hostType);
         Assert.Equal("SUCCESS", HttpClientUtility.GetResponseTextFromUrl(applicationUrl));
     }
 }
コード例 #13
0
 public void ConvertibleMiddlewareTest(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy <ConvertibleMiddleWarePatternStartup>(hostType);
         Assert.Equal("SUCCESS", HttpClientUtility.GetResponseTextFromUrl(applicationUrl));
     }
 }
コード例 #14
0
 public void AllowedConfigurationSignature2(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy<AllowedNonDefaultConfigurationSignatures2>(hostType);
         Assert.Equal("SUCCESS", HttpClientUtility.GetResponseTextFromUrl(applicationUrl));
     }
 }
コード例 #15
0
 public void InstanceBasedMiddlewareTest(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy(hostType, Configuration);
         Assert.Equal("SUCCESS", HttpClientUtility.GetResponseTextFromUrl(applicationUrl));
     }
 }
コード例 #16
0
 public void AllowedConfigurationSignature2(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy <AllowedNonDefaultConfigurationSignatures2>(hostType);
         Assert.Equal("SUCCESS", HttpClientUtility.GetResponseTextFromUrl(applicationUrl));
     }
 }
コード例 #17
0
 public void InstanceBasedMiddlewareTest(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy(hostType, Configuration);
         Assert.Equal("SUCCESS", HttpClientUtility.GetResponseTextFromUrl(applicationUrl));
     }
 }
コード例 #18
0
 public void DefaultDiscoveryTest(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy(hostType);
         string responseText   = HttpClientUtility.GetResponseTextFromUrl(applicationUrl);
         Assert.Equal(Startup.RESULT, responseText);
     }
 }
コード例 #19
0
ファイル: DiscoveryTests.cs プロジェクト: Xamarui/Katana
 public void DefaultDiscoveryTest(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy(hostType);
         string responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl);
         Assert.Equal(Startup.RESULT, responseText);
     }
 }
コード例 #20
0
ファイル: WelcomePageFacts.cs プロジェクト: Xamarui/Katana
        public void WelcomePage(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, WelcomePageConfiguration);

                HttpResponseMessage response;
                Assert.True(HttpClientUtility.GetResponseTextFromUrl(applicationUrl, out response).ToLower().Contains("your owin application has been successfully started"));
                Assert.Equal("text/html", response.Content.Headers.ContentType.MediaType.ToLower());
            }
        }
コード例 #21
0
ファイル: MsOwinFacts.cs プロジェクト: Xamarui/Katana
 public void UseHandlerAndReadFormParametersAndQuery(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy(hostType, ReadFormParametersConfiguration) + "?QUERY%name1=QueryValue1&Query3=~!@$ % ^*()_+1Aa&QUEry2=QUERYVALUE2";
         HttpClient client = new HttpClient();
         client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml")); ;
         var response = client.PostAsync(applicationUrl, new FormUrlEncodedContent(new kvp[] { new kvp("input1", "~!@#$%^&*()_+1Aa"), new kvp("input2", "FormInput2") })).Result;
         Assert.Equal("ReadFormParameters", response.Content.ReadAsStringAsync().Result);
     }
 }
コード例 #22
0
 public void UseHandlerAndReadFormParametersAndQuery(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string     applicationUrl = deployer.Deploy(hostType, ReadFormParametersConfiguration) + "?QUERY%name1=QueryValue1&Query3=~!@$ % ^*()_+1Aa&QUEry2=QUERYVALUE2";
         HttpClient client         = new HttpClient();
         client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));;
         var response = client.PostAsync(applicationUrl, new FormUrlEncodedContent(new kvp[] { new kvp("input1", "~!@#$%^&*()_+1Aa"), new kvp("input2", "FormInput2") })).Result;
         Assert.Equal("ReadFormParameters", response.Content.ReadAsStringAsync().Result);
     }
 }
コード例 #23
0
ファイル: CustomSendFileFunc.cs プロジェクト: Xamarui/Katana
        public void Static_CustomSendFileFunc(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, CustomSendFileFuncConfiguration);
                var httpClient = new HttpClient() { BaseAddress = new Uri(applicationUrl) };

                var response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                Assert.Equal<string>("MyCustomSendFileAsync", response.Content.ReadAsStringAsync().Result);
            }
        }
コード例 #24
0
 public SamplesDeploymentResult(
     ApplicationDeployer originDeployer,
     DeploymentResult originResult,
     ApplicationDeployer destinationDeployer,
     DeploymentResult destinationResult)
 {
     OriginDeployer      = originDeployer;
     OriginResult        = originResult;
     DestinationDeployer = destinationDeployer;
     DestinationResult   = destinationResult;
 }
コード例 #25
0
        public void WelcomePage(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, WelcomePageConfiguration);

                HttpResponseMessage response;
                Assert.Contains("your owin application has been successfully started", HttpClientUtility.GetResponseTextFromUrl(applicationUrl, out response).ToLower());
                Assert.Equal("text/html", response.Content.Headers.ContentType.MediaType.ToLower());
            }
        }
コード例 #26
0
 public void InvalidAppStartupInConfiguration(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl   = deployer.Deploy(hostType, ValidConfiguration);
         string webConfig        = deployer.GetWebConfigPath();
         string webConfigContent = File.ReadAllText(webConfig).Replace(typeof(NegativeScenarios).Name, "NotExistingStartupClass");
         File.WriteAllText(webConfig, webConfigContent);
         Assert.True(HttpClientUtility.GetResponseTextFromUrl(applicationUrl).Contains(expectedExceptionType.Name), "Fatal error not thrown with invalid owin:AppStartup");
     }
 }
コード例 #27
0
ファイル: NegativeScenarios.cs プロジェクト: Xamarui/Katana
 public void InvalidAppStartupInConfiguration(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy(hostType, ValidConfiguration);
         string webConfig = deployer.GetWebConfigPath();
         string webConfigContent = File.ReadAllText(webConfig).Replace(typeof(NegativeScenarios).Name, "NotExistingStartupClass");
         File.WriteAllText(webConfig, webConfigContent);
         Assert.True(HttpClientUtility.GetResponseTextFromUrl(applicationUrl).Contains(expectedExceptionType.Name), "Fatal error not thrown with invalid owin:AppStartup");
     }
 }
コード例 #28
0
ファイル: DefaultStageMarkers.cs プロジェクト: rzontar/pkce
        public void DefaultStageMarkersTest()
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(HostType.IIS, DefaultStageMarkersTestConfiguration);
                ((WebDeployer)deployer.Application).Application.Deploy("IntegratedPipelineTest.aspx", File.ReadAllText("RequirementFiles\\IntegratedPipelineTest.aspx"));

                string responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "/IntegratedPipelineTest.aspx");
                Assert.True(responseText.Contains("IntegratedPipelineTest"), "IntegratedPipelineTest.aspx not returned");
                Assert.True(responseText.Contains("0;1;2;3;4;5;6;7;8;9"), "Pipeline order incorrect");
            }
        }
コード例 #29
0
 public void OnSendingHeaders(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy<OnSendingHeadersTest>(hostType);
         HttpResponseMessage httpResponseMessage = null;
         HttpClientUtility.GetResponseTextFromUrl(applicationUrl, out httpResponseMessage);
         string receivedHeaderValue = httpResponseMessage.Headers.GetValues("DummyHeader").First();
         Assert.True(receivedHeaderValue == "DummyHeaderValue,DummyHeaderValue",
             string.Format("Expected header values : {0}. Received header values : {1}", "DummyHeaderValue,DummyHeaderValue", receivedHeaderValue));
     }
 }
コード例 #30
0
 public void OnSendingHeaders(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         string applicationUrl = deployer.Deploy <OnSendingHeadersTest>(hostType);
         HttpResponseMessage httpResponseMessage = null;
         HttpClientUtility.GetResponseTextFromUrl(applicationUrl, out httpResponseMessage);
         string receivedHeaderValue = httpResponseMessage.Headers.GetValues("DummyHeader").First();
         Assert.True(receivedHeaderValue == "DummyHeaderValue,DummyHeaderValue",
                     string.Format("Expected header values : {0}. Received header values : {1}", "DummyHeaderValue,DummyHeaderValue", receivedHeaderValue));
     }
 }
コード例 #31
0
        public void Security_CookiesAuthDefaults(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, CookieApplyRedirectConfiguration);
                var httpClient = new HttpClient();

                // Unauthenticated request
                var response = httpClient.GetAsync(applicationUrl).Result;
                Assert.Equal<string>("custom", response.RequestMessage.RequestUri.ParseQueryString()["custom_redirect_uri"]);
            }
        }
コード例 #32
0
ファイル: CookiesApplyRedirect.cs プロジェクト: rzontar/pkce
        public void Security_CookiesAuthDefaults(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, CookieApplyRedirectConfiguration);
                var    httpClient     = new HttpClient();

                // Unauthenticated request
                var response = httpClient.GetAsync(applicationUrl).Result;
                Assert.Equal <string>("custom", response.RequestMessage.RequestUri.ParseQueryString()["custom_redirect_uri"]);
            }
        }
コード例 #33
0
ファイル: DefaultStageMarkers.cs プロジェクト: Xamarui/Katana
        public void DefaultStageMarkersTest()
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(HostType.IIS, DefaultStageMarkersTestConfiguration);
                ((WebDeployer)deployer.Application).Application.Deploy("IntegratedPipelineTest.aspx", File.ReadAllText("RequirementFiles\\IntegratedPipelineTest.aspx"));

                string responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "/IntegratedPipelineTest.aspx");
                Assert.True(responseText.Contains("IntegratedPipelineTest"), "IntegratedPipelineTest.aspx not returned");
                Assert.True(responseText.Contains("0;1;2;3;4;5;6;7;8;9"), "Pipeline order incorrect");
            }
        }
コード例 #34
0
        private void EnsureInitialized()
        {
            if (_deployer != null)
            {
                return;
            }

            _configure(DeploymentParameters);

            _deployer         = IISApplicationDeployerFactory.Create(DeploymentParameters, _loggerFactory);
            _deploymentResult = (IISDeploymentResult)_deployer.DeployAsync().Result;
        }
コード例 #35
0
        public void OrderOfExecution()
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(HostType.IIS, OrderOfExecutionConfiguration);
                WebDeployer webDeployer = (WebDeployer)deployer.Application;
                webDeployer.Application.Deploy("IntegratedPipelineTest.aspx", File.ReadAllText("RequirementFiles\\IntegratedPipelineTest.aspx"));

                string responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "/IntegratedPipelineTest.aspx");
                Assert.True(responseText.Contains("IntegratedPipelineTest"), "IntegratedPipelineTest.aspx not returned");
                Assert.True(responseText.Contains("0;1;2;3"), "Pipeline order incorrect");
            }
        }
コード例 #36
0
ファイル: MapOwinPathTest.cs プロジェクト: Xamarui/Katana
        public void MapOwinPath()
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string url = deployer.Deploy(HostType.IIS, MapOwinPathConfiguration);
                ((WebDeployer)deployer.Application).Application.Deploy("Default.aspx", File.ReadAllText("RequirementFiles\\Default.aspx"));

                Assert.True(HttpClientUtility.GetResponseTextFromUrl(url + "/Default.aspx").Contains("Asp.net Test page"), "Default.aspx page not returned successfully in SxS mode");
                Assert.Equal(HttpClientUtility.GetResponseTextFromUrl(url + "/prefix1"), "prefix1");
                Assert.Equal(HttpClientUtility.GetResponseTextFromUrl(url + "/prefix1Append"), "prefix1Append");
                Assert.Equal(HttpClientUtility.GetResponseTextFromUrl(url + "/prefix2"), "prefix2");
            }
        }
コード例 #37
0
        public void MapOwinPath()
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string url = deployer.Deploy(HostType.IIS, MapOwinPathConfiguration);
                ((WebDeployer)deployer.Application).Application.Deploy("Default.aspx", File.ReadAllText("RequirementFiles\\Default.aspx"));

                Assert.True(HttpClientUtility.GetResponseTextFromUrl(url + "/Default.aspx").Contains("Asp.net Test page"), "Default.aspx page not returned successfully in SxS mode");
                Assert.Equal("prefix1", HttpClientUtility.GetResponseTextFromUrl(url + "/prefix1"));
                Assert.Equal("prefix1Append", HttpClientUtility.GetResponseTextFromUrl(url + "/prefix1Append"));
                Assert.Equal("prefix2", HttpClientUtility.GetResponseTextFromUrl(url + "/prefix2"));
            }
        }
コード例 #38
0
        public void OrderOfExecution()
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string      applicationUrl = deployer.Deploy(HostType.IIS, OrderOfExecutionConfiguration);
                WebDeployer webDeployer    = (WebDeployer)deployer.Application;
                webDeployer.Application.Deploy("IntegratedPipelineTest.aspx", File.ReadAllText("RequirementFiles\\IntegratedPipelineTest.aspx"));

                string responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "/IntegratedPipelineTest.aspx");
                Assert.True(responseText.Contains("IntegratedPipelineTest"), "IntegratedPipelineTest.aspx not returned");
                Assert.True(responseText.Contains("0;1;2;3"), "Pipeline order incorrect");
            }
        }
コード例 #39
0
ファイル: SanityTest.cs プロジェクト: zmyer/service-fabric
        private ApplicationDeployer GetDeployer(string appName, ServiceDeployer service, string testOutputPath)
        {
            ApplicationDeployer dep = new ApplicationDeployer()
            {
                Name = appName,
            };

            service.ConfigPackageName = SanityTest.ConfigurationPackageName;
            dep.Services.Add(service);
            dep.Services[0].ConfigurationSettings.Add(Tuple.Create(SanityTest.ConfigurationSectionName, SanityTest.ConfigurationParameterName, testOutputPath));

            return(dep);
        }
コード例 #40
0
ファイル: StaticFileSecurity.cs プロジェクト: Xamarui/Katana
        public void Static_BlockedFiles(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, BlockedFiles_Configuration);

                var response = HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "TextFile.txt");
                Assert.Equal<string>(@"BlockedFiles\TextFile", response);

                //Clock$ should not be served. This is the only file among the list of blocked files, I can create on the disk.
                response = HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "clock$.txt");
                Assert.Equal<string>("FallThrough", response);
            }
        }
コード例 #41
0
        public void Static_BlockedFiles(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, BlockedFiles_Configuration);

                var response = HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "TextFile.txt");
                Assert.Equal <string>(@"BlockedFiles\TextFile", response);

                //Clock$ should not be served. This is the only file among the list of blocked files, I can create on the disk.
                response = HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "clock$.txt");
                Assert.Equal <string>("FallThrough", response);
            }
        }
コード例 #42
0
ファイル: TracingFacts.cs プロジェクト: Xamarui/Katana
        public void CreateLogger(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var service = new NotificationServer();
                service.StartNotificationService();

                string applicationUrl = deployer.Deploy(hostType, CreateLoggerConfiguration);

                Assert.Equal("SUCCESS", HttpClientUtility.GetResponseTextFromUrl(applicationUrl));
                Assert.True(service.NotificationReceived.WaitOne(1 * 2000), "Did not receive all expected traces within expected time");
                service.Dispose();
            }
        }
コード例 #43
0
        public void Static_EmbeddedDirectoryBrowserFileSystem(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, EmbeddedDirectoryBrowserFileSystemConfiguration);

                HttpResponseMessage response = null;

                var responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl, out response);
                Assert.True(!string.IsNullOrWhiteSpace(responseText), "Received empty response");
                Assert.True((response.Content).Headers.ContentType.ToString() == "text/html; charset=utf-8");
                Assert.True(responseText.Contains("RequirementFiles.EmbeddedResources.SampleAVI.avi"));
            }
        }
コード例 #44
0
        public void TestResponseStatusCode(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, ConfigurationTest);
                HttpResponseMessage httpResponseMessage = null;

                HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "/BadRequestPath", out httpResponseMessage);
                Assert.Equal(httpResponseMessage.StatusCode, HttpStatusCode.BadRequest);

                HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "/GoodRequestPath", out httpResponseMessage);
                Assert.Equal(httpResponseMessage.StatusCode, HttpStatusCode.OK);
            }
        }
コード例 #45
0
ファイル: StaticFile.cs プロジェクト: rzontar/pkce
        public void Static_CustomMimeType(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, CustomMimeTypeConfiguration);
                var httpClient     = new HttpClient()
                {
                    BaseAddress = new Uri(applicationUrl)
                };

                var response = httpClient.GetAsync(@"RequirementFiles\ContentTypes\Unknown.unknown").Result;
                Assert.Equal <string>("CustomUnknown", string.Join("", response.Content.Headers.GetValues("Content-Type")));
            }
        }
コード例 #46
0
ファイル: IfNoneMatchTests.cs プロジェクト: evicertia/Katana
        public void Static_IfNoneMatch(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, IfNoneMatchConfiguration);
                var httpClient     = new HttpClient()
                {
                    BaseAddress = new Uri(applicationUrl)
                };

                //Initial request to get the E-tag
                var response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                httpClient.DefaultRequestHeaders.IfNoneMatch.Add(response.Headers.ETag);

                //Add the E-tag to the successive request to the same entity. Expect a Not modified 304.
                for (int count = 0; count < 10; count++)
                {
                    response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                    Assert.Equal <HttpStatusCode>(HttpStatusCode.NotModified, response.StatusCode);
                }

                //Modify the file to see if the body is fetched fully again
                string fileContent = File.ReadAllText(@"RequirementFiles/Dir1/Default.html");
                File.WriteAllText(@"RequirementFiles/Dir1/Default.html", fileContent);

                //Verify if the fully body is sent after the file modification
                response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                Assert.Equal <HttpStatusCode>(HttpStatusCode.OK, response.StatusCode);

                //Add a non-matching E-tag to see if the body is fetched again.
                httpClient.DefaultRequestHeaders.IfNoneMatch.Clear();
                httpClient.DefaultRequestHeaders.IfNoneMatch.Add(new EntityTagHeaderValue("\"etag1\""));
                response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                Assert.Equal <HttpStatusCode>(HttpStatusCode.OK, response.StatusCode);

                //Duplicate 4x e-tags
                httpClient.DefaultRequestHeaders.IfNoneMatch.Add(response.Headers.ETag);
                httpClient.DefaultRequestHeaders.IfNoneMatch.Add(response.Headers.ETag);
                httpClient.DefaultRequestHeaders.IfNoneMatch.Add(response.Headers.ETag);
                httpClient.DefaultRequestHeaders.IfNoneMatch.Add(response.Headers.ETag);
                response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                Assert.Equal <HttpStatusCode>(HttpStatusCode.NotModified, response.StatusCode);

                //Etag=* should always get a 304.
                httpClient.DefaultRequestHeaders.IfNoneMatch.Clear();
                httpClient.DefaultRequestHeaders.TryAddWithoutValidation("If-None-Match", "*");
                response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                Assert.Equal <HttpStatusCode>(HttpStatusCode.NotModified, response.StatusCode);
            }
        }
コード例 #47
0
        public void Static_EmbeddedDirectoryBrowserFileSystem(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, EmbeddedDirectoryBrowserFileSystemConfiguration);

                HttpResponseMessage response = null;

                var responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl, out response);
                Assert.True(!string.IsNullOrWhiteSpace(responseText), "Received empty response");
                Assert.True((response.Content).Headers.ContentType.ToString() == "text/html; charset=utf-8");
                Assert.True(responseText.Contains("RequirementFiles.EmbeddedResources.SampleAVI.avi"));
            }
        }
コード例 #48
0
        public void Static_EmbeddedFileSystemDefaultFiles(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, EmbeddedFileSystemDefaultFilesConfiguration);

                HttpResponseMessage response = null;

                var responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl, out response);
                Assert.True(!string.IsNullOrWhiteSpace(responseText), "Received empty response");
                Assert.True((response.Content).Headers.ContentType.ToString() == "text/html");
                Assert.True(responseText.Contains("SampleHTM"));
            }
        }
コード例 #49
0
        public void CreateLogger(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var service = new NotificationServer();
                service.StartNotificationService();

                string applicationUrl = deployer.Deploy(hostType, CreateLoggerConfiguration);

                Assert.Equal("SUCCESS", HttpClientUtility.GetResponseTextFromUrl(applicationUrl));
                Assert.True(service.NotificationReceived.WaitOne(1 * 2000), "Did not receive all expected traces within expected time");
                service.Dispose();
            }
        }
コード例 #50
0
ファイル: CacheTests.cs プロジェクト: Xamarui/Katana
        public void Static_CacheHeadersDefault(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, CacheHeadersDefaultConfiguration);
                var httpClient = new HttpClient() { BaseAddress = new Uri(applicationUrl) };

                var response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                Assert.True(!string.IsNullOrWhiteSpace(response.Headers.ETag.Tag), "E-Tag header missing");
                Assert.True(response.Headers.ETag.Tag.StartsWith("\""), "E-Tag header does not start with a quote");
                Assert.True(response.Headers.ETag.Tag.EndsWith("\""), "E-Tag header does not end with a quote");
                Assert.True(response.Content.Headers.LastModified.HasValue, "Date-Modified header missing");
            }
        }
コード例 #51
0
        public void Static_EmbeddedFileSystemDefaultFiles(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, EmbeddedFileSystemDefaultFilesConfiguration);

                HttpResponseMessage response = null;

                var responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl, out response);
                Assert.True(!string.IsNullOrWhiteSpace(responseText), "Received empty response");
                Assert.True((response.Content).Headers.ContentType.ToString() == "text/html");
                Assert.True(responseText.Contains("SampleHTM"));
            }
        }
コード例 #52
0
ファイル: CustomSendFileFunc.cs プロジェクト: rzontar/pkce
        public void Static_CustomSendFileFunc(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, CustomSendFileFuncConfiguration);
                var httpClient     = new HttpClient()
                {
                    BaseAddress = new Uri(applicationUrl)
                };

                var response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                Assert.Equal <string>("MyCustomSendFileAsync", response.Content.ReadAsStringAsync().Result);
            }
        }
コード例 #53
0
        public void TestResponseStatusCode(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, ConfigurationTest);
                HttpResponseMessage httpResponseMessage = null;

                HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "/BadRequestPath", out httpResponseMessage);
                Assert.Equal(httpResponseMessage.StatusCode, HttpStatusCode.BadRequest);

                HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "/GoodRequestPath", out httpResponseMessage);
                Assert.Equal(httpResponseMessage.StatusCode, HttpStatusCode.OK);
            }
        }
コード例 #54
0
 public CorsDeploymentResult(
     ApplicationDeployer originDeployer,
     DeploymentResult originResult,
     ApplicationDeployer secondOriginDeployer,
     DeploymentResult secondOriginResult,
     ApplicationDeployer destinationDeployer,
     DeploymentResult destinationResult)
 {
     OriginDeployer       = originDeployer;
     OriginResult         = originResult;
     SecondOriginDeployer = secondOriginDeployer;
     SecondOriginResult   = secondOriginResult;
     DestinationDeployer  = destinationDeployer;
     DestinationResult    = destinationResult;
 }
コード例 #55
0
ファイル: StaticFile.cs プロジェクト: rzontar/pkce
        public void Static_OnPrepareResponseTest(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, OnPrepareResponseTestConfiguration);
                var httpClient     = new HttpClient()
                {
                    BaseAddress = new Uri(applicationUrl)
                };

                var response = httpClient.GetAsync(@"RequirementFiles\Dir1\Default.html").Result;
                Assert.Equal <string>("true", string.Join("", response.Headers.GetValues("CallBackInvoked")));
                Assert.Equal <bool>(true, response.Content.ReadAsStringAsync().Result.Contains(@"Dir1\Default.html"));
            }
        }
コード例 #56
0
        public void InvalidAssemblyNameInConfiguration(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, ValidConfiguration);

                string webConfig = deployer.GetWebConfigPath();
                string fullyQualifiedConfigurationMethodName = ((Action <IAppBuilder>)ValidConfiguration).GetFullyQualifiedConfigurationMethodName();
                string webConfigContent = File.ReadAllText(webConfig).
                                          Replace(fullyQualifiedConfigurationMethodName, fullyQualifiedConfigurationMethodName + ", NotExistingAssembly");
                File.WriteAllText(webConfig, webConfigContent);

                Assert.True(HttpClientUtility.GetResponseTextFromUrl(applicationUrl).Contains(expectedExceptionType.Name), "Fatal error not thrown with invalid assembly name");
            }
        }
コード例 #57
0
        public void Static_IfMatch(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                var applicationUrl = deployer.Deploy(hostType, IfMatchConfiguration);
                var httpClient     = new HttpClient()
                {
                    BaseAddress = new Uri(applicationUrl)
                };

                //Initial request to get the E-tag
                var response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                httpClient.DefaultRequestHeaders.IfMatch.Add(response.Headers.ETag);

                //Add the E-tag to the successive request to the same entity. Expect the body is fully fetched again.
                for (int count = 0; count < 10; count++)
                {
                    response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                    Assert.Equal <HttpStatusCode>(HttpStatusCode.OK, response.StatusCode);
                }

                //Modify the file to see if the body is fetched fully again
                string fileContent = File.ReadAllText(@"RequirementFiles/Dir1/Default.html");
                File.WriteAllText(@"RequirementFiles/Dir1/Default.html", fileContent);
                //Sometimes the test is flaky returning OK status code as the file change is not immediately recognized by the server. So give it a while.
                Thread.Sleep(500);

                //If the E-tag sent failed to match the entity's etag, then expect a Precondition failed 412.
                response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                Assert.Equal <HttpStatusCode>(HttpStatusCode.PreconditionFailed, response.StatusCode);

                //Duplicate 4x e-tags
                httpClient.DefaultRequestHeaders.IfMatch.Clear();
                response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                httpClient.DefaultRequestHeaders.IfMatch.Add(response.Headers.ETag);
                httpClient.DefaultRequestHeaders.IfMatch.Add(response.Headers.ETag);
                httpClient.DefaultRequestHeaders.IfMatch.Add(response.Headers.ETag);
                httpClient.DefaultRequestHeaders.IfMatch.Add(response.Headers.ETag);
                response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                Assert.Equal <HttpStatusCode>(HttpStatusCode.OK, response.StatusCode);

                //Etag=* should always get a 304.
                httpClient.DefaultRequestHeaders.IfMatch.Clear();
                httpClient.DefaultRequestHeaders.TryAddWithoutValidation("If-Match", "*");
                response = httpClient.GetAsync("RequirementFiles/Dir1/Default.html").Result;
                Assert.Equal <HttpStatusCode>(HttpStatusCode.OK, response.StatusCode);
            }
        }
コード例 #58
0
 public void ConfigurationMethodNotFound(HostType hostType)
 {
     using (ApplicationDeployer deployer = new ApplicationDeployer())
     {
         var expectedExceptionType = typeof(EntryPointNotFoundException);
         if (hostType != HostType.IIS)
         {
             Assert.Throws(expectedExceptionType, () => deployer.Deploy <ConfigurationMethodNotFoundTest>(hostType));
         }
         else
         {
             string applicationUrl = deployer.Deploy <ConfigurationMethodNotFoundTest>(hostType);
             Assert.True(HttpClientUtility.GetResponseTextFromUrl(applicationUrl).Contains(expectedExceptionType.Name), "Fatal error not thrown without Configuration method");
         }
     }
 }
コード例 #59
0
        public void Static_DirectoryMiddlewareMappedToDifferentDirectory(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, DirectoryMiddlewareMappedToDifferentDirectoryConfiguration);

                HttpResponseMessage response = null;

                //1. Check directory browsing enabled at application level
                var responseText = HttpClientUtility.GetResponseTextFromUrl(applicationUrl, out response);
                Assert.True(!string.IsNullOrWhiteSpace(responseText), "Received empty response");
                Assert.True((response.Content).Headers.ContentType.ToString() == "text/html; charset=utf-8");
                Assert.Contains("Default.html", responseText);
                Assert.Contains("EmptyFile.txt", responseText);
            }
        }
コード例 #60
0
        public void MappingMiddleware(HostType hostType)
        {
            using (ApplicationDeployer deployer = new ApplicationDeployer())
            {
                string applicationUrl = deployer.Deploy(hostType, MappingMiddlewareConfiguration);

                //Anonymous Auth routes test
                Assert.Equal(HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "anonymous1"), "Anonymous1");
                Assert.Equal(HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "anonymous2"), "Anonymous2");
                Assert.Equal(HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "a"), "/a");
                Assert.Equal(HttpClientUtility.GetResponseTextFromUrl(applicationUrl + "a/b"), "/a/b");

                //Default application
                Assert.Equal(HttpClientUtility.GetResponseTextFromUrl(applicationUrl), "Default");
            }
        }