diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index fdd2ce6a..665e687e 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -22,6 +22,13 @@
"dotnet-gitversion"
],
"rollForward": false
+ },
+ "dotnet-outdated-tool": {
+ "version": "4.8.1",
+ "commands": [
+ "dotnet-outdated"
+ ],
+ "rollForward": false
}
}
}
\ No newline at end of file
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 13b71970..1600f657 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -40,4 +40,4 @@
-
+
\ No newline at end of file
diff --git a/tests/API.FunctionalTests/ControllerApis/BranchesControllerWithSystemLicense.cs b/tests/API.FunctionalTests/ControllerApis/BranchesControllerWithSystemLicense.cs
index 24b10b6f..8cadbd30 100644
--- a/tests/API.FunctionalTests/ControllerApis/BranchesControllerWithSystemLicense.cs
+++ b/tests/API.FunctionalTests/ControllerApis/BranchesControllerWithSystemLicense.cs
@@ -25,9 +25,9 @@ public async Task CreateBranchWithAdministratorAccessWithInvalidTimeZoneIdTokenA
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
const string branchName = "Branch-392136901";
const string timeZoneId = "USZone";
var address = new AddressModel("1234 Main St", "Suite 100", "Los Angeles", "CA", "12345", "US");
@@ -40,9 +40,9 @@ public async Task CreateBranchWithAdministratorAccessWithLicensedTimeZoneIdToken
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
const string branchName = "Branch-392136901";
const string timeZoneId = "America/New_York";
@@ -60,9 +60,9 @@ public async Task CreateBranchWithAdministratorAccessWithUnlicensedTimeZoneIdTok
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
const string branchName = "Branch-392136901";
const string timeZoneId = "Australia/Perth";
@@ -83,9 +83,9 @@ public async Task CreateBranchWithUserAccessTokenWithInvalidTimeZoneIdAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.User1");
const string branchName = "Branch-826076795";
(await branchClient.CreateBranchAsync(new BranchModificationModel(branchName, "USZone", address: null), TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.Forbidden);
@@ -96,9 +96,9 @@ public async Task CreateBranchWithUserAccessTokenWithLicensedTimeZoneIdAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.User1");
const string branchName = "Branch-826076795";
(await branchClient.CreateBranchAsync(new BranchModificationModel(branchName, "America/Detroit", address: null), TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.Forbidden);
@@ -109,9 +109,9 @@ public async Task CreateBranchWithUserAccessTokenWithUnlicensedTimeZoneIdAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.User1");
const string branchName = "Branch-826076795";
(await branchClient.CreateBranchAsync(new BranchModificationModel(branchName, "Australia/Perth", address: null), TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.Forbidden);
@@ -122,10 +122,10 @@ public async Task CreateThenDeleteBranchWithAdministratorAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
var branchEasyStore = _factory.Services.GetRequiredService().Resolve();
- transport.SetAuthorizationToken("Bearer", "01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
const string branchName = "Branch-832159009";
const string timeZoneId = "America/New_York";
@@ -167,9 +167,9 @@ public async Task DeleteExistingBranchWithDependenciesWithAdministratorAccessTok
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JKXJVFFPWRP9E7YNBQE8KMRB.Tenant1.User35292075");
+ accessTokenContext.SetAccessToken("01JKXJVFFPWRP9E7YNBQE8KMRB.Tenant1.User35292075");
await employeeClient.CreateEmployeeAsync(new EmployeeModificationModel(firstName, lastName, fullName), TestContext.Current.CancellationToken);
@@ -177,7 +177,7 @@ public async Task DeleteExistingBranchWithDependenciesWithAdministratorAccessTok
employeeResponseModel.ShouldNotBeNull();
var createdEmployee = employeeResponseModel.Items.First();
- transport.SetAuthorizationToken("Bearer", "01JKXHHECNDQ6BYNA6CQQ2S59P.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JKXHHECNDQ6BYNA6CQQ2S59P.Tenant1.ADMIN1");
await branchClient.CreateBranchAsync(new BranchModificationModel(branchName, timeZoneId, address: null), TestContext.Current.CancellationToken);
@@ -187,6 +187,7 @@ public async Task DeleteExistingBranchWithDependenciesWithAdministratorAccessTok
var createdBranchModel = branchResponseModel.Items.Single(x => string.Equals(x.Name, branchName, StringComparison.OrdinalIgnoreCase));
+ var transport = scope.ServiceProvider.GetRequiredService();
await transport.PutAsync(
$"/api/1.0/Employees/{createdEmployee.Id}",
EndpointSecurity.RequireToken,
@@ -203,10 +204,10 @@ public async Task DeleteExistingBranchWithoutDependenciesWithAdministratorAccess
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
var branchEasyStore = _factory.Services.GetRequiredService().Resolve();
- transport.SetAuthorizationToken("Bearer", "01JA0JKF0VRC9JPZ9JSAMHGAFS.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA0JKF0VRC9JPZ9JSAMHGAFS.Tenant1.ADMIN1");
var existingBranch = branchEasyStore.Entities.Values.Single(x => string.Equals(x.Name, "Branch2-1972002548", StringComparison.Ordinal));
@@ -220,10 +221,10 @@ public async Task DeleteExistingBranchWithoutDependenciesWithUserAccessTokenAsyn
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
var branchEasyStore = _factory.Services.GetRequiredService().Resolve();
- transport.SetAuthorizationToken("Bearer", "01JA0JKF0VRC9JPZ9JSAMHGAFS.Tenant1.User2");
+ accessTokenContext.SetAccessToken("01JA0JKF0VRC9JPZ9JSAMHGAFS.Tenant1.User2");
var existingBranch = branchEasyStore.Entities.Values.Single(x => string.Equals(x.Name, "Branch3-1513925028", StringComparison.Ordinal));
@@ -235,9 +236,9 @@ public async Task DeleteMissingBranchWithAdministratorAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1J99K3NCGNA6X4Z194PJXF.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1J99K3NCGNA6X4Z194PJXF.Tenant1.ADMIN1");
await Should.NotThrowAsync(async () =>
await branchClient.DeleteBranchAsync(123456789, TestContext.Current.CancellationToken));
@@ -248,9 +249,9 @@ public async Task DeleteMissingBranchWithUserAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA0JKPRJDN7RXSMGXZ946WRB.Tenant1000.User1");
+ accessTokenContext.SetAccessToken("01JA0JKPRJDN7RXSMGXZ946WRB.Tenant1000.User1");
(await branchClient.DeleteBranchAsync(123456789, TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.Forbidden);
}
@@ -268,9 +269,9 @@ public async Task ListBranches_WithSearchTerm_ReturnsFilteredResultsAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.ADMIN1");
// Create branches with distinct names
await branchClient.CreateBranchAsync(new BranchModificationModel("NYC Downtown Branch", "America/New_York", null), TestContext.Current.CancellationToken);
@@ -290,9 +291,9 @@ public async Task ListBranches_WithSpecificIds_ReturnsRequestedBranchesAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.ADMIN1");
// Create branches and collect their IDs
var branchIds = new List();
@@ -325,9 +326,9 @@ public async Task ListBranches_WithValidPaging_ReturnsPaginatedResultsAsync(int
// Create multiple branches
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.ADMIN1");
for (int i = 1; i <= 12; i++)
{
@@ -355,15 +356,15 @@ public async Task ListCreatedBranchesAsync()
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JMV0X5W7N908QW69WVVDPFAW.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JMV0X5W7N908QW69WVVDPFAW.Tenant1.ADMIN1");
await branchClient.CreateBranchAsync(new BranchModificationModel(branch1Name, timeZoneId, address: null), TestContext.Current.CancellationToken);
await branchClient.CreateBranchAsync(new BranchModificationModel(branch2Name, timeZoneId, address: null), TestContext.Current.CancellationToken);
await branchClient.CreateBranchAsync(new BranchModificationModel(branch3Name, timeZoneId, address: null), TestContext.Current.CancellationToken);
- transport.SetAuthorizationToken("Bearer", "01JMV0XC70JH9GC8P9M6SYYYAK.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01JMV0XC70JH9GC8P9M6SYYYAK.Tenant1.User1");
var retrievalResponseModel = (await branchClient.GetBranchesAsync(new BranchQueryRequestModel { PageNumber = 1, PageSize = 100 }, TestContext.Current.CancellationToken)).Unwrap();
@@ -403,9 +404,9 @@ public async Task RetrieveExistingBranchesWithAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9SYCJ4MHZXGQKT0ARG7KNCC.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01J9SYCJ4MHZXGQKT0ARG7KNCC.Tenant1.User1");
var responseModel = (await branchClient.GetBranchesAsync(new BranchQueryRequestModel { PageNumber = 1, PageSize = 5 }, TestContext.Current.CancellationToken)).Unwrap();
responseModel.ShouldNotBeNull();
@@ -420,9 +421,9 @@ public async Task RetrieveMissingBranchWithAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9SYCPN31B53QHRR7Y13D30F.Tenant1000.User1000");
+ accessTokenContext.SetAccessToken("01J9SYCPN31B53QHRR7Y13D30F.Tenant1000.User1000");
var responseModel = (await branchClient.GetBranchesAsync(new BranchQueryRequestModel { PageNumber = 1, PageSize = 5 }, TestContext.Current.CancellationToken)).Unwrap();
responseModel.ShouldNotBeNull();
@@ -447,9 +448,9 @@ public async Task UpdateBranchWithAdministratorAccessTokenWithInvalidAddressAsyn
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
var creationBranchName = $"Branch-{Random.Shared.Next()}";
const string creationTimeZoneId = "America/Los_Angeles";
var creationAddress = new AddressModel("1234 Main St", "Suite 100", "Los Angeles", "CA", "12345", "US");
@@ -472,9 +473,9 @@ public async Task UpdateBranchWithAdministratorAccessWithLicensedTimeZoneIdToken
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
const string creationBranchName = "Branch-753988509";
const string creationTimeZoneId = "America/Los_Angeles";
var creationAddress = new AddressModel("1234 Main St", "Suite 100", "Los Angeles", "CA", "12345", "US");
@@ -527,9 +528,9 @@ public async Task UpdateBranch_WithValidData_SucceedsAsync()
// Create a branch first
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.ADMIN1");
const string branchName = "Test Branch 647834591";
await branchClient.CreateBranchAsync(new BranchModificationModel(branchName, "America/New_York", null), TestContext.Current.CancellationToken);
@@ -558,9 +559,9 @@ public async Task UpdateBranch_WithInvalidTimeZone_ReturnsUnprocessableEntityAsy
// Create a branch first
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.ADMIN1");
const string branchName = "Test Branch 984679490";
await branchClient.CreateBranchAsync(new BranchModificationModel(branchName, "America/New_York", null), TestContext.Current.CancellationToken);
@@ -578,9 +579,9 @@ public async Task UpdateBranch_WithInvalidBranchId_ReturnsNotFoundAsync()
{
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant101.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant101.ADMIN1");
(await branchClient.UpdateBranchAsync(999999, new BranchModificationModel("Updated Branch", "America/Chicago", null), TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.NotFound);
}
@@ -600,9 +601,9 @@ public async Task UpdateBranchWithDifferentCountryCodeShouldFailAsync()
// Arrange
using var scope = _factory.Services.CreateScope();
var branchClient = scope.ServiceProvider.GetRequiredService().BranchClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01J9WMVQRX3J3K00JCDGZN4V59.Tenant1.ADMIN1");
// Create initial branch with US address
const string branchName = "Branch-CountryValidation";
diff --git a/tests/API.FunctionalTests/ControllerApis/CompanyControllerWithSystemLicense.cs b/tests/API.FunctionalTests/ControllerApis/CompanyControllerWithSystemLicense.cs
index 04e77369..9623a288 100644
--- a/tests/API.FunctionalTests/ControllerApis/CompanyControllerWithSystemLicense.cs
+++ b/tests/API.FunctionalTests/ControllerApis/CompanyControllerWithSystemLicense.cs
@@ -25,9 +25,9 @@ public async Task CreateCompanyWithAdministratorAccessTokenAndUnlicensedCountryA
{
using var scope = _factory.Services.CreateScope();
var companyClient = scope.ServiceProvider.GetRequiredService().CompanyClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant102.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant102.ADMIN1");
const string companyName = "Company-1412593541";
(await companyClient.CreateCompanyAsync(new CompanyModificationModel(companyName, "KZ"), TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.UnprocessableEntity);
@@ -38,10 +38,10 @@ public async Task CreateCompanyWithAdministratorAccessTokenWithLicensedCountryAs
{
using var scope = _factory.Services.CreateScope();
var companyClient = scope.ServiceProvider.GetRequiredService().CompanyClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
var licenseEasyStoreBucket = _factory.Services.GetRequiredService().ResolveBucket("License");
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant101.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant101.ADMIN1");
const string companyName = "Company-1993954667";
await companyClient.CreateCompanyAsync(new CompanyModificationModel(companyName, "us"), TestContext.Current.CancellationToken);
@@ -70,9 +70,9 @@ public async Task CreateCompanyWithUserAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var companyClient = scope.ServiceProvider.GetRequiredService().CompanyClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJFK2J690FS0Q3TCX4P3F.Tenant101.User1");
+ accessTokenContext.SetAccessToken("01JA1ZJFK2J690FS0Q3TCX4P3F.Tenant101.User1");
const string companyName = "Company-144764445";
(await companyClient.CreateCompanyAsync(new CompanyModificationModel(companyName, "US"), TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.Forbidden);
@@ -92,9 +92,9 @@ public async Task DeleteExistingCompanyWithDependenciesWithAdministratorAccessTo
{
using var scope = _factory.Services.CreateScope();
var companyClient = scope.ServiceProvider.GetRequiredService().CompanyClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9SJ94KK62JSRNQD7H70NCF7.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01J9SJ94KK62JSRNQD7H70NCF7.Tenant1.ADMIN1");
(await companyClient.DeleteCompanyAsync(TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.FailedDependency);
}
@@ -104,10 +104,10 @@ public async Task DeleteExistingCompanyWithoutDependenciesWithAdministratorAcces
{
using var scope = _factory.Services.CreateScope();
var companyClient = scope.ServiceProvider.GetRequiredService().CompanyClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
var companyEasyStore = _factory.Services.GetRequiredService().Resolve();
- transport.SetAuthorizationToken("Bearer", "01J9SJ94KK62JSRNQD7H70NCF7.Tenant3.ADMIN1");
+ accessTokenContext.SetAccessToken("01J9SJ94KK62JSRNQD7H70NCF7.Tenant3.ADMIN1");
companyEasyStore.Entities.Values.FirstOrDefault(x => string.Equals(x.Name, "Company3-1868946743", StringComparison.Ordinal)).ShouldNotBeNull();
@@ -121,9 +121,9 @@ public async Task DeleteExistingCompanyWithUserAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var companyClient = scope.ServiceProvider.GetRequiredService().CompanyClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9SJ94KK62JSRNQD7H70NCF7.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01J9SJ94KK62JSRNQD7H70NCF7.Tenant1.User1");
(await companyClient.DeleteCompanyAsync(TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.Forbidden);
}
@@ -133,9 +133,9 @@ public async Task DeleteMissingCompanyWithAdministratorAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var companyClient = scope.ServiceProvider.GetRequiredService().CompanyClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9SJ94KK62JSRNQD7H70NCF7.Tenant1000.ADMIN1");
+ accessTokenContext.SetAccessToken("01J9SJ94KK62JSRNQD7H70NCF7.Tenant1000.ADMIN1");
await Should.NotThrowAsync(async () =>
await companyClient.DeleteCompanyAsync(TestContext.Current.CancellationToken));
@@ -163,9 +163,9 @@ public async Task RetrieveExistingCompanyWithAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var companyClient = scope.ServiceProvider.GetRequiredService().CompanyClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9SJ94KK62JSRNQD7H70NCF7.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01J9SJ94KK62JSRNQD7H70NCF7.Tenant1.User1");
var responseModel = (await companyClient.GetCompanyAsync(TestContext.Current.CancellationToken)).Unwrap();
responseModel.ShouldNotBeNull();
@@ -179,9 +179,9 @@ public async Task RetrieveMissingCompanyWithAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var companyClient = scope.ServiceProvider.GetRequiredService().CompanyClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9SXMEMR1GQ3EE3Q4A872GKD.Tenant1000.User1000");
+ accessTokenContext.SetAccessToken("01J9SXMEMR1GQ3EE3Q4A872GKD.Tenant1000.User1000");
(await companyClient.GetCompanyAsync(TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.NotFound);
}
diff --git a/tests/API.FunctionalTests/ControllerApis/CompanyLicenseControllerEmptyDatabase.cs b/tests/API.FunctionalTests/ControllerApis/CompanyLicenseControllerEmptyDatabase.cs
index fb3a84dd..7f2aabdd 100644
--- a/tests/API.FunctionalTests/ControllerApis/CompanyLicenseControllerEmptyDatabase.cs
+++ b/tests/API.FunctionalTests/ControllerApis/CompanyLicenseControllerEmptyDatabase.cs
@@ -61,9 +61,9 @@ public async Task RetrieveCompanyLicenseWithAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var companyLicenseClient = scope.ServiceProvider.GetRequiredService().CompanyLicenseClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1R22PNGNDJNP12A506EFWZ.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01JA1R22PNGNDJNP12A506EFWZ.Tenant1.User1");
(await companyLicenseClient.GetLicenseAsync(TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.UnprocessableEntity);
}
diff --git a/tests/API.FunctionalTests/ControllerApis/CompanyLicenseControllerWithSystemLicense.cs b/tests/API.FunctionalTests/ControllerApis/CompanyLicenseControllerWithSystemLicense.cs
index 9dc0926f..7f1593a9 100644
--- a/tests/API.FunctionalTests/ControllerApis/CompanyLicenseControllerWithSystemLicense.cs
+++ b/tests/API.FunctionalTests/ControllerApis/CompanyLicenseControllerWithSystemLicense.cs
@@ -23,9 +23,9 @@ public async Task CreateCompanyLicenseWithAdministratorAccessTokenAsync()
using var scope = _factory.Services.CreateScope();
var companyLicenseClient = scope.ServiceProvider.GetRequiredService().CompanyLicenseClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.User1");
var licenseResponseModel = (await companyLicenseClient.GetLicenseAsync(TestContext.Current.CancellationToken)).Unwrap();
licenseResponseModel.ShouldNotBeNull();
diff --git a/tests/API.FunctionalTests/ControllerApis/CompanySettingsControllerWithSystemLicense.cs b/tests/API.FunctionalTests/ControllerApis/CompanySettingsControllerWithSystemLicense.cs
index 6eafe512..4b176aa1 100644
--- a/tests/API.FunctionalTests/ControllerApis/CompanySettingsControllerWithSystemLicense.cs
+++ b/tests/API.FunctionalTests/ControllerApis/CompanySettingsControllerWithSystemLicense.cs
@@ -23,9 +23,9 @@ public async Task CreateCompanySettingsWithAdministratorAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var settingsClient = scope.ServiceProvider.GetRequiredService().CompanySettingsClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant3.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant3.ADMIN1");
const string colorSchemeId = "new-theme";
@@ -44,9 +44,9 @@ public async Task CreateCompanySettingsWithInvalidColorSchemeIdAsync()
{
using var scope = _factory.Services.CreateScope();
var settingsClient = scope.ServiceProvider.GetRequiredService().CompanySettingsClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant4.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant4.ADMIN1");
// Test various invalid colorSchemeId formats
var invalidColorSchemeIds = new[]
@@ -73,7 +73,7 @@ public async Task CreateCompanySettingsWithValidColorSchemeIdFormatsAsync()
{
using var scope = _factory.Services.CreateScope();
var settingsClient = scope.ServiceProvider.GetRequiredService().CompanySettingsClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
// Test various valid colorSchemeId formats
var validTestCases = new[]
@@ -86,10 +86,11 @@ public async Task CreateCompanySettingsWithValidColorSchemeIdFormatsAsync()
foreach (var testCase in validTestCases)
{
- transport.SetAuthorizationToken("Bearer", $"01JA1ZJAWF27S0J8Z2VJE7673Y.{testCase.Tenant}.ADMIN1");
+ accessTokenContext.SetAccessToken($"01JA1ZJAWF27S0J8Z2VJE7673Y.{testCase.Tenant}.ADMIN1");
const string companyName = "Company-1412593541";
+ var transport = scope.ServiceProvider.GetRequiredService();
await transport.PostAsync(
"/api/1.0/Company",
EndpointSecurity.RequireToken,
@@ -112,9 +113,9 @@ public async Task CreateDuplicateCompanySettingsAsync()
{
using var scope = _factory.Services.CreateScope();
var settingsClient = scope.ServiceProvider.GetRequiredService().CompanySettingsClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JB0QS2K6SA4KYD8S920W7DMG.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JB0QS2K6SA4KYD8S920W7DMG.Tenant1.ADMIN1");
// Try to create company settings for a company that already has settings
(await settingsClient.CreateCompanySettingsAsync(
@@ -126,9 +127,9 @@ public async Task DeleteExistingCompanySettingsAsync()
{
using var scope = _factory.Services.CreateScope();
var settingsClient = scope.ServiceProvider.GetRequiredService().CompanySettingsClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JB0RAH24ZJBA53AJF5F5MMZX.Tenant2.ADMIN1");
+ accessTokenContext.SetAccessToken("01JB0RAH24ZJBA53AJF5F5MMZX.Tenant2.ADMIN1");
await settingsClient.DeleteCompanySettingsAsync(TestContext.Current.CancellationToken);
@@ -140,9 +141,9 @@ public async Task DeleteNonExistentCompanySettingsAsync()
{
using var scope = _factory.Services.CreateScope();
var settingsClient = scope.ServiceProvider.GetRequiredService().CompanySettingsClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1000.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1000.ADMIN1");
(await settingsClient.DeleteCompanySettingsAsync(TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.NotFound);
}
@@ -154,9 +155,9 @@ public async Task GetExistingCompanySettingsAsync()
{
using var scope = _factory.Services.CreateScope();
var settingsClient = scope.ServiceProvider.GetRequiredService().CompanySettingsClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JB0QS2K6SA4KYD8S920W7DMG.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01JB0QS2K6SA4KYD8S920W7DMG.Tenant1.User1");
var responseModel = (await settingsClient.GetCompanySettingsAsync(TestContext.Current.CancellationToken)).Unwrap();
@@ -170,9 +171,9 @@ public async Task GetNonExistentCompanySettingsAsync()
{
using var scope = _factory.Services.CreateScope();
var settingsClient = scope.ServiceProvider.GetRequiredService().CompanySettingsClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1000.User1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1000.User1");
(await settingsClient.GetCompanySettingsAsync(TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.NotFound);
}
@@ -188,9 +189,9 @@ public async Task UpdateExistingCompanySettingsAsync()
{
using var scope = _factory.Services.CreateScope();
var settingsClient = scope.ServiceProvider.GetRequiredService().CompanySettingsClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JB0QS2K6SA4KYD8S920W7DMG.Tenant1.ADMIN1");
+ accessTokenContext.SetAccessToken("01JB0QS2K6SA4KYD8S920W7DMG.Tenant1.ADMIN1");
const string newColorSchemeId = "updated-theme";
@@ -208,9 +209,9 @@ public async Task UpdateNonExistentCompanySettingsAsync()
{
using var scope = _factory.Services.CreateScope();
var settingsClient = scope.ServiceProvider.GetRequiredService().CompanySettingsClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1000.ADMIN1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1000.ADMIN1");
(await settingsClient.UpdateCompanySettingsAsync(
new CompanySettingsModificationModel("new-theme"), TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.NotFound);
diff --git a/tests/API.FunctionalTests/ControllerApis/DepartmentsControllerWithSystemLicense.cs b/tests/API.FunctionalTests/ControllerApis/DepartmentsControllerWithSystemLicense.cs
index 68609804..aee22f40 100644
--- a/tests/API.FunctionalTests/ControllerApis/DepartmentsControllerWithSystemLicense.cs
+++ b/tests/API.FunctionalTests/ControllerApis/DepartmentsControllerWithSystemLicense.cs
@@ -24,9 +24,9 @@ public async Task CreateAndListDepartmentsAsync()
using var scope = _factory.Services.CreateScope();
var departmentClient = scope.ServiceProvider.GetRequiredService().DepartmentClient;
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JMV0XC70JH9GC8P9M6SYYYAK.Tenant1.ADMIN420425736");
+ accessTokenContext.SetAccessToken("01JMV0XC70JH9GC8P9M6SYYYAK.Tenant1.ADMIN420425736");
const string firstName = "First35292075";
const string lastName = "Last35292075";
@@ -81,9 +81,9 @@ public async Task DeleteExistingDepartmentWithoutDependenciesWithAdministratorAc
using var scope = _factory.Services.CreateScope();
var departmentClient = scope.ServiceProvider.GetRequiredService().DepartmentClient;
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JMV0XC70JH9GC8P9M6SYYYAK.Tenant1.ADMIN430851539");
+ accessTokenContext.SetAccessToken("01JMV0XC70JH9GC8P9M6SYYYAK.Tenant1.ADMIN430851539");
await employeeClient.CreateEmployeeAsync(new EmployeeModificationModel(firstName, lastName, fullName), TestContext.Current.CancellationToken);
@@ -123,9 +123,9 @@ public async Task UpdateExistingDepartmentWithAdministratorAccessTokenAsync()
using var scope = _factory.Services.CreateScope();
var departmentClient = scope.ServiceProvider.GetRequiredService().DepartmentClient;
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JMV0XC70JH9GC8P9M6SYYYAK.Tenant1.ADMIN604735919");
+ accessTokenContext.SetAccessToken("01JMV0XC70JH9GC8P9M6SYYYAK.Tenant1.ADMIN604735919");
await employeeClient.CreateEmployeeAsync(new EmployeeModificationModel(firstName, lastName, fullName), TestContext.Current.CancellationToken);
diff --git a/tests/API.FunctionalTests/ControllerApis/EmployeeControllerWithSystemLicense.cs b/tests/API.FunctionalTests/ControllerApis/EmployeeControllerWithSystemLicense.cs
index d0c3e461..4bee492c 100644
--- a/tests/API.FunctionalTests/ControllerApis/EmployeeControllerWithSystemLicense.cs
+++ b/tests/API.FunctionalTests/ControllerApis/EmployeeControllerWithSystemLicense.cs
@@ -39,9 +39,9 @@ public async Task CreateExistingEmployeeWithAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.User1");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.User1");
const string firstName = "First812685875";
const string lastName = "Last812685875";
@@ -65,9 +65,9 @@ public async Task CreateMissingEmployeeWithAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.User100");
+ accessTokenContext.SetAccessToken("01JA1ZJAWF27S0J8Z2VJE7673Y.Tenant1.User100");
const string firstName = "First576536102";
const string lastName = "Last576536102";
@@ -98,10 +98,10 @@ public async Task DeleteExistingEmployeeWithoutDependenciesWithUserAccessTokenAs
{
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
var employeeEasyStore = _factory.Services.GetRequiredService().Resolve();
- transport.SetAuthorizationToken("Bearer", "01J9ZHFMA4ZXFE4EVMZARRTK7M.Tenant2.User1");
+ accessTokenContext.SetAccessToken("01J9ZHFMA4ZXFE4EVMZARRTK7M.Tenant2.User1");
var existingEmployee = employeeEasyStore.Entities.Values.Single(x => string.Equals(x.FullName, "Meaghan Riley", StringComparison.OrdinalIgnoreCase));
@@ -115,9 +115,9 @@ public async Task DeleteMissingEmployeeWithUserAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9ZHG6056FSRFJ7GC9E21JFD.Tenant1000.User1");
+ accessTokenContext.SetAccessToken("01J9ZHG6056FSRFJ7GC9E21JFD.Tenant1000.User1");
// Attempting to delete the authenticated user's employee explicitly is idempotent and succeeds
await Should.NotThrowAsync(async () => await employeeClient.DeleteCurrentEmployeeAsync(TestContext.Current.CancellationToken));
@@ -138,12 +138,12 @@ public async Task ListCreatedEmployeesAsync()
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
var employeeIds = new List();
foreach (var x in Seq(36883136, 36883144, 36883148))
{
- transport.SetAuthorizationToken("Bearer", $"01JND081MJRM7Q0CHWEY1038EF.Tenant1.User{x}");
+ accessTokenContext.SetAccessToken($"01JND081MJRM7Q0CHWEY1038EF.Tenant1.User{x}");
var firstName = $"First{x}";
var lastName = $"Last{x}";
@@ -191,8 +191,8 @@ public async Task RetrieveExistingEmployeeWithAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9ZHGBMC1DVP4R33QRYZ04RX.Tenant1.User1");
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
+ accessTokenContext.SetAccessToken("01J9ZHGBMC1DVP4R33QRYZ04RX.Tenant1.User1");
var responseModel = (await employeeClient.GetCurrentEmployeeAsync(TestContext.Current.CancellationToken)).Unwrap();
@@ -210,8 +210,8 @@ public async Task RetrieveMissingEmployeeWithAccessTokenAsync()
{
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01J9ZHGFXBG4WKNJKBSG7T2Y76.Tenant1000.User1000");
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
+ accessTokenContext.SetAccessToken("01J9ZHGFXBG4WKNJKBSG7T2Y76.Tenant1000.User1000");
// The endpoint returns 404 if the authenticated user's employee cannot be found
(await employeeClient.GetCurrentEmployeeAsync(TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.NotFound);
@@ -224,9 +224,9 @@ public async Task UpdateEmployeeAssignedDepartmentAsync()
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
var departmentClient = scope.ServiceProvider.GetRequiredService().DepartmentClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- transport.SetAuthorizationToken("Bearer", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425736");
+ accessTokenContext.SetAccessToken("01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425736");
await employeeClient.CreateEmployeeAsync(new EmployeeModificationModel("First", "Last", "Full Name"), TestContext.Current.CancellationToken);
@@ -258,10 +258,10 @@ public async Task UpdateEmployee_WithReportsTo_SucceedsAsync()
// Arrange
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- var manager = await CreateEmployeeAsync(employeeClient, transport, "Manager", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425737");
- var employee = await CreateEmployeeAsync(employeeClient, transport, "Employee", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425738");
+ var manager = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Manager", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425737");
+ var employee = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425738");
// Act
await employeeClient.ManageEmployeeAsync(employee.Id, new EmployeeManagementModel(null, null, manager.Id, "Staff"), TestContext.Current.CancellationToken);
@@ -278,14 +278,14 @@ public async Task DeleteEmployee_WithDirectReport_FailsAsync()
// Arrange
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- var manager = await CreateEmployeeAsync(employeeClient, transport, "Manager", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425739");
- var employee = await CreateEmployeeAsync(employeeClient, transport, "Employee", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425740");
+ var manager = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Manager", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425739");
+ var employee = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425740");
await employeeClient.ManageEmployeeAsync(employee.Id, new EmployeeManagementModel(null, null, manager.Id, "Staff"), TestContext.Current.CancellationToken);
// Act & Assert
- transport.SetAuthorizationToken("Bearer", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425739");
+ accessTokenContext.SetAccessToken("01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425739");
(await employeeClient.DeleteCurrentEmployeeAsync(TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.FailedDependency);
}
@@ -296,9 +296,9 @@ public async Task UpdateEmployee_WithNonExistentReportsTo_FailsAsync()
// Arrange
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- var employee = await CreateEmployeeAsync(employeeClient, transport, "Employee", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425741");
+ var employee = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425741");
// Act
(await employeeClient.ManageEmployeeAsync(employee.Id, new EmployeeManagementModel(null, null, 999999L, "Staff"), TestContext.Current.CancellationToken)).ShouldFailWith(HttpStatusCode.UnprocessableEntity);
@@ -310,10 +310,10 @@ public async Task UpdateEmployee_WithCyclicalReference_FailsAsync()
// Arrange
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- var employee1 = await CreateEmployeeAsync(employeeClient, transport, "Employee", "One", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425742");
- var employee2 = await CreateEmployeeAsync(employeeClient, transport, "Employee", "Two", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425743");
+ var employee1 = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "One", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425742");
+ var employee2 = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "Two", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425743");
await employeeClient.ManageEmployeeAsync(employee2.Id, new EmployeeManagementModel(null, null, employee1.Id, "Staff"), TestContext.Current.CancellationToken);
@@ -327,11 +327,11 @@ public async Task UpdateEmployee_WithLongerCyclicalReference_FailsAsync()
// Arrange
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- var employee1 = await CreateEmployeeAsync(employeeClient, transport, "Employee", "One", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425744");
- var employee2 = await CreateEmployeeAsync(employeeClient, transport, "Employee", "Two", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425745");
- var employee3 = await CreateEmployeeAsync(employeeClient, transport, "Employee", "Three", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425746");
+ var employee1 = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "One", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425744");
+ var employee2 = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "Two", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425745");
+ var employee3 = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "Three", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425746");
await employeeClient.ManageEmployeeAsync(employee2.Id, new EmployeeManagementModel(null, null, employee1.Id, "Staff"), TestContext.Current.CancellationToken);
await employeeClient.ManageEmployeeAsync(employee3.Id, new EmployeeManagementModel(null, null, employee2.Id, "Staff"), TestContext.Current.CancellationToken);
@@ -346,12 +346,12 @@ public async Task ListEmployees_ByReportsToId_ReturnsFilteredResultsAsync()
// Arrange
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- var manager = await CreateEmployeeAsync(employeeClient, transport, "Manager", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425747");
- var employee1 = await CreateEmployeeAsync(employeeClient, transport, "Employee", "One", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425748");
- var employee2 = await CreateEmployeeAsync(employeeClient, transport, "Employee", "Two", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425749");
- await CreateEmployeeAsync(employeeClient, transport, "Employee", "Three", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425750");
+ var manager = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Manager", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425747");
+ var employee1 = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "One", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425748");
+ var employee2 = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "Two", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425749");
+ await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "Three", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425750");
await employeeClient.ManageEmployeeAsync(employee1.Id, new EmployeeManagementModel(null, null, manager.Id, "Staff"), TestContext.Current.CancellationToken);
await employeeClient.ManageEmployeeAsync(employee2.Id, new EmployeeManagementModel(null, null, manager.Id, "Staff"), TestContext.Current.CancellationToken);
@@ -376,10 +376,10 @@ public async Task ListEmployees_TopLevelOnly_ReturnsFilteredResultsAsync()
// Arrange
using var scope = _factory.Services.CreateScope();
var employeeClient = scope.ServiceProvider.GetRequiredService().EmployeeClient;
- var transport = (TestHttpTransport)scope.ServiceProvider.GetRequiredService();
+ var accessTokenContext = scope.ServiceProvider.GetRequiredService();
- var manager = await CreateEmployeeAsync(employeeClient, transport, "Manager", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425751");
- var employee = await CreateEmployeeAsync(employeeClient, transport, "Employee", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425752");
+ var manager = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Manager", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425751");
+ var employee = await CreateEmployeeAsync(employeeClient, accessTokenContext, "Employee", "User", "01K4H70V6A2K39JB4NCYPQ07KY.Tenant1.ADMIN420425752");
await employeeClient.ManageEmployeeAsync(employee.Id, new EmployeeManagementModel(null, null, manager.Id, "Staff"), TestContext.Current.CancellationToken);
// Act
@@ -397,11 +397,11 @@ public async Task ListEmployees_TopLevelOnly_ReturnsFilteredResultsAsync()
result.Items.Any(x => x.Id == manager.Id).ShouldBeTrue();
}
- private static async Task CreateEmployeeAsync(IEmployeeClient client, TestHttpTransport transport, string firstName, string lastName, string? token = null)
+ private static async Task CreateEmployeeAsync(IEmployeeClient client, IAccessTokenContext accessTokenContext, string firstName, string lastName, string? token = null)
{
if (token != null)
{
- transport.SetAuthorizationToken("Bearer", token);
+ accessTokenContext.SetAccessToken(token);
}
await client.CreateEmployeeAsync(new EmployeeModificationModel(firstName, lastName, $"{firstName} {lastName}"), TestContext.Current.CancellationToken);
diff --git a/tests/API.FunctionalTests/Extensions/ServiceCollectionExtensions.cs b/tests/API.FunctionalTests/Extensions/ServiceCollectionExtensions.cs
index 6ab97c42..0fda555d 100644
--- a/tests/API.FunctionalTests/Extensions/ServiceCollectionExtensions.cs
+++ b/tests/API.FunctionalTests/Extensions/ServiceCollectionExtensions.cs
@@ -8,7 +8,10 @@ public static class ServiceCollectionExtensions
{
public static IServiceCollection AddBridge(this IServiceCollection services)
{
- _ = services.AddScoped();
+ _ = services.AddScoped();
+ _ = services.AddScoped(sp => sp.GetRequiredService());
+ _ = services.AddScoped(sp => sp.GetRequiredService());
+ _ = services.AddScoped(sp => sp.GetRequiredService());
_ = services.AddScoped();
return services;
diff --git a/tests/API.FunctionalTests/IAccessTokenContext.cs b/tests/API.FunctionalTests/IAccessTokenContext.cs
new file mode 100644
index 00000000..769e6ac7
--- /dev/null
+++ b/tests/API.FunctionalTests/IAccessTokenContext.cs
@@ -0,0 +1,8 @@
+namespace Fossa.API.FunctionalTests;
+
+public interface IAccessTokenContext
+{
+ void ClearAccessToken();
+
+ void SetAccessToken(string accessToken);
+}
diff --git a/tests/API.FunctionalTests/TestHttpTransport.cs b/tests/API.FunctionalTests/TestHttpTransportWithAccessToken.cs
similarity index 73%
rename from tests/API.FunctionalTests/TestHttpTransport.cs
rename to tests/API.FunctionalTests/TestHttpTransportWithAccessToken.cs
index 42072f73..a5d96fff 100644
--- a/tests/API.FunctionalTests/TestHttpTransport.cs
+++ b/tests/API.FunctionalTests/TestHttpTransportWithAccessToken.cs
@@ -1,26 +1,26 @@
using System.Net.Http.Headers;
using System.Net.Http.Json;
-using System.Threading;
-using System.Threading.Tasks;
using Fossa.API.Web;
using Fossa.Bridge.Models.ApiModels;
using Fossa.Bridge.Services;
+using Microsoft.AspNetCore.Authentication.JwtBearer;
namespace Fossa.API.FunctionalTests;
-public class TestHttpTransport : IHttpTransport
+public class TestHttpTransportWithAccessToken : IHttpTransport, IAccessTokenProvider, IAccessTokenContext
{
private readonly HttpClient _httpClient;
+ private Option _accessToken;
- public TestHttpTransport(CustomWebApplicationFactory factory)
+ public TestHttpTransportWithAccessToken(CustomWebApplicationFactory factory)
{
ArgumentNullException.ThrowIfNull(factory);
_httpClient = factory.CreateClient();
}
- public void SetAuthorizationToken(string scheme, string parameter)
+ public void ClearAccessToken()
{
- _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(scheme, parameter);
+ _accessToken = None;
}
public async Task DeleteAsync(
@@ -29,6 +29,7 @@ public async Task DeleteAsync(
CancellationToken cancellationToken)
{
var requestUri = NormalizeRequestUri(endpointUrl);
+ ApplyAccessToken(endpointSecurity);
var response = await _httpClient.DeleteAsync(requestUri, cancellationToken);
if (!response.IsSuccessStatusCode)
{
@@ -45,6 +46,7 @@ public async Task> GetAsync(
where TResponse : class
{
var requestUri = NormalizeRequestUri(endpointUrl);
+ ApplyAccessToken(endpointSecurity);
var response = await _httpClient.GetAsync(requestUri, cancellationToken);
if (!response.IsSuccessStatusCode)
{
@@ -55,7 +57,13 @@ public async Task> GetAsync(
return ClientResult.NewSuccess(result ?? throw new InvalidOperationException("Response content is null."));
}
- public async Task PostAsync(
+ public Task GetTokenAsync(CancellationToken cancellationToken)
+ => _accessToken.Match(
+ token => Task.FromResult(token),
+ () => throw new InvalidOperationException("Access token is not available.")
+ );
+
+ public async Task PatchAsync(
string endpointUrl,
EndpointSecurity endpointSecurity,
TRequest request,
@@ -63,7 +71,8 @@ public async Task PostAsync(
where TRequest : notnull
{
var requestUri = NormalizeRequestUri(endpointUrl);
- var response = await _httpClient.PostAsJsonAsync(requestUri, request, cancellationToken);
+ ApplyAccessToken(endpointSecurity);
+ var response = await _httpClient.PatchAsJsonAsync(requestUri, request, cancellationToken);
if (!response.IsSuccessStatusCode)
{
return ClientUnitResult.NewFailure(await ReadProblemDetailsAsync(response, cancellationToken));
@@ -72,7 +81,7 @@ public async Task PostAsync(
return ClientUnitResult.Success;
}
- public async Task PatchAsync(
+ public async Task PostAsync(
string endpointUrl,
EndpointSecurity endpointSecurity,
TRequest request,
@@ -80,7 +89,8 @@ public async Task PatchAsync(
where TRequest : notnull
{
var requestUri = NormalizeRequestUri(endpointUrl);
- var response = await _httpClient.PatchAsJsonAsync(requestUri, request, cancellationToken);
+ ApplyAccessToken(endpointSecurity);
+ var response = await _httpClient.PostAsJsonAsync(requestUri, request, cancellationToken);
if (!response.IsSuccessStatusCode)
{
return ClientUnitResult.NewFailure(await ReadProblemDetailsAsync(response, cancellationToken));
@@ -97,6 +107,7 @@ public async Task PutAsync(
where TRequest : notnull
{
var requestUri = NormalizeRequestUri(endpointUrl);
+ ApplyAccessToken(endpointSecurity);
var response = await _httpClient.PutAsJsonAsync(requestUri, request, cancellationToken);
if (!response.IsSuccessStatusCode)
{
@@ -106,6 +117,12 @@ public async Task PutAsync(
return ClientUnitResult.Success;
}
+ public void SetAccessToken(string accessToken)
+ {
+ ArgumentException.ThrowIfNullOrWhiteSpace(accessToken);
+ _accessToken = Some(accessToken);
+ }
+
private static string NormalizeRequestUri(string endpointUrl)
=> endpointUrl.StartsWith('/') ? endpointUrl : "/" + endpointUrl;
@@ -114,4 +131,11 @@ private static async Task ReadProblemDetailsAsync(
CancellationToken cancellationToken)
=> await response.Content.ReadFromJsonAsync(cancellationToken: cancellationToken)
?? throw new InvalidOperationException("Problem details response content is null.");
+
+ private void ApplyAccessToken(EndpointSecurity endpointSecurity)
+ {
+ var endpointAccessToken = endpointSecurity.IsRequireToken ? _accessToken : None;
+ endpointAccessToken.IfSome(token => _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(JwtBearerDefaults.AuthenticationScheme, token));
+ endpointAccessToken.IfNone(() => _httpClient.DefaultRequestHeaders.Authorization = null);
+ }
}
diff --git a/tests/API.IntegrationTests/API.IntegrationTests.csproj b/tests/API.IntegrationTests/API.IntegrationTests.csproj
index 284c6b15..ce7453af 100644
--- a/tests/API.IntegrationTests/API.IntegrationTests.csproj
+++ b/tests/API.IntegrationTests/API.IntegrationTests.csproj
@@ -44,4 +44,4 @@