public async Task StateShouldBePassedBack() { var server = new OAuth2TestServer(s => { s.OnAuthorizeEndpoint = SignInEpsilon; }); OAuth2TestServer.Transaction transaction1 = await server.SendAsync("https://example.com/authorize?response_type=token&client_id=alpha&state=123"); NameValueCollection fragment = transaction1.ParseRedirectFragment(); fragment.Get("access_token").ShouldNotBe(null); fragment.Get("state").ShouldBe("123"); }
public async Task ShouldRedirectWithParametersInFragment() { var server = new OAuth2TestServer(s => { s.OnAuthorizeEndpoint = SignInEpsilon; }); OAuth2TestServer.Transaction transaction1 = await server.SendAsync("https://example.com/authorize?response_type=token&client_id=alpha&redirect_uri=" + Uri.EscapeDataString("https://gamma.com/return")); NameValueCollection fragment = transaction1.ParseRedirectFragment(); fragment.Get("access_token").ShouldNotBe(null); fragment.Get("expires_in").ShouldNotBe(null); }
public async Task UnrecognizedParametersAreIgnored() { var server = new OAuth2TestServer(s => { s.OnAuthorizeEndpoint = SignInEpsilon; }); OAuth2TestServer.Transaction transaction1 = await server.SendAsync("https://example.com/authorize?alpha=beta&response_type=token&client_id=alpha&redirect_uri=" + Uri.EscapeDataString("https://gamma.com/return")); NameValueCollection fragment = transaction1.ParseRedirectFragment(); string userName = await GetUserName(server, fragment.Get("access_token")); userName.ShouldBe("epsilon"); }
public async Task AccessTokenMayBeUsed() { var server = new OAuth2TestServer(s => { s.OnAuthorizeEndpoint = SignInEpsilon; }); OAuth2TestServer.Transaction transaction1 = await server.SendAsync("https://example.com/authorize?response_type=token&client_id=alpha&redirect_uri=" + Uri.EscapeDataString("https://gamma.com/return")); NameValueCollection fragment = transaction1.ParseRedirectFragment(); string accessToken = fragment.Get("access_token"); OAuth2TestServer.Transaction transaction2 = await server.SendAsync("https://example.com/me", authenticateHeader : new AuthenticationHeaderValue("Bearer", accessToken)); transaction2.Response.StatusCode.ShouldBe(HttpStatusCode.OK); transaction2.ResponseText.ShouldBe("epsilon"); }