Removed references to Shouldly

This commit is contained in:
Jason Loeffler 2015-09-15 14:22:38 -05:00
parent ee2d263223
commit b25d4b537f
10 changed files with 298 additions and 311 deletions

View File

@ -19,7 +19,6 @@ using Microsoft.AspNet.Http.Authentication;
using Microsoft.AspNet.Http.Features.Authentication; using Microsoft.AspNet.Http.Features.Authentication;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Shouldly;
using Xunit; using Xunit;
namespace Microsoft.AspNet.Authentication.Cookies namespace Microsoft.AspNet.Authentication.Cookies
@ -33,7 +32,7 @@ namespace Microsoft.AspNet.Authentication.Cookies
{ {
}); });
var response = await server.CreateClient().GetAsync("http://example.com/normal"); var response = await server.CreateClient().GetAsync("http://example.com/normal");
response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
} }
[Theory] [Theory]
@ -49,12 +48,12 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction = await SendAsync(server, "http://example.com/protected"); var transaction = await SendAsync(server, "http://example.com/protected");
transaction.Response.StatusCode.ShouldBe(auto ? HttpStatusCode.Redirect : HttpStatusCode.Unauthorized); Assert.Equal(auto ? HttpStatusCode.Redirect : HttpStatusCode.Unauthorized, transaction.Response.StatusCode);
if (auto) if (auto)
{ {
var location = transaction.Response.Headers.Location; var location = transaction.Response.Headers.Location;
location.LocalPath.ShouldBe("/login"); Assert.Equal("/login", location.LocalPath);
location.Query.ShouldBe("?ReturnUrl=%2Fprotected"); Assert.Equal("?ReturnUrl=%2Fprotected", location.Query);
} }
} }
@ -65,9 +64,9 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction = await SendAsync(server, "http://example.com/protected/CustomRedirect"); var transaction = await SendAsync(server, "http://example.com/protected/CustomRedirect");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location; var location = transaction.Response.Headers.Location;
location.ToString().ShouldBe("http://example.com/Account/Login?ReturnUrl=%2FCustomRedirect"); Assert.Equal("http://example.com/Account/Login?ReturnUrl=%2FCustomRedirect", location.ToString());
} }
private Task SignInAsAlice(HttpContext context) private Task SignInAsAlice(HttpContext context)
@ -101,12 +100,12 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction = await SendAsync(server, "http://example.com/testpath"); var transaction = await SendAsync(server, "http://example.com/testpath");
var setCookie = transaction.SetCookie; var setCookie = transaction.SetCookie;
setCookie.ShouldStartWith("TestCookie="); Assert.StartsWith("TestCookie=", setCookie);
setCookie.ShouldContain("; path=/"); Assert.Contains("; path=/", setCookie);
setCookie.ShouldContain("; HttpOnly"); Assert.Contains("; httponly", setCookie);
setCookie.ShouldNotContain("; expires="); Assert.DoesNotContain("; expires=", setCookie);
setCookie.ShouldNotContain("; domain="); Assert.DoesNotContain("; domain=", setCookie);
setCookie.ShouldNotContain("; secure"); Assert.DoesNotContain("; secure", setCookie);
} }
[Fact] [Fact]
@ -157,11 +156,11 @@ namespace Microsoft.AspNet.Authentication.Cookies
if (shouldBeSecureOnly) if (shouldBeSecureOnly)
{ {
setCookie.ShouldContain("; secure"); Assert.Contains("; secure", setCookie);
} }
else else
{ {
setCookie.ShouldNotContain("; secure"); Assert.DoesNotContain("; secure", setCookie);
} }
} }
@ -181,11 +180,11 @@ namespace Microsoft.AspNet.Authentication.Cookies
var setCookie1 = transaction1.SetCookie; var setCookie1 = transaction1.SetCookie;
setCookie1.ShouldContain("TestCookie="); Assert.Contains("TestCookie=", setCookie1);
setCookie1.ShouldContain(" path=/foo"); Assert.Contains(" path=/foo", setCookie1);
setCookie1.ShouldContain(" domain=another.com"); Assert.Contains(" domain=another.com", setCookie1);
setCookie1.ShouldContain(" secure"); Assert.Contains(" secure", setCookie1);
setCookie1.ShouldContain(" HttpOnly"); Assert.Contains(" httponly", setCookie1);
var server2 = CreateServer(options => var server2 = CreateServer(options =>
{ {
@ -198,11 +197,11 @@ namespace Microsoft.AspNet.Authentication.Cookies
var setCookie2 = transaction2.SetCookie; var setCookie2 = transaction2.SetCookie;
setCookie2.ShouldContain("SecondCookie="); Assert.Contains("SecondCookie=", setCookie2);
setCookie2.ShouldContain(" path=/base"); Assert.Contains(" path=/base", setCookie2);
setCookie2.ShouldNotContain(" domain="); Assert.DoesNotContain(" domain=", setCookie2);
setCookie2.ShouldNotContain(" secure"); Assert.DoesNotContain(" secure", setCookie2);
setCookie2.ShouldNotContain(" HttpOnly"); Assert.DoesNotContain(" httponly", setCookie2);
} }
[Fact] [Fact]
@ -218,7 +217,7 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction2, ClaimTypes.Name));
} }
[Fact] [Fact]
@ -260,10 +259,9 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction2, ClaimTypes.Name));
FindClaimValue(transaction2, "xform").ShouldBe("yup"); Assert.Equal("yup", FindClaimValue(transaction2, "xform"));
FindClaimValue(transaction2, "sync").ShouldBe(null); Assert.Null(FindClaimValue(transaction2, "sync"));
} }
[Fact] [Fact]
@ -289,12 +287,12 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction2.SetCookie.ShouldBe(null); Assert.Null(transaction2.SetCookie);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction2, ClaimTypes.Name));
transaction3.SetCookie.ShouldBe(null); Assert.Null(transaction3.SetCookie);
FindClaimValue(transaction3, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction3, ClaimTypes.Name));
transaction4.SetCookie.ShouldBe(null); Assert.Null(transaction4.SetCookie);
FindClaimValue(transaction4, ClaimTypes.Name).ShouldBe(null); Assert.Null(FindClaimValue(transaction4, ClaimTypes.Name));
} }
[Fact] [Fact]
@ -324,12 +322,12 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction2.SetCookie.ShouldBe(null); Assert.Null(transaction2.SetCookie);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction2, ClaimTypes.Name));
transaction3.SetCookie.ShouldBe(null); Assert.Null(transaction3.SetCookie);
FindClaimValue(transaction3, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction3, ClaimTypes.Name));
transaction4.SetCookie.ShouldBe(null); Assert.Null(transaction4.SetCookie);
FindClaimValue(transaction4, ClaimTypes.Name).ShouldBe(null); Assert.Null(FindClaimValue(transaction4, ClaimTypes.Name));
} }
[Fact] [Fact]
@ -358,8 +356,8 @@ namespace Microsoft.AspNet.Authentication.Cookies
clock.Add(TimeSpan.FromMinutes(11)); clock.Add(TimeSpan.FromMinutes(11));
var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction2.SetCookie.ShouldBe(null); Assert.Null(transaction2.SetCookie);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe(null); Assert.Null(FindClaimValue(transaction2, ClaimTypes.Name));
} }
[Fact] [Fact]
@ -388,8 +386,8 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction1 = await SendAsync(server, "http://example.com/testpath"); var transaction1 = await SendAsync(server, "http://example.com/testpath");
var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction2.SetCookie.ShouldContain(".AspNet.Cookies=; expires="); Assert.Contains(".AspNet.Cookies=; expires=", transaction2.SetCookie);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe(null); Assert.Null(FindClaimValue(transaction2, ClaimTypes.Name));
} }
[Fact] [Fact]
@ -415,28 +413,28 @@ namespace Microsoft.AspNet.Authentication.Cookies
new ClaimsPrincipal(new ClaimsIdentity(new GenericIdentity("Alice", "Cookies"))))); new ClaimsPrincipal(new ClaimsIdentity(new GenericIdentity("Alice", "Cookies")))));
var transaction1 = await SendAsync(server, "http://example.com/testpath"); var transaction1 = await SendAsync(server, "http://example.com/testpath");
var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction2.SetCookie.ShouldNotBe(null); Assert.NotNull(transaction2.SetCookie);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction2, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(5)); clock.Add(TimeSpan.FromMinutes(5));
var transaction3 = await SendAsync(server, "http://example.com/me/Cookies", transaction2.CookieNameValue); var transaction3 = await SendAsync(server, "http://example.com/me/Cookies", transaction2.CookieNameValue);
transaction3.SetCookie.ShouldNotBe(null); Assert.NotNull(transaction3.SetCookie);
FindClaimValue(transaction3, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction3, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(6)); clock.Add(TimeSpan.FromMinutes(6));
var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction4.SetCookie.ShouldBe(null); Assert.Null(transaction4.SetCookie);
FindClaimValue(transaction4, ClaimTypes.Name).ShouldBe(null); Assert.Null(FindClaimValue(transaction4, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(5)); clock.Add(TimeSpan.FromMinutes(5));
var transaction5 = await SendAsync(server, "http://example.com/me/Cookies", transaction2.CookieNameValue); var transaction5 = await SendAsync(server, "http://example.com/me/Cookies", transaction2.CookieNameValue);
transaction5.SetCookie.ShouldBe(null); Assert.Null(transaction5.SetCookie);
FindClaimValue(transaction5, ClaimTypes.Name).ShouldBe(null); Assert.Null(FindClaimValue(transaction5, ClaimTypes.Name));
} }
[Fact] [Fact]
@ -463,26 +461,26 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction1 = await SendAsync(server, "http://example.com/testpath"); var transaction1 = await SendAsync(server, "http://example.com/testpath");
var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction2.SetCookie.ShouldNotBe(null); Assert.NotNull(transaction2.SetCookie);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction2, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(5)); clock.Add(TimeSpan.FromMinutes(5));
var transaction3 = await SendAsync(server, "http://example.com/me/Cookies", transaction2.CookieNameValue); var transaction3 = await SendAsync(server, "http://example.com/me/Cookies", transaction2.CookieNameValue);
transaction3.SetCookie.ShouldNotBe(null); Assert.NotNull(transaction3.SetCookie);
FindClaimValue(transaction3, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction3, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(6)); clock.Add(TimeSpan.FromMinutes(6));
var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction3.CookieNameValue); var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction3.CookieNameValue);
transaction4.SetCookie.ShouldNotBe(null); Assert.NotNull(transaction4.SetCookie);
FindClaimValue(transaction4, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction4, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(11)); clock.Add(TimeSpan.FromMinutes(11));
var transaction5 = await SendAsync(server, "http://example.com/me/Cookies", transaction4.CookieNameValue); var transaction5 = await SendAsync(server, "http://example.com/me/Cookies", transaction4.CookieNameValue);
transaction5.SetCookie.ShouldBe(null); Assert.Null(transaction5.SetCookie);
FindClaimValue(transaction5, ClaimTypes.Name).ShouldBe(null); Assert.Null(FindClaimValue(transaction5, ClaimTypes.Name));
} }
[Fact] [Fact]
@ -507,20 +505,20 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction1 = await SendAsync(server, "http://example.com/testpath"); var transaction1 = await SendAsync(server, "http://example.com/testpath");
var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction2.SetCookie.ShouldBe(null); Assert.Null(transaction2.SetCookie);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction2, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(3)); clock.Add(TimeSpan.FromMinutes(3));
var transaction3 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction3 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction3.SetCookie.ShouldBe(null); Assert.Null(transaction3.SetCookie);
FindClaimValue(transaction3, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction3, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(3)); clock.Add(TimeSpan.FromMinutes(3));
var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction4.SetCookie.ShouldBe(null); Assert.Null(transaction4.SetCookie);
FindClaimValue(transaction4, ClaimTypes.Name).ShouldBe(null); Assert.Null(FindClaimValue(transaction4, ClaimTypes.Name));
} }
[Fact] [Fact]
@ -537,27 +535,27 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction1 = await SendAsync(server, "http://example.com/testpath"); var transaction1 = await SendAsync(server, "http://example.com/testpath");
var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction2.SetCookie.ShouldBe(null); Assert.Null(transaction2.SetCookie);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction2, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(4)); clock.Add(TimeSpan.FromMinutes(4));
var transaction3 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction3 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction3.SetCookie.ShouldBe(null); Assert.Null(transaction3.SetCookie);
FindClaimValue(transaction3, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction3, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(4)); clock.Add(TimeSpan.FromMinutes(4));
// transaction4 should arrive with a new SetCookie value // transaction4 should arrive with a new SetCookie value
var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue); var transaction4 = await SendAsync(server, "http://example.com/me/Cookies", transaction1.CookieNameValue);
transaction4.SetCookie.ShouldNotBe(null); Assert.NotNull(transaction4.SetCookie);
FindClaimValue(transaction4, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction4, ClaimTypes.Name));
clock.Add(TimeSpan.FromMinutes(4)); clock.Add(TimeSpan.FromMinutes(4));
var transaction5 = await SendAsync(server, "http://example.com/me/Cookies", transaction4.CookieNameValue); var transaction5 = await SendAsync(server, "http://example.com/me/Cookies", transaction4.CookieNameValue);
transaction5.SetCookie.ShouldBe(null); Assert.Null(transaction5.SetCookie);
FindClaimValue(transaction5, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction5, ClaimTypes.Name));
} }
[Fact] [Fact]
@ -595,9 +593,9 @@ namespace Microsoft.AspNet.Authentication.Cookies
var url = "http://example.com/challenge"; var url = "http://example.com/challenge";
var transaction2 = await SendAsync(server, url, transaction1.CookieNameValue); var transaction2 = await SendAsync(server, url, transaction1.CookieNameValue);
transaction2.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction2.Response.StatusCode);
var location = transaction2.Response.Headers.Location; var location = transaction2.Response.Headers.Location;
location.LocalPath.ShouldBe("/Account/AccessDenied"); Assert.Equal("/Account/AccessDenied", location.LocalPath);
} }
[Theory] [Theory]
@ -616,9 +614,9 @@ namespace Microsoft.AspNet.Authentication.Cookies
var url = "http://example.com/challenge"; var url = "http://example.com/challenge";
var transaction = await SendAsync(server, url); var transaction = await SendAsync(server, url);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location; var location = transaction.Response.Headers.Location;
location.LocalPath.ShouldBe("/Account/Login"); Assert.Equal("/Account/Login", location.LocalPath);
} }
[Theory] [Theory]
@ -637,9 +635,9 @@ namespace Microsoft.AspNet.Authentication.Cookies
var url = "http://example.com/forbid"; var url = "http://example.com/forbid";
var transaction = await SendAsync(server, url); var transaction = await SendAsync(server, url);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location; var location = transaction.Response.Headers.Location;
location.LocalPath.ShouldBe("/Account/AccessDenied"); Assert.Equal("/Account/AccessDenied", location.LocalPath);
} }
[Fact] [Fact]
@ -657,10 +655,10 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction2 = await SendAsync(server, "http://example.com/challenge", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/challenge", transaction1.CookieNameValue);
transaction2.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction2.Response.StatusCode);
var location = transaction2.Response.Headers.Location; var location = transaction2.Response.Headers.Location;
location.LocalPath.ShouldBe("/accessdenied"); Assert.Equal("/accessdenied", location.LocalPath);
} }
[Fact] [Fact]
@ -677,7 +675,7 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction2 = await SendAsync(server, "http://example.com/challenge", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/challenge", transaction1.CookieNameValue);
transaction2.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction2.Response.StatusCode);
} }
[Fact] [Fact]
@ -694,7 +692,7 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction2 = await SendAsync(server, "http://example.com/unauthorized", transaction1.CookieNameValue); var transaction2 = await SendAsync(server, "http://example.com/unauthorized", transaction1.CookieNameValue);
transaction2.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction2.Response.StatusCode);
} }
[Fact] [Fact]
@ -709,11 +707,11 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction = await server.SendAsync("http://example.com/login"); var transaction = await server.SendAsync("http://example.com/login");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location; var location = transaction.Response.Headers.Location;
location.LocalPath.ShouldBe("/page"); Assert.Equal("/page", location.LocalPath);
location.Query.ShouldBe("?ReturnUrl=%2F"); Assert.Equal("?ReturnUrl=%2F", location.Query);
} }
[Fact] [Fact]
@ -728,7 +726,7 @@ namespace Microsoft.AspNet.Authentication.Cookies
}, services => services.AddAuthentication()); }, services => services.AddAuthentication());
var transaction = await server.SendAsync("http://example.com"); var transaction = await server.SendAsync("http://example.com");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
/* [Fact] /* [Fact]
@ -743,7 +741,7 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction = await server.SendAsync("http://example.com"); var transaction = await server.SendAsync("http://example.com");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
Assert.True(transaction.SetCookie[0].StartsWith(".AspNet.Cookies=")); Assert.True(transaction.SetCookie[0].StartsWith(".AspNet.Cookies="));
} }
@ -759,7 +757,7 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction = await server.SendAsync("http://example.com"); var transaction = await server.SendAsync("http://example.com");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
Assert.True(transaction.SetCookie[0].StartsWith("One=")); Assert.True(transaction.SetCookie[0].StartsWith("One="));
}*/ }*/
@ -775,8 +773,8 @@ namespace Microsoft.AspNet.Authentication.Cookies
services => services.AddAuthentication()); services => services.AddAuthentication());
var transaction = await server.SendAsync("http://example.com/notlogin?ReturnUrl=%2Fpage"); var transaction = await server.SendAsync("http://example.com/notlogin?ReturnUrl=%2Fpage");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
transaction.SetCookie.ShouldNotBe(null); Assert.NotNull(transaction.SetCookie);
} }
[Fact] [Fact]
@ -792,11 +790,11 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction = await server.SendAsync("http://example.com/login?ReturnUrl=%2Fpage"); var transaction = await server.SendAsync("http://example.com/login?ReturnUrl=%2Fpage");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.SetCookie.ShouldNotBe(null); Assert.NotNull(transaction.SetCookie);
var location = transaction.Response.Headers.Location; var location = transaction.Response.Headers.Location;
location.OriginalString.ShouldBe("/page"); Assert.Equal("/page", location.OriginalString);
} }
[Fact] [Fact]
@ -810,8 +808,8 @@ namespace Microsoft.AspNet.Authentication.Cookies
services => services.AddAuthentication()); services => services.AddAuthentication());
var transaction = await server.SendAsync("http://example.com/notlogout?ReturnUrl=%2Fpage"); var transaction = await server.SendAsync("http://example.com/notlogout?ReturnUrl=%2Fpage");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
transaction.SetCookie[0].ShouldContain(".AspNet.Cookies=; expires="); Assert.Contains(".AspNet.Cookies=; expires=", transaction.SetCookie[0]);
} }
[Fact] [Fact]
@ -826,11 +824,11 @@ namespace Microsoft.AspNet.Authentication.Cookies
var transaction = await server.SendAsync("http://example.com/logout?ReturnUrl=%2Fpage"); var transaction = await server.SendAsync("http://example.com/logout?ReturnUrl=%2Fpage");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.SetCookie[0].ShouldContain(".AspNet.Cookies=; expires="); Assert.Contains(".AspNet.Cookies=; expires=", transaction.SetCookie[0]);
var location = transaction.Response.Headers.Location; var location = transaction.Response.Headers.Location;
location.OriginalString.ShouldBe("/page"); Assert.Equal("/page", location.OriginalString);
} }
[Fact] [Fact]
@ -844,10 +842,10 @@ namespace Microsoft.AspNet.Authentication.Cookies
services => services.AddAuthentication()); services => services.AddAuthentication());
var transaction = await server.SendAsync("http://example.com/forbid"); var transaction = await server.SendAsync("http://example.com/forbid");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location; var location = transaction.Response.Headers.Location;
location.LocalPath.ShouldBe("/denied"); Assert.Equal("/denied", location.LocalPath);
} }
[Fact] [Fact]
@ -862,11 +860,11 @@ namespace Microsoft.AspNet.Authentication.Cookies
services => services.AddAuthentication()); services => services.AddAuthentication());
var transaction = await server.SendAsync("http://example.com/base/login"); var transaction = await server.SendAsync("http://example.com/base/login");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location; var location = transaction.Response.Headers.Location;
location.LocalPath.ShouldBe("/base/page"); Assert.Equal("/base/page", location.LocalPath);
location.Query.ShouldBe("?ReturnUrl=%2F"); Assert.Equal("?ReturnUrl=%2F", location.Query);
} }
[Fact] [Fact]
@ -881,10 +879,10 @@ namespace Microsoft.AspNet.Authentication.Cookies
services => services.AddAuthentication()); services => services.AddAuthentication());
var transaction = await server.SendAsync("http://example.com/base/forbid"); var transaction = await server.SendAsync("http://example.com/base/forbid");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location; var location = transaction.Response.Headers.Location;
location.LocalPath.ShouldBe("/base/denied"); Assert.Equal("/base/denied", location.LocalPath);
} }
[Fact] [Fact]
@ -907,7 +905,7 @@ namespace Microsoft.AspNet.Authentication.Cookies
services => services.AddAuthentication()); services => services.AddAuthentication());
var transaction = await SendAsync(server1, "http://example.com/stuff"); var transaction = await SendAsync(server1, "http://example.com/stuff");
transaction.SetCookie.ShouldNotBe(null); Assert.NotNull(transaction.SetCookie);
var server2 = TestServer.Create(app => var server2 = TestServer.Create(app =>
{ {
@ -926,7 +924,7 @@ namespace Microsoft.AspNet.Authentication.Cookies
}, },
services => services.AddAuthentication()); services => services.AddAuthentication());
var transaction2 = await SendAsync(server2, "http://example.com/stuff", transaction.CookieNameValue); var transaction2 = await SendAsync(server2, "http://example.com/stuff", transaction.CookieNameValue);
FindClaimValue(transaction2, ClaimTypes.Name).ShouldBe("Alice"); Assert.Equal("Alice", FindClaimValue(transaction2, ClaimTypes.Name));
} }
private class NoOpDataProtector : IDataProtector private class NoOpDataProtector : IDataProtector

View File

@ -1,7 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Shouldly;
using Xunit; using Xunit;
namespace Microsoft.AspNet.Authentication namespace Microsoft.AspNet.Authentication
@ -24,7 +23,7 @@ namespace Microsoft.AspNet.Authentication
for (int index = 0; index != length; ++index) for (int index = 0; index != length; ++index)
{ {
result[index].ShouldBe(data[index]); Assert.Equal(data[index], result[index]);
} }
} }
} }

View File

@ -16,7 +16,6 @@ using Microsoft.AspNet.Http.Authentication;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.WebEncoders; using Microsoft.Framework.WebEncoders;
using Shouldly;
using Newtonsoft.Json; using Newtonsoft.Json;
using Xunit; using Xunit;
@ -65,9 +64,9 @@ namespace Microsoft.AspNet.Authentication.Facebook
return true; return true;
}); });
var transaction = await server.SendAsync("http://example.com/challenge"); var transaction = await server.SendAsync("http://example.com/challenge");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var query = transaction.Response.Headers.Location.Query; var query = transaction.Response.Headers.Location.Query;
query.ShouldContain("custom=test"); Assert.Contains("custom=test", query);
} }
[Fact] [Fact]
@ -90,14 +89,14 @@ namespace Microsoft.AspNet.Authentication.Facebook
}, },
handler: null); handler: null);
var transaction = await server.SendAsync("http://example.com/base/login"); var transaction = await server.SendAsync("http://example.com/base/login");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location.AbsoluteUri; var location = transaction.Response.Headers.Location.AbsoluteUri;
location.ShouldContain("https://www.facebook.com/v2.2/dialog/oauth"); Assert.Contains("https://www.facebook.com/v2.2/dialog/oauth", location);
location.ShouldContain("response_type=code"); Assert.Contains("response_type=code", location);
location.ShouldContain("client_id="); Assert.Contains("client_id=", location);
location.ShouldContain("redirect_uri=" + UrlEncoder.Default.UrlEncode("http://example.com/base/signin-facebook")); Assert.Contains("redirect_uri=" + UrlEncoder.Default.UrlEncode("http://example.com/base/signin-facebook"), location);
location.ShouldContain("scope="); Assert.Contains("scope=", location);
location.ShouldContain("state="); Assert.Contains("state=", location);
} }
[Fact] [Fact]
@ -121,14 +120,14 @@ namespace Microsoft.AspNet.Authentication.Facebook
}, },
handler: null); handler: null);
var transaction = await server.SendAsync("http://example.com/login"); var transaction = await server.SendAsync("http://example.com/login");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location.AbsoluteUri; var location = transaction.Response.Headers.Location.AbsoluteUri;
location.ShouldContain("https://www.facebook.com/v2.2/dialog/oauth"); Assert.Contains("https://www.facebook.com/v2.2/dialog/oauth", location);
location.ShouldContain("response_type=code"); Assert.Contains("response_type=code", location);
location.ShouldContain("client_id="); Assert.Contains("client_id=", location);
location.ShouldContain("redirect_uri="+ UrlEncoder.Default.UrlEncode("http://example.com/signin-facebook")); Assert.Contains("redirect_uri="+ UrlEncoder.Default.UrlEncode("http://example.com/signin-facebook"), location);
location.ShouldContain("scope="); Assert.Contains("scope=", location);
location.ShouldContain("state="); Assert.Contains("state=", location);
} }
[Fact] [Fact]
@ -163,14 +162,14 @@ namespace Microsoft.AspNet.Authentication.Facebook
return true; return true;
}); });
var transaction = await server.SendAsync("http://example.com/challenge"); var transaction = await server.SendAsync("http://example.com/challenge");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location.AbsoluteUri; var location = transaction.Response.Headers.Location.AbsoluteUri;
location.ShouldContain("https://www.facebook.com/v2.2/dialog/oauth"); Assert.Contains("https://www.facebook.com/v2.2/dialog/oauth", location);
location.ShouldContain("response_type=code"); Assert.Contains("response_type=code", location);
location.ShouldContain("client_id="); Assert.Contains("client_id=", location);
location.ShouldContain("redirect_uri="); Assert.Contains("redirect_uri=", location);
location.ShouldContain("scope="); Assert.Contains("scope=", location);
location.ShouldContain("state="); Assert.Contains("state=", location);
} }
[Fact] [Fact]
@ -236,11 +235,11 @@ namespace Microsoft.AspNet.Authentication.Facebook
var transaction = await server.SendAsync( var transaction = await server.SendAsync(
"https://example.com/signin-facebook?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state), "https://example.com/signin-facebook?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state),
correlationKey + "=" + correlationValue); correlationKey + "=" + correlationValue);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.Response.Headers.GetValues("Location").First().ShouldBe("/me"); Assert.Equal("/me", transaction.Response.Headers.GetValues("Location").First());
finalUserInfoEndpoint.Count(c => c == '?').ShouldBe(1); Assert.Equal(1, finalUserInfoEndpoint.Count(c => c == '?'));
finalUserInfoEndpoint.ShouldContain("fields=email,timezone,picture"); Assert.Contains("fields=email,timezone,picture", finalUserInfoEndpoint);
finalUserInfoEndpoint.ShouldContain("&access_token="); Assert.Contains("&access_token=", finalUserInfoEndpoint);
} }
private static TestServer CreateServer(Action<IApplicationBuilder> configure, Action<IServiceCollection> configureServices, Func<HttpContext, bool> handler) private static TestServer CreateServer(Action<IApplicationBuilder> configure, Action<IServiceCollection> configureServices, Func<HttpContext, bool> handler)

View File

@ -17,7 +17,6 @@ using Microsoft.AspNet.TestHost;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.WebEncoders; using Microsoft.Framework.WebEncoders;
using Newtonsoft.Json; using Newtonsoft.Json;
using Shouldly;
using Xunit; using Xunit;
namespace Microsoft.AspNet.Authentication.Google namespace Microsoft.AspNet.Authentication.Google
@ -33,17 +32,17 @@ namespace Microsoft.AspNet.Authentication.Google
options.ClientSecret = "Test Secret"; options.ClientSecret = "Test Secret";
}); });
var transaction = await server.SendAsync("https://example.com/challenge"); var transaction = await server.SendAsync("https://example.com/challenge");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location.ToString(); var location = transaction.Response.Headers.Location.ToString();
location.ShouldContain("https://accounts.google.com/o/oauth2/auth?response_type=code"); Assert.Contains("https://accounts.google.com/o/oauth2/auth?response_type=code", location);
location.ShouldContain("&client_id="); Assert.Contains("&client_id=", location);
location.ShouldContain("&redirect_uri="); Assert.Contains("&redirect_uri=", location);
location.ShouldContain("&scope="); Assert.Contains("&scope=", location);
location.ShouldContain("&state="); Assert.Contains("&state=", location);
location.ShouldNotContain("access_type="); Assert.DoesNotContain("access_type=", location);
location.ShouldNotContain("approval_prompt="); Assert.DoesNotContain("approval_prompt=", location);
location.ShouldNotContain("login_hint="); Assert.DoesNotContain("login_hint=", location);
} }
[Fact] [Fact]
@ -55,7 +54,7 @@ namespace Microsoft.AspNet.Authentication.Google
options.ClientSecret = "Test Secret"; options.ClientSecret = "Test Secret";
}); });
var transaction = await server.SendAsync("https://example.com/signIn"); var transaction = await server.SendAsync("https://example.com/signIn");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
[Fact] [Fact]
@ -67,7 +66,7 @@ namespace Microsoft.AspNet.Authentication.Google
options.ClientSecret = "Test Secret"; options.ClientSecret = "Test Secret";
}); });
var transaction = await server.SendAsync("https://example.com/signOut"); var transaction = await server.SendAsync("https://example.com/signOut");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
[Fact] [Fact]
@ -79,7 +78,7 @@ namespace Microsoft.AspNet.Authentication.Google
options.ClientSecret = "Test Secret"; options.ClientSecret = "Test Secret";
}); });
var transaction = await server.SendAsync("https://example.com/signOut"); var transaction = await server.SendAsync("https://example.com/signOut");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
[Fact] [Fact]
@ -92,13 +91,13 @@ namespace Microsoft.AspNet.Authentication.Google
options.AutomaticAuthentication = true; options.AutomaticAuthentication = true;
}); });
var transaction = await server.SendAsync("https://example.com/401"); var transaction = await server.SendAsync("https://example.com/401");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location.ToString(); var location = transaction.Response.Headers.Location.ToString();
location.ShouldContain("https://accounts.google.com/o/oauth2/auth?response_type=code"); Assert.Contains("https://accounts.google.com/o/oauth2/auth?response_type=code", location);
location.ShouldContain("&client_id="); Assert.Contains("&client_id=", location);
location.ShouldContain("&redirect_uri="); Assert.Contains("&redirect_uri=", location);
location.ShouldContain("&scope="); Assert.Contains("&scope=", location);
location.ShouldContain("&state="); Assert.Contains("&state=", location);
} }
[Fact] [Fact]
@ -110,7 +109,7 @@ namespace Microsoft.AspNet.Authentication.Google
options.ClientSecret = "Test Secret"; options.ClientSecret = "Test Secret";
}); });
var transaction = await server.SendAsync("https://example.com/challenge"); var transaction = await server.SendAsync("https://example.com/challenge");
transaction.SetCookie.Single().ShouldContain(".AspNet.Correlation.Google="); Assert.Contains(".AspNet.Correlation.Google=", transaction.SetCookie.Single());
} }
[Fact] [Fact]
@ -123,7 +122,7 @@ namespace Microsoft.AspNet.Authentication.Google
options.AutomaticAuthentication = true; options.AutomaticAuthentication = true;
}); });
var transaction = await server.SendAsync("https://example.com/401"); var transaction = await server.SendAsync("https://example.com/401");
transaction.SetCookie.Single().ShouldContain(".AspNet.Correlation.Google="); Assert.Contains(".AspNet.Correlation.Google=", transaction.SetCookie.Single());
} }
[Fact] [Fact]
@ -135,9 +134,9 @@ namespace Microsoft.AspNet.Authentication.Google
options.ClientSecret = "Test Secret"; options.ClientSecret = "Test Secret";
}); });
var transaction = await server.SendAsync("https://example.com/challenge"); var transaction = await server.SendAsync("https://example.com/challenge");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var query = transaction.Response.Headers.Location.Query; var query = transaction.Response.Headers.Location.Query;
query.ShouldContain("&scope=" + UrlEncoder.Default.UrlEncode("openid profile email")); Assert.Contains("&scope=" + UrlEncoder.Default.UrlEncode("openid profile email"), query);
} }
[Fact] [Fact]
@ -150,9 +149,9 @@ namespace Microsoft.AspNet.Authentication.Google
options.AutomaticAuthentication = true; options.AutomaticAuthentication = true;
}); });
var transaction = await server.SendAsync("https://example.com/401"); var transaction = await server.SendAsync("https://example.com/401");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var query = transaction.Response.Headers.Location.Query; var query = transaction.Response.Headers.Location.Query;
query.ShouldContain("&scope=" + UrlEncoder.Default.UrlEncode("openid profile email")); Assert.Contains("&scope=" + UrlEncoder.Default.UrlEncode("openid profile email"), query);
} }
[Fact] [Fact]
@ -183,12 +182,12 @@ namespace Microsoft.AspNet.Authentication.Google
return Task.FromResult<object>(null); return Task.FromResult<object>(null);
}); });
var transaction = await server.SendAsync("https://example.com/challenge2"); var transaction = await server.SendAsync("https://example.com/challenge2");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var query = transaction.Response.Headers.Location.Query; var query = transaction.Response.Headers.Location.Query;
query.ShouldContain("scope=" + UrlEncoder.Default.UrlEncode("https://www.googleapis.com/auth/plus.login")); Assert.Contains("scope=" + UrlEncoder.Default.UrlEncode("https://www.googleapis.com/auth/plus.login"), query);
query.ShouldContain("access_type=offline"); Assert.Contains("access_type=offline", query);
query.ShouldContain("approval_prompt=force"); Assert.Contains("approval_prompt=force", query);
query.ShouldContain("login_hint=" + UrlEncoder.Default.UrlEncode("test@example.com")); Assert.Contains("login_hint=" + UrlEncoder.Default.UrlEncode("test@example.com"), query);
} }
[Fact] [Fact]
@ -208,9 +207,9 @@ namespace Microsoft.AspNet.Authentication.Google
}; };
}); });
var transaction = await server.SendAsync("https://example.com/challenge"); var transaction = await server.SendAsync("https://example.com/challenge");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var query = transaction.Response.Headers.Location.Query; var query = transaction.Response.Headers.Location.Query;
query.ShouldContain("custom=test"); Assert.Contains("custom=test", query);
} }
[Fact] [Fact]
@ -222,7 +221,7 @@ namespace Microsoft.AspNet.Authentication.Google
options.ClientSecret = "Test Secret"; options.ClientSecret = "Test Secret";
}); });
var transaction = await server.SendAsync("https://example.com/signin-google?code=TestCode"); var transaction = await server.SendAsync("https://example.com/signin-google?code=TestCode");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.InternalServerError); Assert.Equal(HttpStatusCode.InternalServerError, transaction.Response.StatusCode);
} }
[Theory] [Theory]
@ -286,24 +285,24 @@ namespace Microsoft.AspNet.Authentication.Google
var transaction = await server.SendAsync( var transaction = await server.SendAsync(
"https://example.com/signin-google?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state), "https://example.com/signin-google?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state),
correlationKey + "=" + correlationValue); correlationKey + "=" + correlationValue);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.Response.Headers.GetValues("Location").First().ShouldBe("/me"); Assert.Equal("/me", transaction.Response.Headers.GetValues("Location").First());
transaction.SetCookie.Count.ShouldBe(2); Assert.Equal(2, transaction.SetCookie.Count);
transaction.SetCookie[0].ShouldContain(correlationKey); Assert.Contains(correlationKey, transaction.SetCookie[0]);
transaction.SetCookie[1].ShouldContain(".AspNet." + TestExtensions.CookieAuthenticationScheme); Assert.Contains(".AspNet." + TestExtensions.CookieAuthenticationScheme, transaction.SetCookie[1]);
var authCookie = transaction.AuthenticationCookieValue; var authCookie = transaction.AuthenticationCookieValue;
transaction = await server.SendAsync("https://example.com/me", authCookie); transaction = await server.SendAsync("https://example.com/me", authCookie);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
var expectedIssuer = claimsIssuer ?? GoogleDefaults.AuthenticationScheme; var expectedIssuer = claimsIssuer ?? GoogleDefaults.AuthenticationScheme;
transaction.FindClaimValue(ClaimTypes.Name, expectedIssuer).ShouldBe("Test Name"); Assert.Equal("Test Name", transaction.FindClaimValue(ClaimTypes.Name, expectedIssuer));
transaction.FindClaimValue(ClaimTypes.NameIdentifier, expectedIssuer).ShouldBe("Test User ID"); Assert.Equal("Test User ID", transaction.FindClaimValue(ClaimTypes.NameIdentifier, expectedIssuer));
transaction.FindClaimValue(ClaimTypes.GivenName, expectedIssuer).ShouldBe("Test Given Name"); Assert.Equal("Test Given Name", transaction.FindClaimValue(ClaimTypes.GivenName, expectedIssuer));
transaction.FindClaimValue(ClaimTypes.Surname, expectedIssuer).ShouldBe("Test Family Name"); Assert.Equal("Test Family Name", transaction.FindClaimValue(ClaimTypes.Surname, expectedIssuer));
transaction.FindClaimValue(ClaimTypes.Email, expectedIssuer).ShouldBe("Test email"); Assert.Equal("Test email", transaction.FindClaimValue(ClaimTypes.Email, expectedIssuer));
// Ensure claims transformation // Ensure claims transformation
transaction.FindClaimValue("xform").ShouldBe("yup"); Assert.Equal("yup", transaction.FindClaimValue("xform"));
} }
[Fact] [Fact]
@ -332,8 +331,8 @@ namespace Microsoft.AspNet.Authentication.Google
var transaction = await server.SendAsync( var transaction = await server.SendAsync(
"https://example.com/signin-google?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state), "https://example.com/signin-google?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state),
correlationKey + "=" + correlationValue); correlationKey + "=" + correlationValue);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.Response.Headers.Location.ToString().ShouldContain("error=access_denied"); Assert.Contains("error=access_denied", transaction.Response.Headers.Location.ToString());
} }
[Fact] [Fact]
@ -362,8 +361,8 @@ namespace Microsoft.AspNet.Authentication.Google
var transaction = await server.SendAsync( var transaction = await server.SendAsync(
"https://example.com/signin-google?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state), "https://example.com/signin-google?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state),
correlationKey + "=" + correlationValue); correlationKey + "=" + correlationValue);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.Response.Headers.Location.ToString().ShouldContain("error=access_denied"); Assert.Contains("error=access_denied", transaction.Response.Headers.Location.ToString());
} }
[Fact] [Fact]
@ -434,16 +433,16 @@ namespace Microsoft.AspNet.Authentication.Google
var transaction = await server.SendAsync( var transaction = await server.SendAsync(
"https://example.com/signin-google?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state), "https://example.com/signin-google?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state),
correlationKey + "=" + correlationValue); correlationKey + "=" + correlationValue);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.Response.Headers.GetValues("Location").First().ShouldBe("/me"); Assert.Equal("/me", transaction.Response.Headers.GetValues("Location").First());
transaction.SetCookie.Count.ShouldBe(2); Assert.Equal(2, transaction.SetCookie.Count);
transaction.SetCookie[0].ShouldContain(correlationKey); Assert.Contains(correlationKey, transaction.SetCookie[0]);
transaction.SetCookie[1].ShouldContain(".AspNet." + TestExtensions.CookieAuthenticationScheme); Assert.Contains(".AspNet." + TestExtensions.CookieAuthenticationScheme, transaction.SetCookie[1]);
var authCookie = transaction.AuthenticationCookieValue; var authCookie = transaction.AuthenticationCookieValue;
transaction = await server.SendAsync("https://example.com/me", authCookie); transaction = await server.SendAsync("https://example.com/me", authCookie);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
transaction.FindClaimValue("RefreshToken").ShouldBe("Test Refresh Token"); Assert.Equal("Test Refresh Token", transaction.FindClaimValue("RefreshToken"));
} }
[Fact] [Fact]
@ -526,8 +525,8 @@ namespace Microsoft.AspNet.Authentication.Google
"https://example.com/signin-google?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state), "https://example.com/signin-google?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state),
correlationKey + "=" + correlationValue); correlationKey + "=" + correlationValue);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.Response.Headers.GetValues("Location").First().ShouldBe("/foo"); Assert.Equal("/foo", transaction.Response.Headers.GetValues("Location").First());
} }

View File

@ -13,7 +13,6 @@ using Microsoft.AspNet.Http;
using Microsoft.AspNet.Http.Authentication; using Microsoft.AspNet.Http.Authentication;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Shouldly;
using Xunit; using Xunit;
namespace Microsoft.AspNet.Authentication.JwtBearer namespace Microsoft.AspNet.Authentication.JwtBearer
@ -34,7 +33,7 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
var newBearerToken = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImtyaU1QZG1Cdng2OHNrVDgtbVBBQjNCc2VlQSJ9.eyJhdWQiOiJodHRwczovL1R1c2hhclRlc3Qub25taWNyb3NvZnQuY29tL1RvZG9MaXN0U2VydmljZS1NYW51YWxKd3QiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9hZmJlY2UwMy1hZWFhLTRmM2YtODVlNy1jZTA4ZGQyMGNlNTAvIiwiaWF0IjoxNDE4MzMwNjE0LCJuYmYiOjE0MTgzMzA2MTQsImV4cCI6MTQxODMzNDUxNCwidmVyIjoiMS4wIiwidGlkIjoiYWZiZWNlMDMtYWVhYS00ZjNmLTg1ZTctY2UwOGRkMjBjZTUwIiwiYW1yIjpbInB3ZCJdLCJvaWQiOiI1Mzk3OTdjMi00MDE5LTQ2NTktOWRiNS03MmM0Yzc3NzhhMzMiLCJ1cG4iOiJWaWN0b3JAVHVzaGFyVGVzdC5vbm1pY3Jvc29mdC5jb20iLCJ1bmlxdWVfbmFtZSI6IlZpY3RvckBUdXNoYXJUZXN0Lm9ubWljcm9zb2Z0LmNvbSIsInN1YiI6IkQyMm9aMW9VTzEzTUFiQXZrdnFyd2REVE80WXZJdjlzMV9GNWlVOVUwYnciLCJmYW1pbHlfbmFtZSI6Ikd1cHRhIiwiZ2l2ZW5fbmFtZSI6IlZpY3RvciIsImFwcGlkIjoiNjEzYjVhZjgtZjJjMy00MWI2LWExZGMtNDE2Yzk3ODAzMGI3IiwiYXBwaWRhY3IiOiIwIiwic2NwIjoidXNlcl9pbXBlcnNvbmF0aW9uIiwiYWNyIjoiMSJ9.N_Kw1EhoVGrHbE6hOcm7ERdZ7paBQiNdObvp2c6T6n5CE8p0fZqmUd-ya_EqwElcD6SiKSiP7gj0gpNUnOJcBl_H2X8GseaeeMxBrZdsnDL8qecc6_ygHruwlPltnLTdka67s1Ow4fDSHaqhVTEk6lzGmNEcbNAyb0CxQxU6o7Fh0yHRiWoLsT8yqYk8nKzsHXfZBNby4aRo3_hXaa4i0SZLYfDGGYPdttG4vT_u54QGGd4Wzbonv2gjDlllOVGOwoJS6kfl1h8mk0qxdiIaT_ChbDWgkWvTB7bTvBE-EgHgV0XmAo0WtJeSxgjsG3KhhEPsONmqrSjhIUV4IVnF2w"; var newBearerToken = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImtyaU1QZG1Cdng2OHNrVDgtbVBBQjNCc2VlQSJ9.eyJhdWQiOiJodHRwczovL1R1c2hhclRlc3Qub25taWNyb3NvZnQuY29tL1RvZG9MaXN0U2VydmljZS1NYW51YWxKd3QiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9hZmJlY2UwMy1hZWFhLTRmM2YtODVlNy1jZTA4ZGQyMGNlNTAvIiwiaWF0IjoxNDE4MzMwNjE0LCJuYmYiOjE0MTgzMzA2MTQsImV4cCI6MTQxODMzNDUxNCwidmVyIjoiMS4wIiwidGlkIjoiYWZiZWNlMDMtYWVhYS00ZjNmLTg1ZTctY2UwOGRkMjBjZTUwIiwiYW1yIjpbInB3ZCJdLCJvaWQiOiI1Mzk3OTdjMi00MDE5LTQ2NTktOWRiNS03MmM0Yzc3NzhhMzMiLCJ1cG4iOiJWaWN0b3JAVHVzaGFyVGVzdC5vbm1pY3Jvc29mdC5jb20iLCJ1bmlxdWVfbmFtZSI6IlZpY3RvckBUdXNoYXJUZXN0Lm9ubWljcm9zb2Z0LmNvbSIsInN1YiI6IkQyMm9aMW9VTzEzTUFiQXZrdnFyd2REVE80WXZJdjlzMV9GNWlVOVUwYnciLCJmYW1pbHlfbmFtZSI6Ikd1cHRhIiwiZ2l2ZW5fbmFtZSI6IlZpY3RvciIsImFwcGlkIjoiNjEzYjVhZjgtZjJjMy00MWI2LWExZGMtNDE2Yzk3ODAzMGI3IiwiYXBwaWRhY3IiOiIwIiwic2NwIjoidXNlcl9pbXBlcnNvbmF0aW9uIiwiYWNyIjoiMSJ9.N_Kw1EhoVGrHbE6hOcm7ERdZ7paBQiNdObvp2c6T6n5CE8p0fZqmUd-ya_EqwElcD6SiKSiP7gj0gpNUnOJcBl_H2X8GseaeeMxBrZdsnDL8qecc6_ygHruwlPltnLTdka67s1Ow4fDSHaqhVTEk6lzGmNEcbNAyb0CxQxU6o7Fh0yHRiWoLsT8yqYk8nKzsHXfZBNby4aRo3_hXaa4i0SZLYfDGGYPdttG4vT_u54QGGd4Wzbonv2gjDlllOVGOwoJS6kfl1h8mk0qxdiIaT_ChbDWgkWvTB7bTvBE-EgHgV0XmAo0WtJeSxgjsG3KhhEPsONmqrSjhIUV4IVnF2w";
var response = await SendAsync(server, "http://example.com/oauth", newBearerToken); var response = await SendAsync(server, "http://example.com/oauth", newBearerToken);
response.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, response.Response.StatusCode);
} }
[Fact] [Fact]
@ -45,7 +44,7 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
options.AutomaticAuthentication = true; options.AutomaticAuthentication = true;
}); });
var transaction = await server.SendAsync("https://example.com/signIn"); var transaction = await server.SendAsync("https://example.com/signIn");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
[Fact] [Fact]
@ -56,7 +55,7 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
options.AutomaticAuthentication = true; options.AutomaticAuthentication = true;
}); });
var transaction = await server.SendAsync("https://example.com/signOut"); var transaction = await server.SendAsync("https://example.com/signOut");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
@ -90,8 +89,8 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
}); });
var response = await SendAsync(server, "http://example.com/oauth", "someHeader someblob"); var response = await SendAsync(server, "http://example.com/oauth", "someHeader someblob");
response.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, response.Response.StatusCode);
response.ResponseText.ShouldBe("Bob le Magnifique"); Assert.Equal("Bob le Magnifique", response.ResponseText);
} }
[Fact] [Fact]
@ -99,7 +98,7 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
{ {
var server = CreateServer(options => { }); var server = CreateServer(options => { });
var response = await SendAsync(server, "http://example.com/oauth"); var response = await SendAsync(server, "http://example.com/oauth");
response.Response.StatusCode.ShouldBe(HttpStatusCode.Unauthorized); Assert.Equal(HttpStatusCode.Unauthorized, response.Response.StatusCode);
} }
[Fact] [Fact]
@ -107,7 +106,7 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
{ {
var server = CreateServer(options => { }); var server = CreateServer(options => { });
var response = await SendAsync(server, "http://example.com/oauth","Token"); var response = await SendAsync(server, "http://example.com/oauth","Token");
response.Response.StatusCode.ShouldBe(HttpStatusCode.Unauthorized); Assert.Equal(HttpStatusCode.Unauthorized, response.Response.StatusCode);
} }
[Fact] [Fact]
@ -140,8 +139,8 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
}); });
var response = await SendAsync(server, "http://example.com/oauth", "Bearer someblob"); var response = await SendAsync(server, "http://example.com/oauth", "Bearer someblob");
response.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, response.Response.StatusCode);
response.ResponseText.ShouldBe("Bob le Magnifique"); Assert.Equal("Bob le Magnifique", response.ResponseText);
} }
[Fact] [Fact]
@ -160,7 +159,7 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
var identity = (ClaimsIdentity)context.AuthenticationTicket.Principal.Identity; var identity = (ClaimsIdentity)context.AuthenticationTicket.Principal.Identity;
var identifier = identity.FindFirst(ClaimTypes.NameIdentifier); var identifier = identity.FindFirst(ClaimTypes.NameIdentifier);
identifier.Value.ShouldBe("Bob le Tout Puissant"); Assert.Equal("Bob le Tout Puissant", identifier.Value);
// Remove the existing NameIdentifier claim and replace it // Remove the existing NameIdentifier claim and replace it
// with a new one containing a different value. // with a new one containing a different value.
@ -177,8 +176,8 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
}); });
var response = await SendAsync(server, "http://example.com/oauth", "Bearer someblob"); var response = await SendAsync(server, "http://example.com/oauth", "Bearer someblob");
response.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, response.Response.StatusCode);
response.ResponseText.ShouldBe("Bob le Magnifique"); Assert.Equal("Bob le Magnifique", response.ResponseText);
} }
[Fact] [Fact]
@ -216,8 +215,8 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
}); });
var response = await SendAsync(server, "http://example.com/oauth", "Bearer Token"); var response = await SendAsync(server, "http://example.com/oauth", "Bearer Token");
response.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, response.Response.StatusCode);
response.ResponseText.ShouldBe("Bob le Magnifique"); Assert.Equal("Bob le Magnifique", response.ResponseText);
} }
[Fact] [Fact]
@ -248,7 +247,7 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
}); });
var response = await SendAsync(server, "http://example.com/unauthorized", "Bearer Token"); var response = await SendAsync(server, "http://example.com/unauthorized", "Bearer Token");
response.Response.StatusCode.ShouldBe(HttpStatusCode.Forbidden); Assert.Equal(HttpStatusCode.Forbidden, response.Response.StatusCode);
} }
[Fact] [Fact]
@ -279,7 +278,7 @@ namespace Microsoft.AspNet.Authentication.JwtBearer
}); });
var response = await SendAsync(server, "http://example.com/unauthorized"); var response = await SendAsync(server, "http://example.com/unauthorized");
response.Response.StatusCode.ShouldBe(HttpStatusCode.Unauthorized); Assert.Equal(HttpStatusCode.Unauthorized, response.Response.StatusCode);
} }
class BlobTokenValidator : ISecurityTokenValidator class BlobTokenValidator : ISecurityTokenValidator

View File

@ -17,7 +17,6 @@ using Microsoft.AspNet.TestHost;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.WebEncoders; using Microsoft.Framework.WebEncoders;
using Newtonsoft.Json; using Newtonsoft.Json;
using Shouldly;
using Xunit; using Xunit;
namespace Microsoft.AspNet.Authentication.Tests.MicrosoftAccount namespace Microsoft.AspNet.Authentication.Tests.MicrosoftAccount
@ -42,9 +41,9 @@ namespace Microsoft.AspNet.Authentication.Tests.MicrosoftAccount
}; };
}); });
var transaction = await server.SendAsync("http://example.com/challenge"); var transaction = await server.SendAsync("http://example.com/challenge");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var query = transaction.Response.Headers.Location.Query; var query = transaction.Response.Headers.Location.Query;
query.ShouldContain("custom=test"); Assert.Contains("custom=test", query);
} }
[Fact] [Fact]
@ -56,7 +55,7 @@ namespace Microsoft.AspNet.Authentication.Tests.MicrosoftAccount
options.ClientSecret = "Test Secret"; options.ClientSecret = "Test Secret";
}); });
var transaction = await server.SendAsync("https://example.com/signIn"); var transaction = await server.SendAsync("https://example.com/signIn");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
[Fact] [Fact]
@ -68,7 +67,7 @@ namespace Microsoft.AspNet.Authentication.Tests.MicrosoftAccount
options.ClientSecret = "Test Secret"; options.ClientSecret = "Test Secret";
}); });
var transaction = await server.SendAsync("https://example.com/signOut"); var transaction = await server.SendAsync("https://example.com/signOut");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
[Fact] [Fact]
@ -80,7 +79,7 @@ namespace Microsoft.AspNet.Authentication.Tests.MicrosoftAccount
options.ClientSecret = "Test Secret"; options.ClientSecret = "Test Secret";
}); });
var transaction = await server.SendAsync("https://example.com/signOut"); var transaction = await server.SendAsync("https://example.com/signOut");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
[Fact] [Fact]
@ -93,14 +92,14 @@ namespace Microsoft.AspNet.Authentication.Tests.MicrosoftAccount
options.ClientSecret = "Test Client Secret"; options.ClientSecret = "Test Client Secret";
}); });
var transaction = await server.SendAsync("http://example.com/challenge"); var transaction = await server.SendAsync("http://example.com/challenge");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location.AbsoluteUri; var location = transaction.Response.Headers.Location.AbsoluteUri;
location.ShouldContain("https://login.live.com/oauth20_authorize.srf"); Assert.Contains("https://login.live.com/oauth20_authorize.srf", location);
location.ShouldContain("response_type=code"); Assert.Contains("response_type=code", location);
location.ShouldContain("client_id="); Assert.Contains("client_id=", location);
location.ShouldContain("redirect_uri="); Assert.Contains("redirect_uri=", location);
location.ShouldContain("scope="); Assert.Contains("scope=", location);
location.ShouldContain("state="); Assert.Contains("state=", location);
} }
[Fact] [Fact]
@ -164,16 +163,16 @@ namespace Microsoft.AspNet.Authentication.Tests.MicrosoftAccount
var transaction = await server.SendAsync( var transaction = await server.SendAsync(
"https://example.com/signin-microsoft?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state), "https://example.com/signin-microsoft?code=TestCode&state=" + UrlEncoder.Default.UrlEncode(state),
correlationKey + "=" + correlationValue); correlationKey + "=" + correlationValue);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.Response.Headers.GetValues("Location").First().ShouldBe("/me"); Assert.Equal("/me", transaction.Response.Headers.GetValues("Location").First());
transaction.SetCookie.Count.ShouldBe(2); Assert.Equal(2, transaction.SetCookie.Count);
transaction.SetCookie[0].ShouldContain(correlationKey); Assert.Contains(correlationKey, transaction.SetCookie[0]);
transaction.SetCookie[1].ShouldContain(".AspNet." + TestExtensions.CookieAuthenticationScheme); Assert.Contains(".AspNet." + TestExtensions.CookieAuthenticationScheme, transaction.SetCookie[1]);
var authCookie = transaction.AuthenticationCookieValue; var authCookie = transaction.AuthenticationCookieValue;
transaction = await server.SendAsync("https://example.com/me", authCookie); transaction = await server.SendAsync("https://example.com/me", authCookie);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
transaction.FindClaimValue("RefreshToken").ShouldBe("Test Refresh Token"); Assert.Equal("Test Refresh Token", transaction.FindClaimValue("RefreshToken"));
} }
private static TestServer CreateServer(Action<MicrosoftAccountOptions> configureOptions) private static TestServer CreateServer(Action<MicrosoftAccountOptions> configureOptions)

View File

@ -20,7 +20,6 @@ using Microsoft.Framework.OptionsModel;
using Microsoft.Framework.WebEncoders; using Microsoft.Framework.WebEncoders;
using Microsoft.IdentityModel.Protocols.OpenIdConnect; using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using Moq; using Moq;
using Shouldly;
using Xunit; using Xunit;
namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
@ -41,20 +40,20 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
public void LoggingLevel() public void LoggingLevel()
{ {
var logger = new InMemoryLogger(LogLevel.Debug); var logger = new InMemoryLogger(LogLevel.Debug);
logger.IsEnabled(LogLevel.Critical).ShouldBe<bool>(true); Assert.True(logger.IsEnabled(LogLevel.Critical));
logger.IsEnabled(LogLevel.Debug).ShouldBe<bool>(true); Assert.True(logger.IsEnabled(LogLevel.Debug));
logger.IsEnabled(LogLevel.Error).ShouldBe<bool>(true); Assert.True(logger.IsEnabled(LogLevel.Error));
logger.IsEnabled(LogLevel.Information).ShouldBe<bool>(true); Assert.True(logger.IsEnabled(LogLevel.Information));
logger.IsEnabled(LogLevel.Verbose).ShouldBe<bool>(true); Assert.True(logger.IsEnabled(LogLevel.Verbose));
logger.IsEnabled(LogLevel.Warning).ShouldBe<bool>(true); Assert.True(logger.IsEnabled(LogLevel.Warning));
logger = new InMemoryLogger(LogLevel.Critical); logger = new InMemoryLogger(LogLevel.Critical);
logger.IsEnabled(LogLevel.Critical).ShouldBe<bool>(true); Assert.True(logger.IsEnabled(LogLevel.Critical));
logger.IsEnabled(LogLevel.Debug).ShouldBe<bool>(false); Assert.False(logger.IsEnabled(LogLevel.Debug));
logger.IsEnabled(LogLevel.Error).ShouldBe<bool>(false); Assert.False(logger.IsEnabled(LogLevel.Error));
logger.IsEnabled(LogLevel.Information).ShouldBe<bool>(false); Assert.False(logger.IsEnabled(LogLevel.Information));
logger.IsEnabled(LogLevel.Verbose).ShouldBe<bool>(false); Assert.False(logger.IsEnabled(LogLevel.Verbose));
logger.IsEnabled(LogLevel.Warning).ShouldBe<bool>(false); Assert.False(logger.IsEnabled(LogLevel.Warning));
} }
[Theory, MemberData("AuthenticateCoreStateDataSet")] [Theory, MemberData("AuthenticateCoreStateDataSet")]

View File

@ -20,7 +20,6 @@ using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.WebEncoders; using Microsoft.Framework.WebEncoders;
using Microsoft.IdentityModel.Protocols.OpenIdConnect; using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using Moq; using Moq;
using Shouldly;
using Xunit; using Xunit;
namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
@ -51,9 +50,9 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
options.AuthenticationMethod = OpenIdConnectRedirectBehavior.FormPost; options.AuthenticationMethod = OpenIdConnectRedirectBehavior.FormPost;
}); });
var transaction = await SendAsync(server, DefaultHost + Challenge); var transaction = await SendAsync(server, DefaultHost + Challenge);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
transaction.Response.Content.Headers.ContentType.MediaType.ShouldBe("text/html"); Assert.Equal("text/html", transaction.Response.Content.Headers.ContentType.MediaType);
transaction.ResponseText.ShouldContain("form"); Assert.Contains("form", transaction.ResponseText);
} }
[Fact] [Fact]
@ -68,7 +67,7 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
}); });
var transaction = await SendAsync(server, DefaultHost + Challenge); var transaction = await SendAsync(server, DefaultHost + Challenge);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters()); queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters());
} }
@ -84,12 +83,12 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
var transaction = await SendAsync(server, DefaultHost + Challenge); var transaction = await SendAsync(server, DefaultHost + Challenge);
var firstCookie = transaction.SetCookie.First(); var firstCookie = transaction.SetCookie.First();
firstCookie.ShouldContain(OpenIdConnectDefaults.CookieNoncePrefix); Assert.Contains(OpenIdConnectDefaults.CookieNoncePrefix, firstCookie);
firstCookie.ShouldContain("Expires"); Assert.Contains("expires", firstCookie);
var secondCookie = transaction.SetCookie.Skip(1).First(); var secondCookie = transaction.SetCookie.Skip(1).First();
secondCookie.ShouldContain(OpenIdConnectDefaults.CookieStatePrefix); Assert.Contains(OpenIdConnectDefaults.CookieStatePrefix, secondCookie);
secondCookie.ShouldContain("Expires"); Assert.Contains("expires", secondCookie);
} }
[Fact] [Fact]
@ -102,7 +101,7 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
}); });
var transaction = await SendAsync(server, DefaultHost + Challenge); var transaction = await SendAsync(server, DefaultHost + Challenge);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters()); queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters());
} }
@ -127,7 +126,7 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
}; };
var server = CreateServer(SetProtocolMessageOptions); var server = CreateServer(SetProtocolMessageOptions);
var transaction = await SendAsync(server, DefaultHost + challenge); var transaction = await SendAsync(server, DefaultHost + challenge);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, new string[] {}); queryValues.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, new string[] {});
} }
@ -181,7 +180,7 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
}, null, properties); }, null, properties);
var transaction = await SendAsync(server, DefaultHost + challenge); var transaction = await SendAsync(server, DefaultHost + challenge);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
if (challenge != ChallengeWithProperties) if (challenge != ChallengeWithProperties)
{ {
@ -234,7 +233,7 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
}); });
var transaction = await SendAsync(server, DefaultHost + Challenge); var transaction = await SendAsync(server, DefaultHost + Challenge);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
queryValuesSetInEvent.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters()); queryValuesSetInEvent.CheckValues(transaction.Response.Headers.Location.AbsoluteUri, DefaultParameters());
} }
@ -301,8 +300,8 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
}); });
var transaction = await SendAsync(server, DefaultHost + Signout); var transaction = await SendAsync(server, DefaultHost + Signout);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.Response.Headers.Location.AbsoluteUri.ShouldBe(configuration.EndSessionEndpoint); Assert.Equal(configuration.EndSessionEndpoint, transaction.Response.Headers.Location.AbsoluteUri);
} }
[Fact] [Fact]
@ -318,8 +317,8 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
}); });
var transaction = await SendAsync(server, DefaultHost + Signout); var transaction = await SendAsync(server, DefaultHost + Signout);
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.Response.Headers.Location.AbsoluteUri.ShouldContain(UrlEncoder.Default.UrlEncode("https://example.com/logout")); Assert.Contains(UrlEncoder.Default.UrlEncode("https://example.com/logout"), transaction.Response.Headers.Location.AbsoluteUri);
} }
[Fact] [Fact]
@ -335,8 +334,8 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
}); });
var transaction = await SendAsync(server, "https://example.com/signout_with_specific_redirect_uri"); var transaction = await SendAsync(server, "https://example.com/signout_with_specific_redirect_uri");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
transaction.Response.Headers.Location.AbsoluteUri.ShouldContain(UrlEncoder.Default.UrlEncode("http://www.example.com/specific_redirect_uri")); Assert.Contains(UrlEncoder.Default.UrlEncode("http://www.example.com/specific_redirect_uri"), transaction.Response.Headers.Location.AbsoluteUri);
} }
private static TestServer CreateServer(Action<OpenIdConnectOptions> configureOptions, Func<HttpContext, Task> handler = null, AuthenticationProperties properties = null) private static TestServer CreateServer(Action<OpenIdConnectOptions> configureOptions, Func<HttpContext, Task> handler = null, AuthenticationProperties properties = null)
@ -466,21 +465,21 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
{ {
DateTime utcNow = DateTime.UtcNow; DateTime utcNow = DateTime.UtcNow;
GetNonceExpirationTime(noncePrefix + DateTime.MaxValue.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter, TimeSpan.FromHours(1)).ShouldBe(DateTime.MaxValue); Assert.Equal(DateTime.MaxValue, GetNonceExpirationTime(noncePrefix + DateTime.MaxValue.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter, TimeSpan.FromHours(1)));
GetNonceExpirationTime(noncePrefix + DateTime.MinValue.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter, TimeSpan.FromHours(1)).ShouldBe(DateTime.MinValue + TimeSpan.FromHours(1)); Assert.Equal(DateTime.MinValue + TimeSpan.FromHours(1), GetNonceExpirationTime(noncePrefix + DateTime.MinValue.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter, TimeSpan.FromHours(1)));
GetNonceExpirationTime(noncePrefix + utcNow.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter, TimeSpan.FromHours(1)).ShouldBe(utcNow + TimeSpan.FromHours(1)); Assert.Equal(utcNow + TimeSpan.FromHours(1), GetNonceExpirationTime(noncePrefix + utcNow.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter, TimeSpan.FromHours(1)));
GetNonceExpirationTime(noncePrefix, TimeSpan.FromHours(1)).ShouldBe(DateTime.MinValue); Assert.Equal(DateTime.MinValue, GetNonceExpirationTime(noncePrefix, TimeSpan.FromHours(1)));
GetNonceExpirationTime("", TimeSpan.FromHours(1)).ShouldBe(DateTime.MinValue); Assert.Equal(DateTime.MinValue, GetNonceExpirationTime("", TimeSpan.FromHours(1)));
GetNonceExpirationTime(noncePrefix + noncePrefix, TimeSpan.FromHours(1)).ShouldBe(DateTime.MinValue); Assert.Equal(DateTime.MinValue, GetNonceExpirationTime(noncePrefix + noncePrefix, TimeSpan.FromHours(1)));
GetNonceExpirationTime(noncePrefix + utcNow.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter + utcNow.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter, TimeSpan.FromHours(1)).ShouldBe(utcNow + TimeSpan.FromHours(1)); Assert.Equal(utcNow + TimeSpan.FromHours(1), GetNonceExpirationTime(noncePrefix + utcNow.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter + utcNow.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter, TimeSpan.FromHours(1)));
GetNonceExpirationTime(utcNow.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter + utcNow.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter, TimeSpan.FromHours(1)).ShouldBe(DateTime.MinValue); Assert.Equal(DateTime.MinValue, GetNonceExpirationTime(utcNow.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter + utcNow.Ticks.ToString(CultureInfo.InvariantCulture) + nonceDelimiter, TimeSpan.FromHours(1)));
} }
private static DateTime GetNonceExpirationTime(string keyname, TimeSpan nonceLifetime) private static DateTime GetNonceExpirationTime(string keyname, TimeSpan nonceLifetime)

View File

@ -10,7 +10,6 @@ using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Shouldly;
using Xunit; using Xunit;
namespace Microsoft.AspNet.Authentication.Twitter namespace Microsoft.AspNet.Authentication.Twitter
@ -57,9 +56,9 @@ namespace Microsoft.AspNet.Authentication.Twitter
return true; return true;
}); });
var transaction = await server.SendAsync("http://example.com/challenge"); var transaction = await server.SendAsync("http://example.com/challenge");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var query = transaction.Response.Headers.Location.Query; var query = transaction.Response.Headers.Location.Query;
query.ShouldContain("custom=test"); Assert.Contains("custom=test", query);
} }
[Fact] [Fact]
@ -71,7 +70,7 @@ namespace Microsoft.AspNet.Authentication.Twitter
options.ConsumerSecret = "Test Consumer Secret"; options.ConsumerSecret = "Test Consumer Secret";
}); });
var transaction = await server.SendAsync("https://example.com/signIn"); var transaction = await server.SendAsync("https://example.com/signIn");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
[Fact] [Fact]
@ -83,7 +82,7 @@ namespace Microsoft.AspNet.Authentication.Twitter
options.ConsumerSecret = "Test Consumer Secret"; options.ConsumerSecret = "Test Consumer Secret";
}); });
var transaction = await server.SendAsync("https://example.com/signOut"); var transaction = await server.SendAsync("https://example.com/signOut");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
[Fact] [Fact]
@ -95,7 +94,7 @@ namespace Microsoft.AspNet.Authentication.Twitter
options.ConsumerSecret = "Test Consumer Secret"; options.ConsumerSecret = "Test Consumer Secret";
}); });
var transaction = await server.SendAsync("https://example.com/signOut"); var transaction = await server.SendAsync("https://example.com/signOut");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.OK); Assert.Equal(HttpStatusCode.OK, transaction.Response.StatusCode);
} }
@ -131,9 +130,9 @@ namespace Microsoft.AspNet.Authentication.Twitter
return true; return true;
}); });
var transaction = await server.SendAsync("http://example.com/challenge"); var transaction = await server.SendAsync("http://example.com/challenge");
transaction.Response.StatusCode.ShouldBe(HttpStatusCode.Redirect); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode);
var location = transaction.Response.Headers.Location.AbsoluteUri; var location = transaction.Response.Headers.Location.AbsoluteUri;
location.ShouldContain("https://twitter.com/oauth/authenticate?oauth_token="); Assert.Contains("https://twitter.com/oauth/authenticate?oauth_token=", location);
} }
private static TestServer CreateServer(Action<TwitterOptions> configure, Func<HttpContext, bool> handler = null) private static TestServer CreateServer(Action<TwitterOptions> configure, Func<HttpContext, bool> handler = null)

View File

@ -1,28 +1,25 @@
{ {
"compilationOptions": { "compilationOptions": {
"warningsAsErrors": true "warningsAsErrors": true
}, },
"dependencies": { "dependencies": {
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-*", "Microsoft.AspNet.Authentication.Cookies": "1.0.0-*",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-*", "Microsoft.AspNet.Authentication.Facebook": "1.0.0-*",
"Microsoft.AspNet.Authentication.Google": "1.0.0-*", "Microsoft.AspNet.Authentication.Google": "1.0.0-*",
"Microsoft.AspNet.Authentication.JwtBearer": "1.0.0-*", "Microsoft.AspNet.Authentication.JwtBearer": "1.0.0-*",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-*", "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-*",
"Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-*", "Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-*",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-*", "Microsoft.AspNet.Authentication.Twitter": "1.0.0-*",
"Microsoft.AspNet.DataProtection": "1.0.0-*", "Microsoft.AspNet.DataProtection": "1.0.0-*",
"Microsoft.AspNet.TestHost": "1.0.0-*", "Microsoft.AspNet.TestHost": "1.0.0-*",
"Moq": "4.2.1312.1622", "Moq": "4.2.1312.1622",
"xunit.runner.aspnet": "2.0.0-aspnet-*" "xunit.runner.aspnet": "2.0.0-aspnet-*"
}, },
"commands": { "commands": {
"test": "xunit.runner.aspnet" "test": "xunit.runner.aspnet"
}, },
"frameworks": { "frameworks": {
"dnx451": { "dnx451": {
"dependencies": {
"Shouldly": "1.1.1.1"
}
}
} }
}
} }