From 93a88af4671ae68d11aa162181d4c6ca77045a36 Mon Sep 17 00:00:00 2001 From: Chris Ross Date: Thu, 9 Oct 2014 17:00:34 -0700 Subject: [PATCH] Purge old tests. --- .../DenyAnonymous.cs | 64 ---- .../DictionaryExtensions.cs | 68 ----- .../DigestTests.cs | 261 ---------------- .../NegotiateTests.cs | 278 ------------------ .../PassThroughTests.cs | 81 ----- .../Properties/AssemblyInfo.cs | 59 ---- .../project.json | 18 -- 7 files changed, 829 deletions(-) delete mode 100644 test/Microsoft.AspNet.Security.Windows.Test/DenyAnonymous.cs delete mode 100644 test/Microsoft.AspNet.Security.Windows.Test/DictionaryExtensions.cs delete mode 100644 test/Microsoft.AspNet.Security.Windows.Test/DigestTests.cs delete mode 100644 test/Microsoft.AspNet.Security.Windows.Test/NegotiateTests.cs delete mode 100644 test/Microsoft.AspNet.Security.Windows.Test/PassThroughTests.cs delete mode 100644 test/Microsoft.AspNet.Security.Windows.Test/Properties/AssemblyInfo.cs delete mode 100644 test/Microsoft.AspNet.Security.Windows.Test/project.json diff --git a/test/Microsoft.AspNet.Security.Windows.Test/DenyAnonymous.cs b/test/Microsoft.AspNet.Security.Windows.Test/DenyAnonymous.cs deleted file mode 100644 index 19a04912dd..0000000000 --- a/test/Microsoft.AspNet.Security.Windows.Test/DenyAnonymous.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Open Technologies, Inc. -// All Rights Reserved -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING -// WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF -// TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR -// NON-INFRINGEMENT. -// See the Apache 2 License for the specific language governing -// permissions and limitations under the License. - -// -// Copyright 2011-2012 Katana contributors -// -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -using System; -using System.Collections.Generic; -using System.Security.Principal; -using System.Threading.Tasks; - -namespace Microsoft.AspNet.Security.Windows.Tests -{ - using AppFunc = Func, Task>; - - // This middleware can be placed at the end of a chain of pass-through auth schemes if at least one type of auth is required. - public class DenyAnonymous - { - private readonly AppFunc _nextApp; - - public DenyAnonymous(AppFunc nextApp) - { - _nextApp = nextApp; - } - - public async Task Invoke(IDictionary env) - { - if (env.Get("server.User") == null) - { - env["owin.ResponseStatusCode"] = 401; - return; - } - - await _nextApp(env); - } - } -} diff --git a/test/Microsoft.AspNet.Security.Windows.Test/DictionaryExtensions.cs b/test/Microsoft.AspNet.Security.Windows.Test/DictionaryExtensions.cs deleted file mode 100644 index 7aa0e65d2c..0000000000 --- a/test/Microsoft.AspNet.Security.Windows.Test/DictionaryExtensions.cs +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) Microsoft Open Technologies, Inc. -// All Rights Reserved -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING -// WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF -// TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR -// NON-INFRINGEMENT. -// See the Apache 2 License for the specific language governing -// permissions and limitations under the License. - -// ----------------------------------------------------------------------- -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// ----------------------------------------------------------------------- - -using System; -using System.Linq; -using System.Text; - -namespace System.Collections.Generic -{ - internal static class DictionaryExtensions - { - internal static void Append(this IDictionary dictionary, string key, string value) - { - string[] orriginalValues; - if (dictionary.TryGetValue(key, out orriginalValues)) - { - string[] newValues = new string[orriginalValues.Length + 1]; - orriginalValues.CopyTo(newValues, 0); - newValues[newValues.Length - 1] = value; - dictionary[key] = newValues; - } - else - { - dictionary[key] = new string[] { value }; - } - } - - internal static string Get(this IDictionary dictionary, string key) - { - string[] values; - if (dictionary.TryGetValue(key, out values)) - { - return string.Join(", ", values); - } - return null; - } - - internal static T Get(this IDictionary dictionary, string key, T fallback = default(T)) - { - object values; - if (dictionary.TryGetValue(key, out values)) - { - return (T)values; - } - return fallback; - } - } -} diff --git a/test/Microsoft.AspNet.Security.Windows.Test/DigestTests.cs b/test/Microsoft.AspNet.Security.Windows.Test/DigestTests.cs deleted file mode 100644 index 67d693ed66..0000000000 --- a/test/Microsoft.AspNet.Security.Windows.Test/DigestTests.cs +++ /dev/null @@ -1,261 +0,0 @@ -// Copyright (c) Microsoft Open Technologies, Inc. -// All Rights Reserved -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING -// WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF -// TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR -// NON-INFRINGEMENT. -// See the Apache 2 License for the specific language governing -// permissions and limitations under the License. - -// ----------------------------------------------------------------------- -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// ----------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net.Http; -using System.Security.Authentication.ExtendedProtection; -using System.Threading.Tasks; -using Microsoft.AspNet.Server.WebListener; -using Xunit; - -namespace Microsoft.AspNet.Security.Windows.Tests -{ - using AppFunc = Func, Task>; - - public class DigestTests - { - private const string Address = "http://localhost:8080/"; - private const string SecureAddress = "https://localhost:9090/"; - private const int DefaultStatusCode = 201; - - [Fact] - public async Task Digest_PartialMatch_PassedThrough() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(SimpleApp); - IDictionary emptyEnv = CreateEmptyRequest("Authorization", "Digestion blablabla"); - await windowsAuth.Invoke(emptyEnv); - - Assert.Equal(DefaultStatusCode, emptyEnv.Get("owin.ResponseStatusCode")); - var responseHeaders = emptyEnv.Get>("owin.ResponseHeaders"); - Assert.Equal(0, responseHeaders.Count); - } - - [Fact] - public async Task Digest_BadData_400() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(SimpleApp); - IDictionary emptyEnv = CreateEmptyRequest("Authorization", "Digest blablabla"); - await windowsAuth.Invoke(emptyEnv); - - Assert.Equal(400, emptyEnv.Get("owin.ResponseStatusCode")); - var responseHeaders = emptyEnv.Get>("owin.ResponseHeaders"); - Assert.Equal(0, responseHeaders.Count); - } - - [Fact] - public async Task Digest_AppSets401_401WithChallenge() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = AuthTypes.Digest; - IDictionary emptyEnv = CreateEmptyRequest(); - await windowsAuth.Invoke(emptyEnv); - FireOnSendingHeadersActions(emptyEnv); - - Assert.Equal(401, emptyEnv.Get("owin.ResponseStatusCode")); - var responseHeaders = emptyEnv.Get>("owin.ResponseHeaders"); - Assert.Equal(1, responseHeaders.Count); - Assert.NotNull(responseHeaders.Get("www-authenticate")); - Assert.True(responseHeaders.Get("www-authenticate").StartsWith("Digest ")); - } - - [Fact] - public async Task Digest_CbtOptionalButNotPresent_401WithChallenge() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = AuthTypes.Digest; - windowsAuth.ExtendedProtectionPolicy = new ExtendedProtectionPolicy(PolicyEnforcement.WhenSupported); - IDictionary emptyEnv = CreateEmptyRequest(); - emptyEnv["owin.RequestScheme"] = "https"; - await windowsAuth.Invoke(emptyEnv); - FireOnSendingHeadersActions(emptyEnv); - - Assert.Equal(401, emptyEnv.Get("owin.ResponseStatusCode")); - var responseHeaders = emptyEnv.Get>("owin.ResponseHeaders"); - Assert.Equal(0, responseHeaders.Count); - Assert.Null(responseHeaders.Get("www-authenticate")); - } - - [Fact] - public async Task Digest_CbtRequiredButNotPresent_400() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = AuthTypes.Digest; - windowsAuth.ExtendedProtectionPolicy = new ExtendedProtectionPolicy(PolicyEnforcement.Always); - IDictionary emptyEnv = CreateEmptyRequest(); - emptyEnv["owin.RequestScheme"] = "https"; - await windowsAuth.Invoke(emptyEnv); - FireOnSendingHeadersActions(emptyEnv); - - Assert.Equal(401, emptyEnv.Get("owin.ResponseStatusCode")); - var responseHeaders = emptyEnv.Get>("owin.ResponseHeaders"); - Assert.Equal(0, responseHeaders.Count); - Assert.Null(responseHeaders.Get("www-authenticate")); - } - - [Fact(Skip = "Broken")] - public async Task Digest_ClientAuthenticates_Success() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = AuthTypes.Digest; - - using (CreateServer(windowsAuth.Invoke)) - { - HttpResponseMessage response = await SendAuthRequestAsync(Address); - Assert.Equal(DefaultStatusCode, (int)response.StatusCode); - } - } - - [Fact(Skip = "Broken")] - public async Task Digest_ClientAuthenticatesMultipleTimes_Success() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = AuthTypes.Digest; - - using (CreateServer(windowsAuth.Invoke)) - { - for (int i = 0; i < 10; i++) - { - HttpResponseMessage response = await SendAuthRequestAsync(Address); - Assert.Equal(DefaultStatusCode, (int)response.StatusCode); - } - } - } - - [Fact] - public async Task Digest_AnonmousClient_401() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = AuthTypes.Digest; - - using (CreateServer(windowsAuth.Invoke)) - { - HttpResponseMessage response = await SendRequestAsync(Address); - Assert.Equal(401, (int)response.StatusCode); - Assert.True(response.Headers.WwwAuthenticate.ToString().StartsWith("Digest ")); - } - } - - [Fact(Skip = "Broken")] - public async Task Digest_ClientAuthenticatesWithCbt_Success() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = AuthTypes.Digest; - windowsAuth.ExtendedProtectionPolicy = new ExtendedProtectionPolicy(PolicyEnforcement.Always); - - using (CreateSecureServer(windowsAuth.Invoke)) - { - HttpResponseMessage response = await SendAuthRequestAsync(SecureAddress); - Assert.Equal(DefaultStatusCode, (int)response.StatusCode); - } - } - - private IDictionary CreateEmptyRequest(string header = null, string value = null) - { - IDictionary env = new Dictionary(); - var requestHeaders = new Dictionary(StringComparer.OrdinalIgnoreCase); - env["owin.RequestHeaders"] = requestHeaders; - if (header != null) - { - requestHeaders[header] = new string[] { value }; - } - env["owin.ResponseHeaders"] = new Dictionary(StringComparer.OrdinalIgnoreCase); - - var onSendingHeadersActions = new List, object>>(); - env["server.OnSendingHeaders"] = new Action, object>( - (a, b) => onSendingHeadersActions.Add(new Tuple, object>(a, b))); - - env["test.OnSendingHeadersActions"] = onSendingHeadersActions; - return env; - } - - private void FireOnSendingHeadersActions(IDictionary env) - { - var onSendingHeadersActions = env.Get, object>>>("test.OnSendingHeadersActions"); - foreach (var actionPair in onSendingHeadersActions.Reverse()) - { - actionPair.Item1(actionPair.Item2); - } - } - - private IDisposable CreateServer(AppFunc app) - { - IDictionary properties = new Dictionary(); - IList> addresses = new List>(); - properties["host.Addresses"] = addresses; - - IDictionary address = new Dictionary(); - addresses.Add(address); - - address["scheme"] = "http"; - address["host"] = "localhost"; - address["port"] = "8080"; - address["path"] = string.Empty; - - return OwinServerFactory.Create(app, properties); - } - - private IDisposable CreateSecureServer(AppFunc app) - { - IDictionary properties = new Dictionary(); - IList> addresses = new List>(); - properties["host.Addresses"] = addresses; - - IDictionary address = new Dictionary(); - addresses.Add(address); - - address["scheme"] = "https"; - address["host"] = "localhost"; - address["port"] = "9090"; - address["path"] = string.Empty; - - return OwinServerFactory.Create(app, properties); - } - - private async Task SendRequestAsync(string uri) - { - using (HttpClient client = new HttpClient()) - { - return await client.GetAsync(uri); - } - } - - private async Task SendAuthRequestAsync(string uri) - { - WebRequestHandler handler = new WebRequestHandler(); - handler.UseDefaultCredentials = true; - handler.ServerCertificateValidationCallback = (a, b, c, d) => true; - using (HttpClient client = new HttpClient(handler)) - { - return await client.GetAsync(uri); - } - } - - private Task SimpleApp(IDictionary env) - { - env["owin.ResponseStatusCode"] = DefaultStatusCode; - return Task.FromResult(null); - } - } -} diff --git a/test/Microsoft.AspNet.Security.Windows.Test/NegotiateTests.cs b/test/Microsoft.AspNet.Security.Windows.Test/NegotiateTests.cs deleted file mode 100644 index 6deff83ee1..0000000000 --- a/test/Microsoft.AspNet.Security.Windows.Test/NegotiateTests.cs +++ /dev/null @@ -1,278 +0,0 @@ -// Copyright (c) Microsoft Open Technologies, Inc. -// All Rights Reserved -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING -// WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF -// TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR -// NON-INFRINGEMENT. -// See the Apache 2 License for the specific language governing -// permissions and limitations under the License. - -// ----------------------------------------------------------------------- -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// ----------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Security.Authentication.ExtendedProtection; -using System.Threading.Tasks; -using Microsoft.AspNet.Server.WebListener; -using Xunit; -using Xunit.Extensions; - -namespace Microsoft.AspNet.Security.Windows.Tests -{ - using AppFunc = Func, Task>; - - public class NegotiateTests - { - private const string Address = "http://localhost:8080/"; - private const string SecureAddress = "https://localhost:9090/"; - private const int DefaultStatusCode = 201; - - [Theory] - [InlineData("Negotiate")] - [InlineData("NTLM")] - public async Task Negotiate_PartialMatch_PassedThrough(string package) - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(SimpleApp); - IDictionary emptyEnv = CreateEmptyRequest("Authorization", package + "ion blablabla"); - await windowsAuth.Invoke(emptyEnv); - - Assert.Equal(DefaultStatusCode, emptyEnv.Get("owin.ResponseStatusCode")); - var responseHeaders = emptyEnv.Get>("owin.ResponseHeaders"); - Assert.Equal(0, responseHeaders.Count); - } - - [Theory] - [InlineData("Negotiate")] - [InlineData("NTLM")] - public async Task Negotiate_BadData_400(string package) - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(SimpleApp); - IDictionary emptyEnv = CreateEmptyRequest("Authorization", package + " blablabla"); - await windowsAuth.Invoke(emptyEnv); - - Assert.Equal(400, emptyEnv.Get("owin.ResponseStatusCode")); - var responseHeaders = emptyEnv.Get>("owin.ResponseHeaders"); - Assert.Equal(0, responseHeaders.Count); - } - - [Theory] - [InlineData("Negotiate")] - [InlineData("NTLM")] - public async Task Negotiate_AppSets401_401WithChallenge(string package) - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(SimpleApp401); - windowsAuth.AuthenticationSchemes = (AuthTypes)Enum.Parse(typeof(AuthTypes), package, true); - IDictionary emptyEnv = CreateEmptyRequest(); - await windowsAuth.Invoke(emptyEnv); - FireOnSendingHeadersActions(emptyEnv); - - Assert.Equal(401, emptyEnv.Get("owin.ResponseStatusCode")); - var responseHeaders = emptyEnv.Get>("owin.ResponseHeaders"); - Assert.Equal(1, responseHeaders.Count); - Assert.NotNull(responseHeaders.Get("www-authenticate")); - Assert.Equal(package, responseHeaders.Get("www-authenticate")); - } - - [Theory(Skip = "Broken")] - [InlineData("Negotiate")] - [InlineData("NTLM")] - public async Task Negotiate_ClientAuthenticates_Success(string package) - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = (AuthTypes)Enum.Parse(typeof(AuthTypes), package, true); - - using (CreateServer(windowsAuth.Invoke)) - { - HttpResponseMessage response = await SendAuthRequestAsync(Address); - Assert.Equal(DefaultStatusCode, (int)response.StatusCode); - } - } - - [Theory(Skip = "Broken")] - [InlineData("Negotiate")] - [InlineData("NTLM")] - public async Task Negotiate_ClientAuthenticatesMultipleTimes_Success(string package) - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = (AuthTypes)Enum.Parse(typeof(AuthTypes), package, true); - - using (CreateServer(windowsAuth.Invoke)) - { - for (int i = 0; i < 10; i++) - { - HttpResponseMessage response = await SendAuthRequestAsync(Address); - Assert.Equal(DefaultStatusCode, (int)response.StatusCode); - } - } - } - - [Theory] - [InlineData("Negotiate")] - [InlineData("NTLM")] - public async Task Negotiate_AnonmousClient_401(string package) - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = (AuthTypes)Enum.Parse(typeof(AuthTypes), package, true); - - using (CreateServer(windowsAuth.Invoke)) - { - HttpResponseMessage response = await SendRequestAsync(Address); - Assert.Equal(401, (int)response.StatusCode); - Assert.Equal(package, response.Headers.WwwAuthenticate.ToString()); - } - } - - [Fact(Skip = "Broken")] - public async Task UnsafeSharedNTLM_AuthenticatedClient_Success() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = AuthTypes.Ntlm; - windowsAuth.UnsafeConnectionNtlmAuthentication = true; - - using (CreateServer(windowsAuth.Invoke)) - { - WebRequestHandler handler = new WebRequestHandler(); - CredentialCache cache = new CredentialCache(); - cache.Add(new Uri(Address), "NTLM", CredentialCache.DefaultNetworkCredentials); - handler.Credentials = cache; - handler.UnsafeAuthenticatedConnectionSharing = true; - using (HttpClient client = new HttpClient(handler)) - { - HttpResponseMessage response = await client.GetAsync(Address); - Assert.Equal(DefaultStatusCode, (int)response.StatusCode); - response.EnsureSuccessStatusCode(); - - // Remove the credentials before try two just to prove they aren't used. - cache.Remove(new Uri(Address), "NTLM"); - response = await client.GetAsync(Address); - Assert.Equal(DefaultStatusCode, (int)response.StatusCode); - } - } - } - - [Theory(Skip = "Broken")] - [InlineData("Negotiate")] - [InlineData("NTLM")] - public async Task Negotiate_ClientAuthenticatesWithCbt_Success(string package) - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(new DenyAnonymous(SimpleApp).Invoke); - windowsAuth.AuthenticationSchemes = (AuthTypes)Enum.Parse(typeof(AuthTypes), package, true); - windowsAuth.ExtendedProtectionPolicy = new ExtendedProtectionPolicy(PolicyEnforcement.Always); - - using (CreateSecureServer(windowsAuth.Invoke)) - { - HttpResponseMessage response = await SendAuthRequestAsync(SecureAddress); - Assert.Equal(DefaultStatusCode, (int)response.StatusCode); - } - } - - private IDictionary CreateEmptyRequest(string header = null, string value = null, string connectionId = "Random") - { - IDictionary env = new Dictionary(); - var requestHeaders = new Dictionary(StringComparer.OrdinalIgnoreCase); - env["owin.RequestHeaders"] = requestHeaders; - if (header != null) - { - requestHeaders[header] = new string[] { value }; - } - env["owin.ResponseHeaders"] = new Dictionary(StringComparer.OrdinalIgnoreCase); - - var onSendingHeadersActions = new List, object>>(); - env["server.OnSendingHeaders"] = new Action, object>( - (a, b) => onSendingHeadersActions.Add(new Tuple, object>(a, b))); - - env["test.OnSendingHeadersActions"] = onSendingHeadersActions; - env["server.ConnectionId"] = connectionId; - return env; - } - - private void FireOnSendingHeadersActions(IDictionary env) - { - var onSendingHeadersActions = env.Get, object>>>("test.OnSendingHeadersActions"); - foreach (var actionPair in onSendingHeadersActions.Reverse()) - { - actionPair.Item1(actionPair.Item2); - } - } - - private IDisposable CreateServer(AppFunc app) - { - IDictionary properties = new Dictionary(); - IList> addresses = new List>(); - properties["host.Addresses"] = addresses; - - IDictionary address = new Dictionary(); - addresses.Add(address); - - address["scheme"] = "http"; - address["host"] = "localhost"; - address["port"] = "8080"; - address["path"] = string.Empty; - - return OwinServerFactory.Create(app, properties); - } - - private IDisposable CreateSecureServer(AppFunc app) - { - IDictionary properties = new Dictionary(); - IList> addresses = new List>(); - properties["host.Addresses"] = addresses; - - IDictionary address = new Dictionary(); - addresses.Add(address); - - address["scheme"] = "https"; - address["host"] = "localhost"; - address["port"] = "9090"; - address["path"] = string.Empty; - - return OwinServerFactory.Create(app, properties); - } - - private async Task SendRequestAsync(string uri) - { - using (HttpClient client = new HttpClient()) - { - return await client.GetAsync(uri); - } - } - - private async Task SendAuthRequestAsync(string uri) - { - WebRequestHandler handler = new WebRequestHandler(); - handler.UseDefaultCredentials = true; - handler.ServerCertificateValidationCallback = (a, b, c, d) => true; - using (HttpClient client = new HttpClient(handler)) - { - return await client.GetAsync(uri); - } - } - - private Task SimpleApp(IDictionary env) - { - env["owin.ResponseStatusCode"] = DefaultStatusCode; - return Task.FromResult(null); - } - - private Task SimpleApp401(IDictionary env) - { - env["owin.ResponseStatusCode"] = 401; - return Task.FromResult(null); - } - } -} diff --git a/test/Microsoft.AspNet.Security.Windows.Test/PassThroughTests.cs b/test/Microsoft.AspNet.Security.Windows.Test/PassThroughTests.cs deleted file mode 100644 index 03899b4593..0000000000 --- a/test/Microsoft.AspNet.Security.Windows.Test/PassThroughTests.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) Microsoft Open Technologies, Inc. -// All Rights Reserved -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING -// WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF -// TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR -// NON-INFRINGEMENT. -// See the Apache 2 License for the specific language governing -// permissions and limitations under the License. - -// ----------------------------------------------------------------------- -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// ----------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Xunit; - -namespace Microsoft.AspNet.Security.Windows.Tests -{ - public class PassThroughTests - { - private const int DefaultStatusCode = 201; - - [Fact] - public async Task PassThrough_EmptyRequest_Success() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(SimpleApp); - IDictionary emptyEnv = CreateEmptyRequest(); - await windowsAuth.Invoke(emptyEnv); - - Assert.Equal(DefaultStatusCode, emptyEnv.Get("owin.ResponseStatusCode")); - var responseHeaders = emptyEnv.Get>("owin.ResponseHeaders"); - Assert.Equal(0, responseHeaders.Count); - } - - [Fact] - public async Task PassThrough_BasicAuth_Success() - { - WindowsAuthMiddleware windowsAuth = new WindowsAuthMiddleware(SimpleApp); - IDictionary emptyEnv = CreateEmptyRequest("Authorization", "Basic blablabla"); - await windowsAuth.Invoke(emptyEnv); - - Assert.Equal(DefaultStatusCode, emptyEnv.Get("owin.ResponseStatusCode")); - var responseHeaders = emptyEnv.Get>("owin.ResponseHeaders"); - Assert.Equal(0, responseHeaders.Count); - } - - private IDictionary CreateEmptyRequest(string header = null, string value = null) - { - IDictionary env = new Dictionary(); - var requestHeaders = new Dictionary(StringComparer.OrdinalIgnoreCase); - env["owin.RequestHeaders"] = requestHeaders; - if (header != null) - { - requestHeaders[header] = new string[] { value }; - } - env["owin.ResponseHeaders"] = new Dictionary(StringComparer.OrdinalIgnoreCase); - env["server.OnSendingHeaders"] = new Action, object>((a, b) => { }); - return env; - } - - private Task SimpleApp(IDictionary env) - { - env["owin.ResponseStatusCode"] = DefaultStatusCode; - return Task.FromResult(null); - } - } -} diff --git a/test/Microsoft.AspNet.Security.Windows.Test/Properties/AssemblyInfo.cs b/test/Microsoft.AspNet.Security.Windows.Test/Properties/AssemblyInfo.cs deleted file mode 100644 index c0ff848336..0000000000 --- a/test/Microsoft.AspNet.Security.Windows.Test/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Microsoft Open Technologies, Inc. -// All Rights Reserved -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING -// WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF -// TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR -// NON-INFRINGEMENT. -// See the Apache 2 License for the specific language governing -// permissions and limitations under the License. - -// ----------------------------------------------------------------------- -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// -// ----------------------------------------------------------------------- - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Microsoft.AspNet.Security.Windows.Tests")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Microsoft.AspNet.Security.Windows.Tests")] -[assembly: AssemblyCopyright("Copyright © 2012")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("334c99b0-a718-4cda-9ca0-d5a45c3a32b0")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("0.5")] -[assembly: AssemblyVersion("0.5")] -[assembly: AssemblyFileVersion("0.5.40117.0")] diff --git a/test/Microsoft.AspNet.Security.Windows.Test/project.json b/test/Microsoft.AspNet.Security.Windows.Test/project.json deleted file mode 100644 index f4e5ecfa6f..0000000000 --- a/test/Microsoft.AspNet.Security.Windows.Test/project.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "dependencies": { - "Microsoft.AspNet.Security.Windows" : "", - "Microsoft.AspNet.Server.WebListener" : "", - "xunit.abstractions": "2.0.0-aspnet-*", - "xunit.assert": "2.0.0-aspnet-*", - "xunit.core": "2.0.0-aspnet-*", - "xunit.execution": "2.0.0-aspnet-*" - }, - "frameworks": { - "aspnet50": { - "dependencies": { - "System.Net.Http": "", - "System.Net.Http.WebRequest": "" - } - } - } -}