diff --git a/.azuredevops/pipelines/build-dcr-func.yml b/.azuredevops/pipelines/build-dcr-func.yml index 9122b81..d0ad755 100644 --- a/.azuredevops/pipelines/build-dcr-func.yml +++ b/.azuredevops/pipelines/build-dcr-func.yml @@ -15,7 +15,9 @@ variables: - group: PT-Pipeline-Common pool: - vmImage: $(Pipeline_Host_Image) + name: mdp-mgmt-shared + demands: + - ImageOverride -equals $(PipelineHostWindowsImage) steps: - task: UseDotNet@2 diff --git a/.azuredevops/pipelines/build-dh-func.yml b/.azuredevops/pipelines/build-dh-func.yml index ab0572a..6277334 100644 --- a/.azuredevops/pipelines/build-dh-func.yml +++ b/.azuredevops/pipelines/build-dh-func.yml @@ -15,7 +15,9 @@ variables: - group: PT-Pipeline-Common pool: - vmImage: $(Pipeline_Host_Image) + name: mdp-mgmt-shared + demands: + - ImageOverride -equals $(PipelineHostWindowsImage) steps: - task: UseDotNet@2 diff --git a/.azuredevops/pipelines/build-no-tests.yml b/.azuredevops/pipelines/build-no-tests.yml index 9f9f715..44b9984 100644 --- a/.azuredevops/pipelines/build-no-tests.yml +++ b/.azuredevops/pipelines/build-no-tests.yml @@ -9,9 +9,14 @@ resources: trigger: - none + +variables: + - group: PT-Pipeline-Common pool: - vmImage: ubuntu-latest + name: mdp-mgmt-shared + demands: + - ImageOverride -equals $(PipelineHostLinuxImage) steps: diff --git a/.azuredevops/pipelines/build-v2.yml b/.azuredevops/pipelines/build-v2.yml index 64b3860..4c72668 100644 --- a/.azuredevops/pipelines/build-v2.yml +++ b/.azuredevops/pipelines/build-v2.yml @@ -18,9 +18,20 @@ parameters: type: string default: ' ' # default value; if no default, then the parameter MUST be given by the user at runtime -variables: - baseSourceDirectory: $(Build.SourcesDirectory)/Source - dockerComposeDirectory: $(baseSourceDirectory)/DockerCompose +resources: + repositories: + - repository: shared-code-scanning + type: git + name: Common/shared-code-scanning + ref: refs/heads/main + trigger: none + +variables: +- name: baseSourceDirectory + value: $(Build.SourcesDirectory)/Source +- name: dockerComposeDirectory + value: $(baseSourceDirectory)/DockerCompose +- group: PT-Pipeline-Common trigger: - develop @@ -28,7 +39,9 @@ trigger: - releases/* pool: - vmImage: ubuntu-latest + name: mdp-mgmt-shared + demands: + - ImageOverride -equals $(PipelineHostLinuxImage) jobs: - job: Build @@ -66,6 +79,11 @@ jobs: repository: mock-data-recipient tags: latest + - template: templates/scan-image.yml@shared-code-scanning + parameters: + Repository: mock-data-recipient + Tag: latest + # Login to Shared ACR - task: Docker@2 displayName: Login to Shared ACR @@ -186,7 +204,7 @@ jobs: displayName: Publish container images # condition: always() inputs: - path: $(build.artifactstagingdirectory) + path: $(build.artifactstagingdirectory)/mock-data-recipient.image.tar artifact: Container Images # Publish mock-data-recipient unit tests results @@ -234,16 +252,10 @@ jobs: performMultiLevelLookup: true - task: CmdLine@2 - displayName: 'Install dotnet-ef' - condition: always() - inputs: - script: 'dotnet tool install --version 8.0.4 --global dotnet-ef' - - - task: CmdLine@2 - displayName: 'Check dotnet-ef version' + displayName: 'Restore dotnet tooling' condition: always() inputs: - script: 'dotnet-ef' + script: 'dotnet tool restore' - script: | cd $(baseSourceDirectory)/CDR.DataRecipient.Repository.SQL diff --git a/.azuredevops/pipelines/dotnet.yml b/.azuredevops/pipelines/dotnet.yml index d747f34..a713e7c 100644 --- a/.azuredevops/pipelines/dotnet.yml +++ b/.azuredevops/pipelines/dotnet.yml @@ -16,7 +16,9 @@ variables: - group: PT-Pipeline-Common pool: - vmImage: $(Pipeline_Host_Image) + name: mdp-mgmt-shared + demands: + - ImageOverride -equals $(PipelineHostLinuxImage) steps: diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 0000000..670615e --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "8.0.27", + "commands": [ + "dotnet-ef" + ], + "rollForward": false + }, + "trxtoextentreport": { + "version": "0.0.4", + "commands": [ + "TrxToExtentReport" + ], + "rollForward": false + } + } +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index b265536..8f88bf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [3.0.5] - 2026-07-08 +### Changed +- Updated nuget package versions +### Fixed +- Fixed multiple E2E tests by making them independent, also fixed some minor issues. + +## [3.0.4] - 2026-03-18 +### Fixed +- Upgrade packages to address vulnerabilities ## [3.0.3] - 2025-12-03 ### Fixed - Upgrade multiple packages to address vulnerabilities diff --git a/Source/CDR.DCR/CDR.DCR.csproj b/Source/CDR.DCR/CDR.DCR.csproj index a43ba0d..1ac2463 100644 --- a/Source/CDR.DCR/CDR.DCR.csproj +++ b/Source/CDR.DCR/CDR.DCR.csproj @@ -2,20 +2,21 @@ v4 <_FunctionsSkipCleanOutput>true - $(TargetFrameworkVersion) - $(Version) - $(Version) - $(Version) + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) Exe enabled - - - - - - + + + + + + + diff --git a/Source/CDR.DataRecipient.API.Logger/CDR.DataRecipient.API.Logger.csproj b/Source/CDR.DataRecipient.API.Logger/CDR.DataRecipient.API.Logger.csproj index 012850c..f203f66 100644 --- a/Source/CDR.DataRecipient.API.Logger/CDR.DataRecipient.API.Logger.csproj +++ b/Source/CDR.DataRecipient.API.Logger/CDR.DataRecipient.API.Logger.csproj @@ -2,26 +2,26 @@ enable enable - $(TargetFrameworkVersion) - $(Version) - $(Version) - $(Version) - True + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + True - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive - - all - runtime; build; native; contentfiles; analyzers; buildtransitive + + all + runtime; build; native; contentfiles; analyzers; buildtransitive \ No newline at end of file diff --git a/Source/CDR.DataRecipient.E2ETests/CDR.DataRecipient.E2ETests.csproj b/Source/CDR.DataRecipient.E2ETests/CDR.DataRecipient.E2ETests.csproj index aa41951..6e01535 100644 --- a/Source/CDR.DataRecipient.E2ETests/CDR.DataRecipient.E2ETests.csproj +++ b/Source/CDR.DataRecipient.E2ETests/CDR.DataRecipient.E2ETests.csproj @@ -1,10 +1,10 @@  false - $(TargetFrameworkVersion) - $(Version) - $(Version) - $(Version) + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) @@ -21,21 +21,21 @@ - - - - - - - + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all - + diff --git a/Source/CDR.DataRecipient.E2ETests/Pages/ParPage.cs b/Source/CDR.DataRecipient.E2ETests/Pages/ParPage.cs index 17fd8c2..7131dcb 100644 --- a/Source/CDR.DataRecipient.E2ETests/Pages/ParPage.cs +++ b/Source/CDR.DataRecipient.E2ETests/Pages/ParPage.cs @@ -139,8 +139,8 @@ public async Task ErrorExists(string errorToCheckFor) { try { - var element = await _page.WaitForSelectorAsync($"//*[contains(.,\"{errorToCheckFor}\")]"); - return await element.IsVisibleAsync(); + var isVisible = await _page.GetByText(errorToCheckFor).IsVisibleAsync(); + return isVisible; } catch (TimeoutException) { } { diff --git a/Source/CDR.DataRecipient.E2ETests/US23863_MDR_E2ETests.cs b/Source/CDR.DataRecipient.E2ETests/US23863_MDR_E2ETests.cs index 526d232..c129a09 100644 --- a/Source/CDR.DataRecipient.E2ETests/US23863_MDR_E2ETests.cs +++ b/Source/CDR.DataRecipient.E2ETests/US23863_MDR_E2ETests.cs @@ -94,6 +94,7 @@ await TestAsync($"{nameof(US23863_MDR_E2ETests)} - {nameof(AC01_HomePage)}", asy [Fact] public async Task AC02_01_DiscoverDataHolders_Banking() { + PurgeMDR(); await TestAsync($"{nameof(US23863_MDR_E2ETests)} - {nameof(AC02_01_DiscoverDataHolders_Banking)}", async (page) => { await DataHolders_Discover(page, "BANKING", "2", 30); @@ -128,15 +129,15 @@ await TestAsync($"{nameof(US23863_MDR_E2ETests)} - {nameof(AC02_04_DiscoverDataH } [Theory] - [InlineData("ALL", "3", null, "NotAcceptable - Not Acceptable")] + [InlineData("ALL", "4", null, "NotAcceptable - Not Acceptable")] [InlineData("ALL", "foo", null, "BadRequest - Bad Request")] - [InlineData("BANKING", "3", null, "NotAcceptable - Not Acceptable")] + [InlineData("BANKING", "4", null, "NotAcceptable - Not Acceptable")] [InlineData("BANKING", "foo", null, "BadRequest - Bad Request")] - [InlineData("ENERGY", "3", null, "NotAcceptable - Not Acceptable")] + [InlineData("ENERGY", "4", null, "NotAcceptable - Not Acceptable")] [InlineData("ENERGY", "foo", null, "BadRequest - Bad Request")] - [InlineData("TELCO", "3", null, "NotAcceptable - Not Acceptable")] + [InlineData("TELCO", "4", null, "NotAcceptable - Not Acceptable")] [InlineData("TELCO", "foo", null, "BadRequest - Bad Request")] - public async Task AC02_99_DiscoverDataHolders(string industry = "ALL", string version = "2", int? expectedRecords = 32, string? expectedError = null) + public async Task AC02_99_DiscoverDataHolders(string industry = "ALL", string version = "3", int? expectedRecords = 32, string? expectedError = null) { await TestAsync($"{nameof(US23863_MDR_E2ETests)} - {nameof(AC02_99_DiscoverDataHolders)} - Industry={industry} - Version={version}", async (page) => { @@ -148,7 +149,8 @@ await TestAsync($"{nameof(US23863_MDR_E2ETests)} - {nameof(AC02_99_DiscoverDataH [InlineData("BANKING", "1", DR_BRANDID, DR_SOFTWAREPRODUCTID, "NotAcceptable")] [InlineData("BANKING", "2", DR_BRANDID, DR_SOFTWAREPRODUCTID, "NotAcceptable")] [InlineData("BANKING", "3", DR_BRANDID, DR_SOFTWAREPRODUCTID, "OK - SSA Generated")] - [InlineData("BANKING", "4", DR_BRANDID, DR_SOFTWAREPRODUCTID, "NotAcceptable")] + [InlineData("ALL", "4", DR_BRANDID, DR_SOFTWAREPRODUCTID, "OK - SSA Generated")] + [InlineData("BANKING", "5", DR_BRANDID, DR_SOFTWAREPRODUCTID, "NotAcceptable")] public async Task AC03_GetSSA(string industry, string version, string drBrandId, string drSoftwareProductId, string expectedMessage) { await TestAsync($"{nameof(US23863_MDR_E2ETests)} - {nameof(AC03_GetSSA)} - Version={version} - DR_BrandId={drBrandId} - DR_SoftwareProductId={drSoftwareProductId}", async (page) => diff --git a/Source/CDR.DataRecipient.E2ETests/US46331_MDR_E2ETests_ParFapi.cs b/Source/CDR.DataRecipient.E2ETests/US46331_MDR_E2ETests_ParFapi.cs index a1f70b9..ff2d65e 100644 --- a/Source/CDR.DataRecipient.E2ETests/US46331_MDR_E2ETests_ParFapi.cs +++ b/Source/CDR.DataRecipient.E2ETests/US46331_MDR_E2ETests_ParFapi.cs @@ -30,7 +30,7 @@ public async Task AC04_AC0_AC06_AC07_InvalidParRequests(string scenarioName, str string? dhClientId = null; await ArrangeAsync(testName, async (page) => { - + await DataHolders_Discover(page, "ALL", "2", -1); // get all dh brands var responseTypeForRegCreation = useDefaultResponseTypeForDCR != null && useDefaultResponseTypeForDCR == true ? "code" : responseType; dhClientId = await ClientRegistration_Create(page, dhBrandId, responseTypes: responseTypeForRegCreation) diff --git a/Source/CDR.DataRecipient.E2ETests/US46352_MDR_E2ETests_AuthCodeFlowJarm.cs b/Source/CDR.DataRecipient.E2ETests/US46352_MDR_E2ETests_AuthCodeFlowJarm.cs index 620c3f9..d19b58f 100644 --- a/Source/CDR.DataRecipient.E2ETests/US46352_MDR_E2ETests_AuthCodeFlowJarm.cs +++ b/Source/CDR.DataRecipient.E2ETests/US46352_MDR_E2ETests_AuthCodeFlowJarm.cs @@ -42,6 +42,7 @@ public async Task AC01_AC03_AC04_AC05_AC19_Valid_Authorisation_Code_Par(string t string? dhClientId = null; await ArrangeAsync(testName, async (page) => { + await DataHolders_Discover(page, "ALL", "2", -1); // get all dh brands dhClientId = await ClientRegistration_Create(page, dhBrandId, jarmSigningAlgo: jarmSigningAlgo, jarmEncrypAlg: jarmEncryptAlg, jarmEncryptEnc: jarmEncryptEnc, responseTypes: "code") ?? throw new NullReferenceException(nameof(dhClientId)); }); @@ -249,10 +250,10 @@ await CleanupAsync(async (page) => } [Theory] - [InlineData("Iss_Missing", null, "USE_VALID_AUD", DEFAULT_JWT_EXP_IN_SECONDS, "Token Validation Failed (IDX10211): Unable to validate issuer. The 'issuer' parameter is null or whitespace", "'iss' is blank in simulated callback.")] + [InlineData("Iss_Missing", null, "USE_VALID_AUD", DEFAULT_JWT_EXP_IN_SECONDS, "Token Validation Failed (IDX10211): Issuer validation failed. Unable to validate issuer. The 'issuer' parameter is null or whitespace", "'iss' is blank in simulated callback.")] [InlineData("Iss_Mismatch", "foo", "USE_VALID_AUD", DEFAULT_JWT_EXP_IN_SECONDS, "Token Validation Failed (IDX10205): Issuer validation failed. Issuer: 'foo'.", "'iss' is different to the expected client Id in simulated callback.")] [InlineData("Aud_Missing", "USE_VALID_ISS", null, DEFAULT_JWT_EXP_IN_SECONDS, "Token Validation Failed (IDX10206): Unable to validate audience. The 'audiences' parameter is empty.", "'aud' is blank in simulated callback.")] - [InlineData("Aud_Mismatch", "USE_VALID_ISS", "foo", DEFAULT_JWT_EXP_IN_SECONDS, "Token Validation Failed (IDX10214): Audience validation failed. Audiences: 'foo'.", "'aud' is different to the expected uri in simulated callback..")] + [InlineData("Aud_Mismatch", "USE_VALID_ISS", "foo", DEFAULT_JWT_EXP_IN_SECONDS, "Token Validation Failed (IDX10214): Audience validation failed.", "'aud' is different to the expected uri in simulated callback..")] [InlineData("missing_Exp", "USE_VALID_ISS", "USE_VALID_AUD", null, "Token Validation Failed (IDX10225): Lifetime validation failed. The token is missing an Expiration Time.", "'exp' is blank in simulated callback.")] [InlineData("Expired_Token", "USE_VALID_ISS", "USE_VALID_AUD", "-500", "Token Validation Failed (IDX10223): Lifetime validation failed. The token is expired.", "JWT has expired. (now - 500 seconds)")] public async Task AC12_AC13_AC14_AC15_Jwt_Missing_And_Mismatch_Metadata(string testSuffix, string? issuer, string? audience, string? jwtExpiry, string expectedError, string becauseText) @@ -263,6 +264,7 @@ public async Task AC12_AC13_AC14_AC15_Jwt_Missing_And_Mismatch_Metadata(string t string? dhClientId = null; await ArrangeAsync(testName, async (page) => { + await DataHolders_Discover(page, "ALL", "2", -1); // get all dh brands dhClientId = await CreateBankingRegistration(page, "code"); }); diff --git a/Source/CDR.DataRecipient.IntegrationTests/CDR.DataRecipient.IntegrationTests.csproj b/Source/CDR.DataRecipient.IntegrationTests/CDR.DataRecipient.IntegrationTests.csproj index d85fa96..f84e28e 100644 --- a/Source/CDR.DataRecipient.IntegrationTests/CDR.DataRecipient.IntegrationTests.csproj +++ b/Source/CDR.DataRecipient.IntegrationTests/CDR.DataRecipient.IntegrationTests.csproj @@ -1,34 +1,34 @@  false - $(TargetFrameworkVersion) - $(Version) - $(Version) - $(Version) + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) - - - - - - - - - - + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all - + diff --git a/Source/CDR.DataRecipient.Repository.SQL/CDR.DataRecipient.Repository.SQL.csproj b/Source/CDR.DataRecipient.Repository.SQL/CDR.DataRecipient.Repository.SQL.csproj index ed2bb87..a90fbc7 100644 --- a/Source/CDR.DataRecipient.Repository.SQL/CDR.DataRecipient.Repository.SQL.csproj +++ b/Source/CDR.DataRecipient.Repository.SQL/CDR.DataRecipient.Repository.SQL.csproj @@ -1,33 +1,34 @@  - $(TargetFrameworkVersion) - $(Version) - $(Version) - $(Version) - True + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + True - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive - - all - runtime; build; native; contentfiles; analyzers; buildtransitive + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Source/CDR.DataRecipient.Repository.SQL/SqlDataAccess.cs b/Source/CDR.DataRecipient.Repository.SQL/SqlDataAccess.cs index aaef09d..4ba32c1 100644 --- a/Source/CDR.DataRecipient.Repository.SQL/SqlDataAccess.cs +++ b/Source/CDR.DataRecipient.Repository.SQL/SqlDataAccess.cs @@ -89,9 +89,8 @@ public async Task> GetConsents(string clientId, SqlDataReader reader = await sqlCommand.ExecuteReaderAsync(); while (await reader.ReadAsync()) { - var cdrArrangement = new ConsentArrangement(); var jsonDocument = Convert.ToString(reader.GetString(2)); - cdrArrangement = JsonConvert.DeserializeObject(jsonDocument, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); + var cdrArrangement = JsonConvert.DeserializeObject(jsonDocument, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); // Check if the arrangement belongs to the same data holder. if (string.IsNullOrEmpty(dataHolderBrandId) || cdrArrangement.DataHolderBrandId.Equals(dataHolderBrandId, StringComparison.OrdinalIgnoreCase)) diff --git a/Source/CDR.DataRecipient.SDK/CDR.DataRecipient.SDK.csproj b/Source/CDR.DataRecipient.SDK/CDR.DataRecipient.SDK.csproj index b4f8f35..9abe8c0 100644 --- a/Source/CDR.DataRecipient.SDK/CDR.DataRecipient.SDK.csproj +++ b/Source/CDR.DataRecipient.SDK/CDR.DataRecipient.SDK.csproj @@ -1,25 +1,25 @@  - $(TargetFrameworkVersion) - $(Version) - $(Version) - $(Version) - True + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + True - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive - - all - runtime; build; native; contentfiles; analyzers; buildtransitive + + all + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Source/CDR.DataRecipient.Web/CDR.DataRecipient.Web.csproj b/Source/CDR.DataRecipient.Web/CDR.DataRecipient.Web.csproj index 09204bd..970cf30 100644 --- a/Source/CDR.DataRecipient.Web/CDR.DataRecipient.Web.csproj +++ b/Source/CDR.DataRecipient.Web/CDR.DataRecipient.Web.csproj @@ -3,11 +3,11 @@ win-x64;linux-x64 e18cd40c-c7d1-4df4-8448-82de536a628c Linux - $(TargetFrameworkVersion) - $(Version) - $(Version) - $(Version) - True + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + True @@ -18,39 +18,39 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive - - all - runtime; build; native; contentfiles; analyzers; buildtransitive + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Source/CDR.DataRecipient.Web/Views/Consent/Callback.cshtml b/Source/CDR.DataRecipient.Web/Views/Consent/Callback.cshtml index f3eeefc..c55740c 100644 --- a/Source/CDR.DataRecipient.Web/Views/Consent/Callback.cshtml +++ b/Source/CDR.DataRecipient.Web/Views/Consent/Callback.cshtml @@ -35,12 +35,9 @@ Could not retrieve token from Data Holder
@Model.Messages
    - @foreach (var error in Model.ErrorList.Errors) + @foreach (var error in Model.ErrorList.Errors.Where(e => !string.IsNullOrEmpty(e.Title))) { - @if (!string.IsNullOrEmpty(@error.Title)) - { -
  • @error.Title (@error.Code): @error.Detail
  • - } +
  • @error.Title (@error.Code): @error.Detail
  • }
} diff --git a/Source/CDR.DataRecipient.Web/Views/DataHolders/Index.cshtml b/Source/CDR.DataRecipient.Web/Views/DataHolders/Index.cshtml index 8a96400..4c05862 100644 --- a/Source/CDR.DataRecipient.Web/Views/DataHolders/Index.cshtml +++ b/Source/CDR.DataRecipient.Web/Views/DataHolders/Index.cshtml @@ -3,9 +3,7 @@ var allowDataHolderRefresh = await _featureManager.IsEnabledAsync(nameof(Feature.AllowDataHolderRefresh)); } @using CDR.DataRecipient.SDK.Enumerations -@using CDR.DataRecipient.Web.Extensions @using CDR.DataRecipient.Web.Features -@using Microsoft.AspNetCore.Http @using Microsoft.Extensions.Configuration @using Microsoft.FeatureManagement @inject IConfiguration _config @@ -84,7 +82,7 @@ else
@(allowDataHolderRefresh ? "Current Data Holders" : "Data Holder Brands")

- @if (@Model.DataHolders.Count() > 0) + @if (@Model.DataHolders.Any()) { diff --git a/Source/CDR.DataRecipient.Web/Views/DynamicClientRegistration/Index.cshtml b/Source/CDR.DataRecipient.Web/Views/DynamicClientRegistration/Index.cshtml index d0df929..1eb21ed 100644 --- a/Source/CDR.DataRecipient.Web/Views/DynamicClientRegistration/Index.cshtml +++ b/Source/CDR.DataRecipient.Web/Views/DynamicClientRegistration/Index.cshtml @@ -13,7 +13,6 @@ @using CDR.DataRecipient.SDK.Extensions @using CDR.DataRecipient.Web.Extensions @using CDR.DataRecipient.Web.Features -@using Microsoft.AspNetCore.Http @using Microsoft.Extensions.Configuration @using Microsoft.FeatureManagement @inject IConfiguration _config @@ -230,7 +229,7 @@ else
Current Dynamic Client Registrations

- @if (@Model.Registrations.Count() > 0) + @if (@Model.Registrations.Any()) {

CDR Data Holders
@@ -303,7 +302,7 @@ else
Failed Dynamic Client Registrations

- @if (@Model.FailedDCRMessages.Count() > 0) + @if (@Model.FailedDCRMessages.Any()) {

CDR Current Registrations
diff --git a/Source/CDR.DataRecipient/CDR.DataRecipient.csproj b/Source/CDR.DataRecipient/CDR.DataRecipient.csproj index 6eeb89e..d591918 100644 --- a/Source/CDR.DataRecipient/CDR.DataRecipient.csproj +++ b/Source/CDR.DataRecipient/CDR.DataRecipient.csproj @@ -1,19 +1,19 @@  - $(TargetFrameworkVersion) - $(Version) - $(Version) - $(Version) - True + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + True - - all - runtime; build; native; contentfiles; analyzers; buildtransitive + + all + runtime; build; native; contentfiles; analyzers; buildtransitive - - all - runtime; build; native; contentfiles; analyzers; buildtransitive + + all + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Source/CDR.DiscoverDataHolders/CDR.DiscoverDataHolders.csproj b/Source/CDR.DiscoverDataHolders/CDR.DiscoverDataHolders.csproj index fea4540..cce3664 100644 --- a/Source/CDR.DiscoverDataHolders/CDR.DiscoverDataHolders.csproj +++ b/Source/CDR.DiscoverDataHolders/CDR.DiscoverDataHolders.csproj @@ -2,21 +2,22 @@ v4 <_FunctionsSkipCleanOutput>true - $(TargetFrameworkVersion) - $(Version) - $(Version) - $(Version) + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) Exe enabled - - - - - - - + + + + + + + + diff --git a/Source/DataRecipient.sln b/Source/DataRecipient.sln index adb00dc..5573a08 100644 --- a/Source/DataRecipient.sln +++ b/Source/DataRecipient.sln @@ -15,6 +15,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject .dockerignore = .dockerignore .editorconfig = .editorconfig + Directory.Build.props = Directory.Build.props + Directory.Packages.props = Directory.Packages.props docker-compose.E2ETests.yml = docker-compose.E2ETests.yml docker-compose.IntegrationTests.yml = docker-compose.IntegrationTests.yml docker-compose.UnitTests.yml = docker-compose.UnitTests.yml diff --git a/Source/Directory.Build.props b/Source/Directory.Build.props index 3c06068..bb52568 100644 --- a/Source/Directory.Build.props +++ b/Source/Directory.Build.props @@ -1,7 +1,7 @@ net8.0 - 3.0.3 + 3.0.5 true true true diff --git a/Source/Directory.Packages.props b/Source/Directory.Packages.props new file mode 100644 index 0000000..c94daa3 --- /dev/null +++ b/Source/Directory.Packages.props @@ -0,0 +1,58 @@ + + + true + true + $(NoWarn);NU1507 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Dockerfile b/Source/Dockerfile index 12be9ad..1a8f35a 100644 --- a/Source/Dockerfile +++ b/Source/Dockerfile @@ -14,7 +14,7 @@ WORKDIR /src COPY . ./ FROM build AS publish - +COPY ./Directory.Packages.props /app/Directory.Packages.props COPY ./Directory.Build.props /app/Directory.Build.props COPY ./.editorconfig /app/.editorconfig diff --git a/Source/Dockerfile.e2e-tests b/Source/Dockerfile.e2e-tests index b936992..c5f60b2 100644 --- a/Source/Dockerfile.e2e-tests +++ b/Source/Dockerfile.e2e-tests @@ -1,7 +1,7 @@ # Dockerfile for E2E tests # NB: Ensure playwright version used in CDR.DataRecipient.E2ETests and base image below are same (ie currently 1.43.0) -FROM mcr.microsoft.com/playwright/dotnet:v1.43.0-jammy AS build +FROM mcr.microsoft.com/playwright/dotnet:v1.60.0-noble AS build ############################################################################### # Build E2E tests diff --git a/Source/Dockerfile.mdr.integration-tests b/Source/Dockerfile.mdr.integration-tests index 62f548a..3964bb5 100644 --- a/Source/Dockerfile.mdr.integration-tests +++ b/Source/Dockerfile.mdr.integration-tests @@ -11,7 +11,7 @@ WORKDIR /src COPY . ./ FROM build AS publish - +COPY ./Directory.Packages.props /app/Directory.Packages.props COPY ./Directory.Build.props /app/Directory.Build.props COPY ./.editorconfig /app/.editorconfig
CDR Failed Registrations