'u kullanan birim sınama kodu OWIN'in web uygulamanızı bellek içinde test etmenizi sağlayan bu harika Microsoft.Owin.Testing
kitaplığına sahip olduğunu öğrendim. Ancak, sitem karmaşık yazma testi koduna sahip kaynaklara erişmeden önce kimlik doğrulaması gerektiriyor.OWIN Cookie Authenthication
Microsoft.Owin.Testing'i kullanırken kimlik doğrulaması yapmak için uygun bir yol var mı?
Ünite testlerimin işlem dışı STS'ye vurmasına gerek duymamayı ve bir bellek içi STS'ye (örn. Thinktecture.IdentityServer.v3) karşı programlı olarak oturum açan kod yazmamayı tercih ederim.).
En kolay çözüm, bir fan olmadığım birim testleri için kimlik doğrulama kodunu devre dışı bırakmaktır.
Çerez Kimlik Doğrulama ile OpenID Bağlantısı kullanıyorum. İşte bir örnek. OpenId Connect için yapılandırma dizelerinin gerçek bir sunucu için doldurulması gerekir.
[Test]
public async void AccessAuthenthicatedResourceTest()
{
const string ClientId = "";
const string RedirectUri = "";
const string Authority = "";
TestServer server = TestServer.Create(
app =>
{
//Configure Open ID Connect With Cookie Authenthication
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = ClientId,
RedirectUri = RedirectUri,
Authority = Authority
});
// Requires Authentication
app.Use(
async (context, next) =>
{
var user = context.Authentication.User;
if (user == null
|| user.Identity == null
|| !user.Identity.IsAuthenticated)
{
context.Authentication.Challenge();
return;
}
await next();
});
app.Run(async context => await context.Response.WriteAsync("My Message"));
});
//Do or Bypass authenthication
HttpResponseMessage message = await server.CreateRequest("/").GetAsync();
Assert.AreEqual("My Message", await message.Content.ReadAsStringAsync());
}