Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }