diff --git a/Shogi.Database/Session/Stored Procedures/ReadAllSessionsMetadata.sql b/Shogi.Database/Session/Stored Procedures/ReadAllSessionsMetadata.sql index 1ffacac..2ff1c70 100644 --- a/Shogi.Database/Session/Stored Procedures/ReadAllSessionsMetadata.sql +++ b/Shogi.Database/Session/Stored Procedures/ReadAllSessionsMetadata.sql @@ -5,8 +5,8 @@ SET NOCOUNT ON; SELECT [Name], - CASE Player2Id - WHEN NULL THEN 1 + CASE + WHEN Player2Id IS NULL THEN 1 ELSE 2 END AS PlayerCount FROM [session].[Session]; diff --git a/Shogi.Sockets/Controllers/SessionController.cs b/Shogi.Sockets/Controllers/SessionController.cs index f66c91b..865041f 100644 --- a/Shogi.Sockets/Controllers/SessionController.cs +++ b/Shogi.Sockets/Controllers/SessionController.cs @@ -150,7 +150,6 @@ public class SessionController : ControllerBase //} [HttpGet] - [AllowAnonymous] public async Task> GetSessions() { var sessions = await this.queryRespository.ReadAllSessionsMetadata(); diff --git a/Shogi.Sockets/Controllers/UserController.cs b/Shogi.Sockets/Controllers/UserController.cs index 4c69499..128dba3 100644 --- a/Shogi.Sockets/Controllers/UserController.cs +++ b/Shogi.Sockets/Controllers/UserController.cs @@ -89,9 +89,8 @@ public class UserController : ControllerBase ); } return Ok(); - - } + [HttpGet("GuestToken")] public IActionResult GetGuestToken() { diff --git a/Tests/AcceptanceTests/AcceptanceTests.cs b/Tests/AcceptanceTests/AcceptanceTests.cs index bcb1961..da27da7 100644 --- a/Tests/AcceptanceTests/AcceptanceTests.cs +++ b/Tests/AcceptanceTests/AcceptanceTests.cs @@ -1,25 +1,36 @@ using Shogi.AcceptanceTests.TestSetup; +using Shogi.Contracts.Api; +using System.Net; +using System.Net.Http.Json; using Xunit.Abstractions; namespace Shogi.AcceptanceTests; -public class AcceptanceTests : IClassFixture +#pragma warning disable xUnit1033 // There is a bug which provides a false positive of xUnit1033. +public class AcceptanceTests : IClassFixture +#pragma warning restore xUnit1033 { - private readonly MsalTestFixture fixture; + private readonly GuestTestFixture fixture; private readonly ITestOutputHelper console; - public AcceptanceTests(MsalTestFixture fixture, ITestOutputHelper console) + public AcceptanceTests(GuestTestFixture fixture, ITestOutputHelper console) { this.fixture = fixture; this.console = console; } + private HttpClient Service => fixture.Service; + [Fact] public async Task CreateAndReadSession() { - var response = await fixture.Service.GetAsync(new Uri("Game", UriKind.Relative)); - console.WriteLine(await response.Content.ReadAsStringAsync()); - console.WriteLine(response.Headers.WwwAuthenticate.ToString()); - response.IsSuccessStatusCode.Should().BeTrue(because: "AAT Client should be authorized."); + var createResponse = await Service.PostAsJsonAsync(new Uri("Session", UriKind.Relative), new CreateSessionCommand { Name = "Acceptance Tests" }); + createResponse.StatusCode.Should().Be(HttpStatusCode.Created); + var yep = await createResponse.Content.ReadAsStringAsync(); + console.WriteLine(yep); + + var readAllResponse = await Service.GetFromJsonAsync(new Uri("Session", UriKind.Relative)); + readAllResponse.Should().NotBeNull(); + readAllResponse!.AllOtherSessions.Should().ContainSingle(session => session.Name == "Acceptance Tests" && session.PlayerCount == 1); } } \ No newline at end of file diff --git a/Tests/AcceptanceTests/AcceptanceTests.csproj b/Tests/AcceptanceTests/AcceptanceTests.csproj index bb4bc9b..caac119 100644 --- a/Tests/AcceptanceTests/AcceptanceTests.csproj +++ b/Tests/AcceptanceTests/AcceptanceTests.csproj @@ -41,4 +41,8 @@ + + + + diff --git a/Tests/AcceptanceTests/TestSetup/MsalTestFixture - Copy.cs b/Tests/AcceptanceTests/TestSetup/MsalTestFixture - Copy.cs index 5bc4933..dd3fd0f 100644 --- a/Tests/AcceptanceTests/TestSetup/MsalTestFixture - Copy.cs +++ b/Tests/AcceptanceTests/TestSetup/MsalTestFixture - Copy.cs @@ -1,6 +1,4 @@ using Microsoft.Extensions.Configuration; -using Microsoft.Identity.Client; -using System.Net.Http.Headers; namespace Shogi.AcceptanceTests.TestSetup { @@ -10,7 +8,6 @@ namespace Shogi.AcceptanceTests.TestSetup public class GuestTestFixture : IAsyncLifetime, IDisposable { private bool disposedValue; - private readonly IConfidentialClientApplication app; public GuestTestFixture() { @@ -24,28 +21,17 @@ namespace Shogi.AcceptanceTests.TestSetup BaseAddress = new Uri(Configuration["ServiceUrl"], UriKind.Absolute) }; - - publicApp = PublicClientApplicationBuilder - .Create(azure["ClientId"]) - .WithTenantId("common") - .Build(); - } public IConfiguration Configuration { get; private set; } - public HttpClient Service { get; } public async Task InitializeAsync() { - var scopes = Configuration.GetSection("Auth:Scopes").Get(); - var authResult = await app - .AcquireTokenForClient(scopes) - .ExecuteAsync(); - - authResult.Should().NotBeNull(); - authResult.AccessToken.Should().NotBeNullOrEmpty(); + // Log in as a guest account. + var loginResponse = await Service.GetAsync(new Uri("User/LoginAsGuest", UriKind.Relative)); + loginResponse.EnsureSuccessStatusCode(); } protected virtual void Dispose(bool disposing)