"의심하지 않는 실제 사용자를 보내기 전에 스턴트맨이 필요할 때가 있습니다!"
패키지 | 버전 |
---|---|
RimDev.스턴트맨 |
Stuntman 은 .NET 클레임 ID를 활용하여 개발 중에 사용자를 가장하기 위한 라이브러리입니다. ASP.NET MVC, ASP.NET Web Forms 및 HTML을 제공하는 OWIN 애플리케이션과 같은 웹 환경에서 주로 사용됩니다. 이를 통해 최소한의 마찰로 애플리케이션에 존재하는 다양한 사용자 시나리오를 테스트할 수 있습니다. 또한 소스 제어를 통해 다른 팀 구성원과 이러한 시나리오를 공유할 수도 있습니다.
RimDev.Stuntman NuGet 패키지를 설치합니다.
PM> Install-Package RimDev.Stuntman
Stuntman은 OWIN을 사용하고 미들웨어로 등록되며 클레임 ID 형식으로 프로그래밍 방식으로 미리 설정된 사용자 시나리오를 허용합니다. 이러한 사전 설정은 귀하 또는 동일한 코드 기반으로 작업하는 다른 팀 구성원이 활용할 수 있습니다.
// OWIN Startup class
public class Startup
{
public static readonly StuntmanOptions StuntmanOptions = new StuntmanOptions ( ) ;
public void Configuration ( IAppBuilder app )
{
StuntmanOptions
. AddUser ( new StuntmanUser ( "user-1" , "User 1" )
. AddClaim ( "given_name" , "John" )
. AddClaim ( "family_name" , "Doe" ) ) ;
// Optionally assign a user an access token.
StuntmanOptions
. AddUser ( new StuntmanUser ( "user-2" , "User 2" )
. SetAccessToken ( "123" )
. AddClaim ( "given_name" , "Mary" )
. AddClaim ( "family_name" , "Smith" ) ) ;
// You can also add users using HTTP/HTTPS or the file system!
StuntmanOptions
. AddUsersFromJson ( "https://example.com/web-test-users.json" )
. AddUsersFromJson ( @"C:local-test-users.json" ) ;
// Optional alignment of user picker
// Supported options are:
// - StuntmanAlignment.Left (default)
// - StuntmanAlignment.Center
// - StuntmanAlignment.Right
StuntmanOptions . SetUserPickerAlignment ( StuntmanAlignment . Right ) ;
// Only show when debug is true in Web.config.
if ( System . Web . HttpContext . Current . IsDebuggingEnabled )
{
app . UseStuntman ( StuntmanOptions ) ;
}
}
}
// ASP.NET Core
public class Startup
{
public static readonly StuntmanOptions StuntmanOptions = new StuntmanOptions ( ) ;
public Startup ( IConfiguration configuration )
{
StuntmanOptions
. AddUser ( new StuntmanUser ( "user-1" , "User 1" )
. AddClaim ( "given_name" , "John" )
. AddClaim ( "family_name" , "Doe" ) ) ;
Configuration = configuration ;
}
public IConfiguration Configuration { get ; }
public void ConfigureServices ( IServiceCollection services )
{
services . AddStuntman ( StuntmanOptions ) ;
}
public void Configure ( IApplicationBuilder app , IHostingEnvironment env )
{
app . UseStuntman ( StuntmanOptions ) ;
}
}
Razor 뷰에서 Stuntman을 사용하여 사용자 선택기를 표시하는 방법은 다음과 같습니다 (애플리케이션 Startup
클래스에 사용할 수 있는 StuntmanOptions
가 있다고 가정) .
@* Only show when debug is true in Web.config. *@
@if (System.Web.HttpContext.Current.IsDebuggingEnabled)
{
@Html.Raw(YourApplicationNamespace.Startup.StuntmanOptions.UserPicker(User));
}
Stuntman은 사용자의 액세스 토큰( StuntmanUser.SetAccessToken
)을 기반으로 베어러 토큰을 지원합니다. 값에는 특별한 내용이 없으며 추가 인코딩/디코딩이 필요하지 않습니다. 인증에 성공하면 값이 클레임으로 추가됩니다. 이전 Startup
코드를 활용하여 사용자 2의 액세스 토큰을 활용하는 HTTP 요청을 구성할 수 있습니다.
> curl -i -H " Authorization: Bearer 123 " http://localhost:54917/secure
HTTP/1.1 200 OK
기본 형식 확인은 다음 값에 대해 수행됩니다.
> curl -i -H " Authorization: Bearer not-real " http://localhost:54917/secure
HTTP/1.1 403 options provided does not include the requested ' not-real ' user.
> curl -i -H " Authorization: Bearer abc 123 " http://localhost:54917/secure
HTTP/1.1 400 Authorization header is not in correct format.
다음 중 하나 이상을 사용하여 원격 위치에서 사용자를 채울 수 있습니다.
StuntmanOptions . AddUsersFromJson ( "C: \ path \ to \ users.json" ) ;
StuntmanOptions . AddUsersFromJson ( "https://example.com/users.json" ) ;
//
// On the server
//
StuntmanOptions . EnableServer ( ) ;
//
// On the client
//
StuntmanOptions . AddConfigurationFromServer ( "https://some-stuntman-enabled-app.example.com/" ) ;
// or, if you prefer to not throw an exception
// and have the users silently not added
// if the server is unavailable:
StuntmanOptions . TryAddConfigurationFromServer ( "https://some-stuntman-enabled-app.example.com/" ) ;
StuntmanOptions.AddUsersFromJson(string pathOrUrl)
에서 사용할 수 있는 사용자 JSON의 예는 다음과 같습니다.
{
"Users" : [
{
"Id" : " user-1 " ,
"Name" : " User 1 "
},
{
"Id" : " user-2 " ,
"Name" : " User 2 "
}
]
}
아이디어가 있나요? 이슈에서 이야기해보겠습니다!
버그를 찾으셨나요? 이슈를 열거나 끌어오기 요청을 제출하세요!
MIT 라이센스