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