public static void AmazonOptions_Sets_Properties_Correctly() { // Act var actual = new AmazonOptions(); // Assert actual.CallbackPath.ShouldBe(new PathString("/signin-amazon")); actual.AuthorizationEndpoint.ShouldBe(AmazonDefaults.AuthorizationEndpoint); actual.TokenEndpoint.ShouldBe(AmazonDefaults.TokenEndpoint); actual.UserInformationEndpoint.ShouldBe(AmazonDefaults.UserInformationEndpoint); actual.ClaimActions.ShouldNotBeNull(); actual.ClaimActions.Count().ShouldBeGreaterThanOrEqualTo(4); actual.Fields.ShouldNotBeNull(); actual.Fields.Count.ShouldBe(3); actual.Fields.ShouldContain("email"); actual.Fields.ShouldContain("name"); actual.Fields.ShouldContain("user_id"); actual.Scope.ShouldNotBeNull(); actual.Scope.Count.ShouldBeGreaterThanOrEqualTo(2); actual.Scope.ShouldContain("profile"); actual.Scope.ShouldContain("profile:user_id"); }
public static async Task Can_Create_Principal_From_Amazon_User_Endpoint() { // Arrange string accessToken = Guid.NewGuid().ToString(); var data = new { email = "*****@*****.**", name = "Martin Costello", user_id = "my-user-id", }; var options = new AmazonOptions() { ClientId = "amazon-client-id", ClientSecret = "amazon-client-secret", }; var identity = new ClaimsIdentity(); var properties = new AuthenticationProperties(); var tokens = CreateOAuthToken(accessToken); AuthenticationTicket actual; using (var handler = new AmazonHttpMessageHandler(accessToken, data)) { using (var backchannel = new HttpClient(handler, false)) { options.Backchannel = backchannel; AmazonHandler target = await CreateTarget(options); // Act actual = await target.CreateAuthenticationTicketAsync(identity, properties, tokens); } } // Assert actual.ShouldNotBeNull(); actual.AuthenticationScheme.ShouldBe(AmazonDefaults.AuthenticationScheme); actual.Principal.HasClaim(ClaimTypes.Email, data.email).ShouldBeTrue(); actual.Principal.HasClaim(ClaimTypes.Name, data.name).ShouldBeTrue(); actual.Principal.HasClaim(ClaimTypes.NameIdentifier, data.user_id).ShouldBeTrue(); }
private static async Task <AmazonHandler> CreateTarget(AmazonOptions options) { var mock = new Mock <IOptionsMonitor <AmazonOptions> >(); mock.Setup((p) => p.Get("Amazon")) .Returns(options); var loggerFactory = new LoggerFactory(); var urlEncoder = UrlEncoder.Default; var clock = new SystemClock(); var handler = new AmazonHandler(mock.Object, loggerFactory, urlEncoder, clock); var scheme = new AuthenticationScheme("Amazon", "Amazon", handler.GetType()); var context = new DefaultHttpContext(); await handler.InitializeAsync(scheme, context); return(handler); }