From 27a55a1cc4588d8f0f63c0d958bd6f9699dd816b Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 30 Jul 2025 15:52:01 +0100 Subject: [PATCH] testing --- test/yavscTests/Mandatory/Remoting.cs | 90 +++++++++++++++++---------- test/yavscTests/WebServerFixture.cs | 32 ++++++++-- test/yavscTests/yavscTests.csproj | 7 ++- 3 files changed, 87 insertions(+), 42 deletions(-) diff --git a/test/yavscTests/Mandatory/Remoting.cs b/test/yavscTests/Mandatory/Remoting.cs index d2d18c36..02a48c0e 100644 --- a/test/yavscTests/Mandatory/Remoting.cs +++ b/test/yavscTests/Mandatory/Remoting.cs @@ -1,11 +1,6 @@ -// // YavscWorkInProgress.cs -// /* -// paul 21/06/2018 10:11 20182018 6 21 -// */ -using System.Net; -using isnd.tests; -using Xunit; +using isnd.tests; using Xunit.Abstractions; +using IdentityModel.Client; namespace yavscTests { @@ -27,45 +22,72 @@ namespace yavscTests string password ) { - try + + } + + [Fact] + public async Task ObtainServiceToken() + { + var serverUrl = _serverFixture.Addresses.FirstOrDefault( + u => u.StartsWith("https:") + ); + + String authority = _serverFixture.SiteSettings.Authority; + var client = new HttpClient(); + var disco = await client.GetDiscoveryDocumentAsync(authority); + if (disco.IsError) throw new Exception(disco.Error); + + var response = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest { - var serverUrl = _serverFixture.Addresses.FirstOrDefault( - u => u.StartsWith("https:") - ); + Address = disco.TokenEndpoint, - String auth = _serverFixture.SiteSettings.Authority; + ClientId = "m2m.client", // _serverFixture.TestClientId, + ClientSecret = "511536EF-F270-4058-80CA-1C89C192F69A" //_serverFixture.TestClientSecret, + }); +/*"mvc"; + options.ClientSecret = "49C1A7E1-0C79-4A89-A3D6-A37998FB86B0";*/ + if (response.IsError) throw new Exception(response.Error); - + } - var query = new Dictionary + [Fact] + public async Task ObtainResourceOwnerPasswordToken() + { + var serverUrl = _serverFixture.Addresses.FirstOrDefault( + u => u.StartsWith("https:") + ); + + String authority = _serverFixture.SiteSettings.Authority; + var client = new HttpClient(); + var disco = await client.GetDiscoveryDocumentAsync(authority); + if (disco.IsError) throw new Exception(disco.Error); + + var response = await client.RequestPasswordTokenAsync(new PasswordTokenRequest + { + Address = disco.TokenEndpoint, + + ClientId = "m2m.client", + ClientSecret = "511536EF-F270-4058-80CA-1C89C192F69A", + + UserName = _serverFixture.TestingUserName, + Password = _serverFixture.TestingUserPassword, + + Scope = "scope1", + + Parameters = { - ["Username"] = userName, - ["Password"] = password, - ["GrantType"] = "password" - }; + { "acr_values", "tenant:custom_account_store1 foo bar quux" } + } + }); - throw new NotImplementedException(); + if (response.IsError) throw new Exception(response.Error); - } - catch (Exception ex) - { - var webex = ex as WebException; - if (webex != null) - { - if (webex.Status == WebExceptionStatus.ProtocolError) - { - - } - - } - throw; - } } public static IEnumerable GetLoginIntentData() { return new object[][] { new object[] { "testuser", "test" } }; } - + } } diff --git a/test/yavscTests/WebServerFixture.cs b/test/yavscTests/WebServerFixture.cs index 1915c183..8c86b97b 100644 --- a/test/yavscTests/WebServerFixture.cs +++ b/test/yavscTests/WebServerFixture.cs @@ -18,6 +18,9 @@ using Yavsc.Extensions; using Microsoft.EntityFrameworkCore; using Microsoft.AspNetCore.Mvc.ModelBinding.Binders; using Yavsc.Models.Auth; +using Serilog; +using Serilog.Events; +using Serilog.Sinks.SystemConsole.Themes; namespace isnd.tests { @@ -37,6 +40,8 @@ namespace isnd.tests public IServiceProvider Services { get; private set; } public string TestingUserName { get; private set; } + public string TestingUserPassword { get; private set; } + public string ProtectedTestingApiKey { get; internal set; } public ApplicationUser TestingUser { get; private set; } public bool DbCreated { get; internal set; } @@ -54,11 +59,27 @@ namespace isnd.tests if (app!=null) app.StopAsync().Wait(); } - + void ConfigureLogger() => Log.Logger = new LoggerConfiguration() + .MinimumLevel.Debug() + .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) + .MinimumLevel.Override("Microsoft.Hosting.Lifetime", LogEventLevel.Information) + .MinimumLevel.Override("System", LogEventLevel.Warning) + .MinimumLevel.Override("Microsoft.AspNetCore.Authentication", LogEventLevel.Information) + .Enrich.FromLogContext() + // uncomment to write to Azure diagnostics stream + //.WriteTo.File( + // @"D:\home\LogFiles\Application\identityserver.txt", + // fileSizeLimitBytes: 1_000_000, + // rollOnFileSizeLimit: true, + // shared: true, + // flushToDiskInterval: TimeSpan.FromSeconds(1)) + .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Code) + .CreateLogger(); public async Task SetupHost() { - var builder = WebApplication.CreateBuilder(); + var builder = WebApplication.CreateBuilder(); + ConfigureLogger(); Configuration = builder.Configuration .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json", optional: true) @@ -98,9 +119,10 @@ namespace isnd.tests dbContext.Database.Migrate(); TestingUserName = "Tester"; + TestingUserPassword = "test"; TestClientId = "testClientId"; TestingUser = await dbContext.Users.FirstOrDefaultAsync(u => u.UserName == TestingUserName); - EnsureUser(TestingUserName); + EnsureUser(TestingUserName, TestingUserPassword); // ensure a client var testClient = await dbContext.Client.FirstOrDefaultAsync((c) => c.Id == TestClientId); if (testClient == null) @@ -129,7 +151,7 @@ namespace isnd.tests } } - public void EnsureUser(string testingUserName) + public void EnsureUser(string testingUserName, string password) { if (TestingUser == null) { @@ -145,7 +167,7 @@ namespace isnd.tests EmailConfirmed = true }; - var result = userManager.CreateAsync(TestingUser,"test").Result; + var result = userManager.CreateAsync(TestingUser,password).Result; Assert.True(result.Succeeded); diff --git a/test/yavscTests/yavscTests.csproj b/test/yavscTests/yavscTests.csproj index 2112c261..a99fe336 100644 --- a/test/yavscTests/yavscTests.csproj +++ b/test/yavscTests/yavscTests.csproj @@ -12,15 +12,16 @@ all + - - + + @@ -30,4 +31,4 @@ - \ No newline at end of file +