This commit is contained in:
2022-10-30 12:47:39 -05:00
parent 93027e8c57
commit b8ac227199
6 changed files with 28 additions and 29 deletions

View File

@@ -5,8 +5,8 @@ SET NOCOUNT ON;
SELECT SELECT
[Name], [Name],
CASE Player2Id CASE
WHEN NULL THEN 1 WHEN Player2Id IS NULL THEN 1
ELSE 2 ELSE 2
END AS PlayerCount END AS PlayerCount
FROM [session].[Session]; FROM [session].[Session];

View File

@@ -150,7 +150,6 @@ public class SessionController : ControllerBase
//} //}
[HttpGet] [HttpGet]
[AllowAnonymous]
public async Task<ActionResult<ReadAllSessionsResponse>> GetSessions() public async Task<ActionResult<ReadAllSessionsResponse>> GetSessions()
{ {
var sessions = await this.queryRespository.ReadAllSessionsMetadata(); var sessions = await this.queryRespository.ReadAllSessionsMetadata();

View File

@@ -89,9 +89,8 @@ public class UserController : ControllerBase
); );
} }
return Ok(); return Ok();
} }
[HttpGet("GuestToken")] [HttpGet("GuestToken")]
public IActionResult GetGuestToken() public IActionResult GetGuestToken()
{ {

View File

@@ -1,25 +1,36 @@
using Shogi.AcceptanceTests.TestSetup; using Shogi.AcceptanceTests.TestSetup;
using Shogi.Contracts.Api;
using System.Net;
using System.Net.Http.Json;
using Xunit.Abstractions; using Xunit.Abstractions;
namespace Shogi.AcceptanceTests; namespace Shogi.AcceptanceTests;
public class AcceptanceTests : IClassFixture<MsalTestFixture> #pragma warning disable xUnit1033 // There is a bug which provides a false positive of xUnit1033.
public class AcceptanceTests : IClassFixture<GuestTestFixture>
#pragma warning restore xUnit1033
{ {
private readonly MsalTestFixture fixture; private readonly GuestTestFixture fixture;
private readonly ITestOutputHelper console; private readonly ITestOutputHelper console;
public AcceptanceTests(MsalTestFixture fixture, ITestOutputHelper console) public AcceptanceTests(GuestTestFixture fixture, ITestOutputHelper console)
{ {
this.fixture = fixture; this.fixture = fixture;
this.console = console; this.console = console;
} }
private HttpClient Service => fixture.Service;
[Fact] [Fact]
public async Task CreateAndReadSession() public async Task CreateAndReadSession()
{ {
var response = await fixture.Service.GetAsync(new Uri("Game", UriKind.Relative)); var createResponse = await Service.PostAsJsonAsync(new Uri("Session", UriKind.Relative), new CreateSessionCommand { Name = "Acceptance Tests" });
console.WriteLine(await response.Content.ReadAsStringAsync()); createResponse.StatusCode.Should().Be(HttpStatusCode.Created);
console.WriteLine(response.Headers.WwwAuthenticate.ToString()); var yep = await createResponse.Content.ReadAsStringAsync();
response.IsSuccessStatusCode.Should().BeTrue(because: "AAT Client should be authorized."); console.WriteLine(yep);
var readAllResponse = await Service.GetFromJsonAsync<ReadAllSessionsResponse>(new Uri("Session", UriKind.Relative));
readAllResponse.Should().NotBeNull();
readAllResponse!.AllOtherSessions.Should().ContainSingle(session => session.Name == "Acceptance Tests" && session.PlayerCount == 1);
} }
} }

View File

@@ -41,4 +41,8 @@
</PackageReference> </PackageReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shogi.Contracts\Shogi.Contracts.csproj" />
</ItemGroup>
</Project> </Project>

View File

@@ -1,6 +1,4 @@
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Identity.Client;
using System.Net.Http.Headers;
namespace Shogi.AcceptanceTests.TestSetup namespace Shogi.AcceptanceTests.TestSetup
{ {
@@ -10,7 +8,6 @@ namespace Shogi.AcceptanceTests.TestSetup
public class GuestTestFixture : IAsyncLifetime, IDisposable public class GuestTestFixture : IAsyncLifetime, IDisposable
{ {
private bool disposedValue; private bool disposedValue;
private readonly IConfidentialClientApplication app;
public GuestTestFixture() public GuestTestFixture()
{ {
@@ -24,28 +21,17 @@ namespace Shogi.AcceptanceTests.TestSetup
BaseAddress = new Uri(Configuration["ServiceUrl"], UriKind.Absolute) BaseAddress = new Uri(Configuration["ServiceUrl"], UriKind.Absolute)
}; };
publicApp = PublicClientApplicationBuilder
.Create(azure["ClientId"])
.WithTenantId("common")
.Build();
} }
public IConfiguration Configuration { get; private set; } public IConfiguration Configuration { get; private set; }
public HttpClient Service { get; } public HttpClient Service { get; }
public async Task InitializeAsync() public async Task InitializeAsync()
{ {
var scopes = Configuration.GetSection("Auth:Scopes").Get<string[]>(); // Log in as a guest account.
var authResult = await app var loginResponse = await Service.GetAsync(new Uri("User/LoginAsGuest", UriKind.Relative));
.AcquireTokenForClient(scopes) loginResponse.EnsureSuccessStatusCode();
.ExecuteAsync();
authResult.Should().NotBeNull();
authResult.AccessToken.Should().NotBeNullOrEmpty();
} }
protected virtual void Dispose(bool disposing) protected virtual void Dispose(bool disposing)