Ejemplo n.º 1
0
            public async Task AllowsOptionalConfigurationOfUsers()
            {
                const string TestClaim      = "test-claim";
                const string TestClaimValue = "test-claim-value";

                var json = string.Empty;

                var stuntmanOptions = new StuntmanOptions()
                                      .AddUser(new StuntmanUser("user-1", "Test Name 1"))
                                      .AddUser(new StuntmanUser("user-2", "Test Name 2"));

                using (var server = TestServer.Create(app =>
                {
                    stuntmanOptions.EnableServer();

                    app.UseStuntman(stuntmanOptions);
                }))
                {
                    var response = await server.HttpClient.GetAsync(stuntmanOptions.ServerUri);

                    json = await response.Content.ReadAsStringAsync();
                }

                var options = new StuntmanOptions(
                    stuntmanOptionsRetriever:
                    new TestStuntmanOptionsRetriever(localFileStringToReturn: json))
                              .AddUsersFromJson(
                    "C:\\test.json",
                    user => user.Claims.Add(new Claim(TestClaim, TestClaimValue)));

                Assert.True(options.Users.Any());
                Assert.True(options.Users.All(
                                x => x.Claims.Count(y => y.Type == TestClaim && y.Value == TestClaimValue) == 1));
            }
Ejemplo n.º 2
0
 public Startup()
 {
     StuntmanOptions
     .EnableServer()
     .AddUser(new StuntmanUser("user-1", "User 1")
              .SetAccessToken("user-1-token")
              .SetDescription("This is User 1.")
              .AddClaim("given_name", "John")
              .AddClaim("family_name", "Doe"))
     .AddUser(new StuntmanUser("user-2", "User 2")
              .AddClaim("given_name", "Jane")
              .AddClaim("family_name", "Doe"))
     .AddUser(new StuntmanUser("user-3", "User 3")
              .AddClaim("given_name", "Sam")
              .AddClaim("family_name", "Smith"))
     //.AddUsersFromJson("https://raw.githubusercontent.com/ritterim/stuntman/master/samples/UsageSample.AspNetCore/test-server-response-1.json")
     .AddUsersFromJson(Path.Combine(GetBinPath(), "test-server-response-2.json"));
 }
Ejemplo n.º 3
0
            public async Task AddsUsersFromWebClientRequest()
            {
                const string Id1   = "user-1";
                const string Name1 = "Test Name 1";

                const string Id2   = "user-2";
                const string Name2 = "Test Name 2";

                var json = string.Empty;

                var stuntmanOptions = new StuntmanOptions()
                                      .AddUser(new StuntmanUser(Id1, Name1))
                                      .AddUser(new StuntmanUser(Id2, Name2));

                using (var server = TestServer.Create(app =>
                {
                    stuntmanOptions.EnableServer();

                    app.UseStuntman(stuntmanOptions);
                }))
                {
                    var response = await server.HttpClient.GetAsync(stuntmanOptions.ServerUri);

                    json = await response.Content.ReadAsStringAsync();
                }

                var options = new StuntmanOptions(
                    stuntmanOptionsRetriever:
                    new TestStuntmanOptionsRetriever(webClientStringToReturn: json))
                              .AddUsersFromJson("https://example.com");

                Assert.Equal(2, options.Users.Count);

                Assert.NotNull(options.Users.SingleOrDefault(x => x.Id == Id1));
                Assert.NotNull(options.Users.SingleOrDefault(x => x.Name == Name1));

                Assert.NotNull(options.Users.SingleOrDefault(x => x.Id == Id2));
                Assert.NotNull(options.Users.SingleOrDefault(x => x.Name == Name2));
            }
Ejemplo n.º 4
0
            public async Task AddsUserClaims()
            {
                const string ClaimType  = "TestClaim";
                const string ClaimValue = "TestClaimValue";

                var json = string.Empty;

                var stuntmanOptions = new StuntmanOptions()
                                      .AddUser(new StuntmanUser("user-1", "Test Name 1")
                                               .AddClaim(ClaimType, ClaimValue))
                                      .AddUser(new StuntmanUser("user-2", "Test Name 2"));

                using (var server = TestServer.Create(app =>
                {
                    stuntmanOptions.EnableServer();

                    app.UseStuntman(stuntmanOptions);
                }))
                {
                    var response = await server.HttpClient.GetAsync(stuntmanOptions.ServerUri);

                    json = await response.Content.ReadAsStringAsync();
                }

                var options = new StuntmanOptions(
                    stuntmanOptionsRetriever:
                    new TestStuntmanOptionsRetriever(localFileStringToReturn: json))
                              .AddUsersFromJson("C:\\test.json");

                var user1 = options.Users.SingleOrDefault(x => x.Claims.Any());

                Assert.NotNull(user1);

                var testClaim = user1.Claims.Single();

                Assert.Equal(ClaimType, testClaim.Type);
                Assert.Equal(ClaimValue, testClaim.Value);
            }
Ejemplo n.º 5
0
        public void Configuration(IAppBuilder app)
        {
            StuntmanOptions
            .EnableServer()
            .AddUser(new StuntmanUser("user-1", "User 1")
                     .SetAccessToken("user-1-token")
                     .SetDescription("This is User 1.")
                     .AddClaim("given_name", "John")
                     .AddClaim("family_name", "Doe"))
            .AddUser(new StuntmanUser("user-2", "User 2")
                     .AddClaim("given_name", "Jane")
                     .AddClaim("family_name", "Doe"))
            .AddUser(new StuntmanUser("user-3", "User 3")
                     .AddClaim("given_name", "Sam")
                     .AddClaim("family_name", "Smith"))
            //.AddUsersFromJson("https://raw.githubusercontent.com/ritterim/stuntman/master/samples/UsageSample.AspNetCore/test-server-response-1.json")
            .AddUsersFromJson(Path.Combine(GetBinPath(), "test-server-response-2.json"));

            app.UseStuntman(StuntmanOptions);

            app.Map("/secure", secure =>
            {
                AuthenticateAllRequests(secure, new[] { "StuntmanAuthentication" });

                secure.Run(context =>
                {
                    var userName = context.Request.User.Identity.Name;

                    if (string.IsNullOrEmpty(userName))
                    {
                        userName = "******";
                    }

                    context.Response.ContentType = "text/html";
                    context.Response.WriteAsync(
                        $"Hello, {userName}. This is the /secure endpoint.");

                    context.Response.WriteAsync(
                        StuntmanOptions.UserPicker(context.Request.User));

                    return(Task.FromResult(true));
                });
            });

            app.Map("/secure-json", secure =>
            {
                AuthenticateAllRequests(secure, new[] { "StuntmanAuthentication" });

                secure.Run(context =>
                {
                    var userName = context.Request.User.Identity.Name;

                    if (string.IsNullOrEmpty(userName))
                    {
                        userName = "******";
                    }

                    context.Response.ContentType = "application/json";
                    context.Response.WriteAsync(
                        $@"{{""message"":""Hello, {userName}. This is the /secure-json endpoint.""}}");

                    return(Task.FromResult(true));
                });
            });

            app.Map("/logout", logout =>
            {
                logout.Run(context =>
                {
                    context.Authentication.SignOut();
                    return(Task.FromResult(true));
                });
            });

            app.Map("", nonSecure =>
            {
                nonSecure.Run(context =>
                {
                    var userName = context.Request.User?.Identity.Name;

                    if (string.IsNullOrEmpty(userName))
                    {
                        userName = "******";
                    }

                    context.Response.ContentType = "text/html";

                    context.Response.WriteAsync(
                        @"<!DOCTYPE html>
<html>
    <head>
        <meta charset=""utf-8"">
        <title>Stuntman - UsageSample</title>
    </head>
<body>");

                    context.Response.WriteAsync(
                        $@"Hello, {userName}. <a href=""/secure"">Secure page</a>");


                    context.Response.WriteAsync(
                        StuntmanOptions.UserPicker(context.Request.User ?? new ClaimsPrincipal()));

                    context.Response.WriteAsync(
                        @"</body>
</html>");

                    return(Task.FromResult(true));
                });
            });
        }