「疑うことを知らない実際のユーザーを送り込む前に、スタントマンが必要な場合があります。」
パッケージ | バージョン |
---|---|
リム開発スタントマン |
Stuntman は、 .NET Claims Identity を利用して開発中にユーザーを偽装するためのライブラリです。主に、HTML を提供する ASP.NET MVC、ASP.NET Web フォーム、OWIN アプリケーションなどの Web 環境で使用されます。これにより、アプリケーションに存在するさまざまなユーザー シナリオを最小限の摩擦でテストできます。また、ソース管理を通じてこれらのシナリオを他のチーム メンバーと共有することもできます。
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.
次の 1 つ以上を使用して、リモートの場所からユーザーを追加できます。
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ライセンス