Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .azuredevops/pipelines/build-v2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -424,18 +424,18 @@ jobs:
###################################################################################################

- task: UseDotNet@2
displayName: 'Use .NET 8 sdk'
displayName: 'Use .NET 10 sdk'
condition: always()
inputs:
packageType: sdk
version: '8.0.x'
version: '10.0.x'
performMultiLevelLookup: true

- task: CmdLine@2
displayName: 'Install dotnet-ef'
condition: always()
inputs:
script: 'dotnet tool install --version 8.0.4 --global dotnet-ef'
script: 'dotnet tool install --version 10.0.11 --global dotnet-ef'

- task: CmdLine@2
displayName: 'Check dotnet-ef version'
Expand All @@ -447,6 +447,7 @@ jobs:
# MDH Banking
- script: |
cd $(baseSourceDirectory)/Banking/CDR.DataHolder.Banking.Repository
dotnet restore
dotnet ef migrations bundle --context BankingDataHolderDatabaseContext --verbose --self-contained
ls
displayName: 'Run EF Migrations bundle (Banking)'
Expand All @@ -460,6 +461,7 @@ jobs:
# MDH Energy
- script: |
cd $(baseSourceDirectory)/Energy/CDR.DataHolder.Energy.Repository
dotnet restore
dotnet ef migrations bundle --context EnergyDataHolderDatabaseContext --verbose --self-contained
ls
displayName: 'Run EF Migrations bundle (Energy)'
Expand All @@ -473,7 +475,7 @@ jobs:
# CdrAuthServer
- script: |
cd $(Build.SourcesDirectory)/sb-mock-data-holder/Source/cdr-auth-server/Source/CdrAuthServer.Repository

dotnet restore
dotnet ef migrations bundle --context CdrAuthServerDatabaseContext --verbose --self-contained
ls
displayName: 'Run EF Migrations bundle (CdrAuthServer)'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:

- name: Build solution
run: |
dotnet build ./Source/DataHolder.sln --configuration 'Release'
dotnet build ./Source/DataHolder.slnx --configuration 'Release'

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
2 changes: 1 addition & 1 deletion .github/workflows/sonarcloud-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,5 +74,5 @@ jobs:
shell: powershell
run: |
.\.sonar\scanner\dotnet-sonarscanner begin /k:"ConsumerDataRight_mock-data-holder" /o:"consumerdataright" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io"
dotnet build .\source\DataHolder.sln
dotnet build .\source\DataHolder.slnx
.\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,17 @@ 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]

## [5.0.0] - 2026-09-30
### Changed
- Migrated from .NET 8 to .NET 10
- Migrated xUnit from v2 to v3
- Updated Swashbuckle and swagger pages
- Removed obsolete Get Energy Accounts V1 and Get Metrics V4 APIs
- Updated to use .NET 10 version of ConsumerDataRight.ParticipantTooling.MockSolution.TestAutomation
- Updated NuGet packages
- Migrate slnx files to slnx

## [4.0.5] - 2026-07-08
### Changed
- Updated NuGet packages
Expand Down
4 changes: 2 additions & 2 deletions Help/debugging/HELP.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ An output window will be launched for the Authorisation Server project showing t
## Run solution using MS Visual Studio

There are two Visual Studio solution files that are available for use:
- DataHolder.sln - This is the default solution file that is used primarily for running and debugging the Mock Data Holder projects.
- DataHolder_Shared.sln - In addition to the Mock Data Holder projects, this solution file also opens the [Mock Solutions Test Automation](https://github.com/ConsumerDataRight/mock-solution-test-automation) project. This is useful when wanting to debug or step through source code used in Mock Solution Test Automation project. Further information can be found in [Mock Data Holder Test Automation Execution Guide](../testing/HELP.md)
- DataHolder.slnx - This is the default solution file that is used primarily for running and debugging the Mock Data Holder projects.
- DataHolder_Shared.slnx - In addition to the Mock Data Holder projects, this solution file also opens the [Mock Solutions Test Automation](https://github.com/ConsumerDataRight/mock-solution-test-automation) project. This is useful when wanting to debug or step through source code used in Mock Solution Test Automation project. Further information can be found in [Mock Data Holder Test Automation Execution Guide](../testing/HELP.md)


### Start the Mock Data Holder Banking
Expand Down
4 changes: 2 additions & 2 deletions Help/testing/HELP.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ Tests can now be run using Microsoft Visual Studio.

The following steps detail the process of running tests using Microsoft Visual Studio's Test Explorer:

1. Open the [DataHolder.sln](../../Source/DataHolder.sln) solution file in Microsoft Visual Studio.
1. Open the [DataHolder.slnx](../../Source/DataHolder.slnx) solution file in Microsoft Visual Studio.
2. Build the solution.
3. Open the Test Explorer. If Test Explorer is not visible, choose 'Test' on the Visual Studio menu and then choose 'Test Explorer'.

Expand All @@ -175,7 +175,7 @@ This repository can be cloned using following command:
git clone https://github.com/ConsumerDataRight/mock-solution-test-automation.git
```

The [DataHolder_Shared.sln](../../Source/DataHolder_Shared.sln) solution has been created to allow for debugging and stepping through the source code used in Mock Solution Test Automation project.
The [DataHolder_Shared.slnx](../../Source/DataHolder_Shared.slnx) solution has been created to allow for debugging and stepping through the source code used in Mock Solution Test Automation project.

[<img src="./images/MS-Visual-Studio-View-Data-Holder-Shared-Solution.png" width='400' alt="Data Holder Shared Solution in Microsoft Visual Studio"/>](./images/MS-Visual-Studio-View-Data-Holder-Shared-Solution.png)

Expand Down
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
![Consumer Data Right Logo](./Assets/cdr-logo.png?raw=true)

[![Consumer Data Standards v1.34.0](https://img.shields.io/badge/Consumer%20Data%20Standards-v1.34.0-blue.svg)](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#introduction)
[![Conformance Test Suite Data Holders 5.2.0](https://img.shields.io/badge/Conformance%20Test%20Suite%20Data%20Holders-v5.2.0-darkblue.svg)](https://www.cdr.gov.au/for-providers/conformance-test-suite-data-holders)
[![Consumer Data Standards v1.36.0](https://img.shields.io/badge/Consumer%20Data%20Standards-v1.34.0-blue.svg)](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#introduction)
[![Conformance Test Suite Data Holders 5.3.0](https://img.shields.io/badge/Conformance%20Test%20Suite%20Data%20Holders-v5.3.0-darkblue.svg)](https://www.cdr.gov.au/for-providers/conformance-test-suite-data-holders)
[![FAPI 1.0 Advanced Profile](https://img.shields.io/badge/FAPI%201.0-orange.svg)](https://openid.net/specs/openid-financial-api-part-2-1_0.html)
[![made-with-dotnet](https://img.shields.io/badge/Made%20with-.NET-1f425Ff.svg)](https://dotnet.microsoft.com/)
[![made-with-csharp](https://img.shields.io/badge/Made%20with-C%23-1f425Ff.svg)](https://docs.microsoft.com/en-us/dotnet/csharp/)
Expand All @@ -17,8 +17,8 @@ The Mock Data Holder solution can be configured for Banking or Energy industries

## Mock Data Holder - Alignment
The Mock Data Holder:
* aligns to [v1.34.0](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#introduction) of the [Consumer Data Standards](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#introduction) in particular [FAPI 1.0 Migration Phase 3](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#introduction) with backwards compatibility to Migration Phase 2;
* has passed v5.2.0 of the [Conformance Test Suite for Data Holders](https://www.cdr.gov.au/for-providers/conformance-test-suite-data-holders); and
* aligns to [v1.36.0](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#introduction) of the [Consumer Data Standards](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#introduction) in particular [FAPI 1.0 Migration Phase 3](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#introduction) with backwards compatibility to Migration Phase 2;
* has passed v5.3.0 of the [Conformance Test Suite for Data Holders](https://www.cdr.gov.au/for-providers/conformance-test-suite-data-holders); and
* is compliant with the [FAPI 1.0 Advanced Profile](https://openid.net/specs/openid-financial-api-part-2-1_0.html).

## Getting Started
Expand Down Expand Up @@ -138,16 +138,16 @@ The [docker compose file](./Source/DockerCompose/docker-compose.yml) can be used
To get help on launching and debugging the solutions as containers and switching out your solution(s), see the [help guide](./Help/container/HELP.md).

## Mock Data Holder - Requirements
Data Holders require these core functions defined in the [Consumer Data Standards](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#introduction) to operate in the [Consumer Data Right](https://www.cdr.gov.au/):
- Identity Provider for [authentication and authorisation](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#security-profile). Compliant with OAuth and [FAPI 1.0 Advanced Profile](https://openid.net/specs/openid-financial-api-part-2-1_0.html).
- [Dynamic Client Registration](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#dcr-apis) to allow clients to register their Software Products.
- Data Recipient and Software Product metadata updates using the [Register APIs](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#register-apis).
Data Holders require these core functions defined in the [Consumer Data Standards](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#introduction) to operate in the [Consumer Data Right](https://www.cdr.gov.au/):
- Identity Provider for [authentication and authorisation](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#security-profile). Compliant with OAuth and [FAPI 1.0 Advanced Profile](https://openid.net/specs/openid-financial-api-part-2-1_0.html).
- [Dynamic Client Registration](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#dcr-apis) to allow clients to register their Software Products.
- Data Recipient and Software Product metadata updates using the [Register APIs](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#register-apis).
- Industry specific data (one of)
- [Banking APIs](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#banking-apis).
- [Energy APIs](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#energy-apis)
- [Banking APIs](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#banking-apis).
- [Energy APIs](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#energy-apis)
- Industry agnostic data
- [Common APIs](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#common-apis).
- [Metrics and metadata update requests](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.34.0/#admin-apis).
- [Common APIs](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#common-apis).
- [Metrics and metadata update requests](https://consumerdatastandardsaustralia.github.io/standards-archives/standards-1.36.0/#admin-apis).

The Mock Data Holder combined with the [Authorisation Server](https://github.com/ConsumerDataRight/authorisation-server) provides all of these functions for the Banking and Energy industries. The below diagram provides a view of the Mock Data Holder and and Authorisation Server when opened in an integrated development environment.

Expand Down Expand Up @@ -225,7 +225,7 @@ The Mock Data Holder contains the following components:
## Technology Stack

The following technologies have been used to build the Mock Data Holder:
- The source code has been written in `C#` using the `.Net 8` framework.
- The source code has been written in `C#` using the `.Net 10` framework.
- The Identity Provider is implemented using the [Authorisation Server](https://github.com/ConsumerDataRight/authorisation-server).
- The mTLS Gateway has been implemented using `Ocelot`.
- The Repository utilises a `SQL` instance.
Expand Down
3 changes: 2 additions & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ Visit our [Responsible disclosure of security vulnerabilities policy](https://ww

| Version | Supported |
| ------- | ------------------ |
| 4.0.x | :white_check_mark: |
| 5.x.x | :white_check_mark: |
| 4.x.x | :x: |
| 3.x.x | :x: |
| 2.x.x | :x: |
| 1.x.x | :x: |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="Moq" />
<PackageReference Include="xunit" />
<PackageReference Include="xunit.v3" />
<PackageReference Include="xunit.runner.visualstudio">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"Customers": [
{
"CustomerID": "4ee1a8db-13af-44d7-b54b-e94dff3df548",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId" : "jsmith",
"Person": {
"PersonID": "be36d5b8-8d92-4076-81c1-2260ba7e7272",
Expand Down Expand Up @@ -133,7 +133,7 @@
},
{
"CustomerID": "bfb689fb-7745-45b9-bbaa-b21e00072447",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "jwilson",
"Person": {
"PersonID": "3f0b4a8a-4f0a-49ac-b561-11903a072d22",
Expand Down Expand Up @@ -722,7 +722,7 @@
},
{
"CustomerID": "f0a87c57-9a98-401f-9012-b6ac0c882bf7",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "lbj",
"Person": {
"PersonID": "b4715700-aab1-42ad-a171-517a02738365",
Expand Down Expand Up @@ -758,7 +758,7 @@
},
{
"CustomerID": "aa649633-eed2-4e56-b97d-7df150360942",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "ksmith",
"Person": {
"PersonID": "3bf33bd5-a838-4a23-9fc1-a32ab92cf694",
Expand Down Expand Up @@ -1142,7 +1142,7 @@
},
{
"CustomerID": "dcb72d59-73e9-4807-9b1e-f3e2654190f4",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "ssmith",
"Person": {
"PersonID": "bfc3a55a-81c1-427a-8a30-7eeb85560f2f",
Expand Down Expand Up @@ -1178,7 +1178,7 @@
},
{
"CustomerID": "390b6e62-db5e-40b9-a0b8-dfb158b1326b",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "rray",
"Person": {
"PersonID": "c674766c-371d-41f2-a3a0-5681ea96c9a2",
Expand Down Expand Up @@ -1230,7 +1230,7 @@
},
{
"CustomerID": "1cdedda0-1669-4590-842a-fd5a4021dd30",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "pjay",
"Person": {
"PersonID": "3ff40f07-1798-4577-ae42-1c5d7329bce9",
Expand Down Expand Up @@ -1266,7 +1266,7 @@
},
{
"CustomerID": "3b7715c5-b7a6-4d4b-888e-fc2dadf3e91e",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "olee",
"Person": {
"PersonID": "045da794-b5f4-43e7-92f9-6b7f5c36abdf",
Expand Down Expand Up @@ -1302,7 +1302,7 @@
},
{
"CustomerID": "75455a64-d1d6-44b9-845c-8a9330e55937",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "ldame",
"Person": {
"PersonID": "0fe698a5-34a1-482b-93c7-55e5a47a8064",
Expand Down Expand Up @@ -1338,7 +1338,7 @@
},
{
"CustomerID": "6a1aaf2f-379c-45b7-ad54-f8104896c683",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "mmia",
"Person": {
"PersonID": "88041dea-f480-43d2-80be-555339fbac3d",
Expand Down Expand Up @@ -1374,7 +1374,7 @@
},
{
"CustomerID": "688e36cf-bfc7-46bb-855b-c70893daa800",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "dsteve",
"Person": {
"PersonID": "070e0ca0-cb17-41a4-ae05-937e70e0cb89",
Expand Down Expand Up @@ -1453,7 +1453,7 @@
},
{
"CustomerID": "4705eba7-daae-4dca-a1f9-12aa785a702f",
"CustomerUType": "PERSON",
"CustomerUType": "person",
"LoginId": "sken",
"Person": {
"PersonID": "9090793f-f366-48d3-99ae-c9ab4aefd0f1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public SeedDataFixture()

services.AddLogging(loggingBuilder => loggingBuilder.AddSerilog(dispose: true));

services.AddAutoMapper(typeof(Startup), typeof(BankingDataHolderDatabaseContext));
services.AddAutoMapper(cfg => { }, typeof(Startup).Assembly, typeof(BankingDataHolderDatabaseContext).Assembly);

services.AddScoped<IConfiguration>(c => configuration);
services.AddScoped<IBankingResourceRepository, BankingResourceRepository>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
<PackageReference Include="Serilog.Sinks.MSSqlServer" />
<PackageReference Include="Swashbuckle.AspNetCore" />
<PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
<PackageReference Include="Microsoft.EntityFrameworkCore" />
<PackageReference Include="SonarAnalyzer.CSharp">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using AutoMapper;
using Asp.Versioning;
using AutoMapper;
using CDR.DataHolder.Banking.Domain.Repositories;
using CDR.DataHolder.Banking.Resource.API.Business.Filters;
using CDR.DataHolder.Banking.Resource.API.Business.Models;
Expand All @@ -13,7 +14,6 @@
using CDR.DataHolder.Shared.Domain.Models;
using CDR.DataHolder.Shared.Domain.ValueObjects;
using CDR.DataHolder.Shared.Resource.API.Business.Filters;
using CDR.DataHolder.Shared.Resource.API.Infrastructure.Filters;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
Expand Down Expand Up @@ -57,8 +57,8 @@ public ResourceController(
[PolicyAuthorize(AuthorisationPolicy.GetAccountsApi)]
[HttpGet("v1/banking/accounts", Name = nameof(GetAccountsV2))]
[CheckScope(ApiScopes.Banking.AccountsBasicRead)]
[CheckXV(2, 2)]
[CheckAuthDate]
[SetVersionResponse(2)]
[ApiVersion("2")]
[ServiceFilter(typeof(LogActionEntryAttribute))]
public async Task<IActionResult> GetAccountsV2(
Expand Down Expand Up @@ -113,8 +113,8 @@ public async Task<IActionResult> GetAccountsV2(
[PolicyAuthorize(AuthorisationPolicy.GetTransactionsApi)]
[HttpGet("v1/banking/accounts/{accountId}/transactions", Name = nameof(GetTransactions))]
[CheckScope(ApiScopes.Banking.TransactionsRead)]
[CheckXV(1, 1)]
[CheckAuthDate]
[SetVersionResponse(1)]
[ApiVersion("1")]
[ServiceFilter(typeof(LogActionEntryAttribute))]
public async Task<IActionResult> GetTransactions([FromQuery] RequestAccountTransactions request)
Expand Down
Loading
Loading