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); }