stuntman
1.0.0
“有時,在派出真正的、毫無戒心的用戶之前,你需要一個特技演員!”
包裹 | 版本 |
---|---|
RimDev. 替身演員 |
Stuntman是一個在開發過程中利用 .NET Claims Identity 模擬使用者的函式庫。主要用於 Web 環境,例如 ASP.NET MVC、ASP.NET Web 窗體和提供 HTML 服務的 OWIN 應用程式。這使您可以以最小的摩擦測試應用程式中存在的不同使用者場景。它還允許您透過原始碼控制與其他團隊成員共享這些場景。
安裝 RimDev.Stuntman NuGet 套件。
PM> Install-Package RimDev.Stuntman
Stuntman 使用 OWIN 並註冊為中間件,並允許以聲明身分的形式以程式設計方式預設使用者場景。您或使用相同程式碼庫的其他團隊成員可以使用這些預設。
// 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
程式碼,您可以建構一個 HTTP 請求來利用使用者 2 的存取權杖:
> 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 "
}
]
}
有想法嗎?我們來一個問題來談談吧!
發現錯誤?打開問題或提交拉取請求!
麻省理工學院許可證