This project includes source code, documentation and instructions for a Consumer Data Right (CDR) Mock Data Holder.
This repository contains a mock implementation of a Data Holder and is offered to help the community in the development and testing of their CDR solutions.
The Mock Data Holder solution can be configured for Banking or Energy industries.
The Mock Data Holder:
The Mock Data Holder uses the Authorisation Server, the Mock Register and the Mock Data Recipient. You can swap out any of the Mock Data Holder, Mock Register and Mock Data Recipient solutions with a solution of your own.
There are a number of ways that the artefacts within this project can be used:
To get started, clone the source code.
git clone https://github.com/ConsumerDataRight/mock-data-holder.git
Starting from version 1.2.0, the Mock Data Holder now utilises the Authorisation Server as an Identity Provider. The Authorisation Server also needs to be running when running the Mock Data Holder. The Authorisation Server repository can be cloned using following command.
git clone https://github.com/ConsumerDataRight/authorisation-server.git ./cdr-auth-server
To get help on setting the industry profile, launching and debugging the solution, see the help guide.
If you would like to contribute features or fixes back to the Mock Data Holder repository, consult the contributing guidelines.
Docker images are available in Docker Hub for the Banking and Energy Mock Data Holders.
Note: Starting from version 1.2.0, the Identity Server has been replaced with the Authorisation Server. Although the Authorisation Server exists as a separate repository, when the mock-data-holder banking or energy image is built for Docker, the Authorization Server is copied into the image, replacing Identity Server 4.
Run the following command to pull the latest Banking Mock Data Holder image from Docker Hub:
docker pull consumerdataright/mock-data-holder:latest
Run the following command to pull the latest Energy Mock Data Holder image from Docker Hub:
docker pull consumerdataright/mock-data-holder-energy:latest
To get help on setting the industry as Banking or Energy, launching and debugging the solutions as containers and switching out your solution(s), see the help guide.
The OpenID Connect Discovery documents for the Mock Data Holders can be viewed by accessing:
Mock Data Holder Banking
https://localhost:8001/.well-known/openid-configuration
Mock Data Holder Energy
https://localhost:8101/.well-known/openid-configuration
The Mock Data Recipient has been built as a test harness to demonstrate the interactions between the Register and Mock Data Holders. The Mock Data Recipient can be used to perform a Dynamic Client Registration, create Consent Arrangements and explore Mock Data Holder API's. The provided help guide will assist in setting up the Mock CDR Ecosystem in Docker.
Consult the Certificate Management documentation for more information about how certificates are used for the Mock Data Holder.
When the Mock Data Holder container first starts it will load data from the included seed-data-{industry}.json
file that is included in the CDR.DataHolder.Manage.API
project. Running the Mock Data Holder using the Banking profile will load data from the seed-data-banking.json
file.
Running the Mock Data Holder using the Energy profile will load data from the seed-data-energy.json
file. The files include dummy banking and energy data (customers, accounts, banking transactions, energy concessions) as well as data recipient metadata that can be obtained from the Register. When calls are made to the Resource API the dummy banking or energy data is returned.
There are a couple of ways to load your own data into the container instance:
seed-data.json
file within the Mock Data Holder container
/app/manage/Data
folder of the container, make a copy of the seed-data-{industry}.json
file, renaming to a name of your choice, e.g. my-seed-data.json
./app/manage/appsettings.json
file to load the new data file and overwrite the existing data:"SeedData": {
"FilePath": "Data/my-seed-data.json",
"OverwriteExistingData": true
},
The Mock Data Holder includes a Manage Metadata API that allows metadata to be re-loaded into the repository.
To re-load the repository with metadata make the following request to the Manage API:
Note: calling this API will delete all existing metadata and re-load with the provided metadata
Mock Data Holder Banking
POST https://localhost:8005/manage/metadata
{
<JSON metadata - as per the GET /manage/metadata response or seed-data.json file>
}
Mock Data Holder Energy
POST https://localhost:8105/manage/metadata
{
<JSON metadata - as per the GET /manage/metadata response or seed-data.json file>
}
Note: there is currently no authentication/authorisation applied to the Manage API endpoints as these are seen to be under the control of the container owner. This can be added if there is community feedback to that effect or if a pull request is submitted.
The docker compose file can be used to run multiple containers from the Mock CDR Ecosystem.
Note: the docker compose file utilises the Microsoft SQL Server Image from Docker Hub. The Microsoft EULA for the Microsoft SQL Server Image must be accepted to use the docker compose file. See the Microsoft SQL Server Image on Docker Hub for more information.
To get help on launching and debugging the solutions as containers and switching out your solution(s), see the help guide.
Data Holders require these core functions defined in the Consumer Data Standards to operate in the Consumer Data Right:
The Mock Data Holder combined with the 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.
Switching between Banking and Energy is achieved by starting the projects needed for the given industry and using industry specific data and ports. The below diagrams display which projects are started depending on the industry profile. The diagrams also illustrate which of the Data Holder functions are shared across industries.
The following sections outline the high level architecture and components of the Mock Data Holder:
The Mock Data Holder contains the following components:
https://localhost:8000
Get Status
and Get Outages
. port 8000
.https://localhost:8001
https://localhost:8002
Get Accounts
and Get Transactions
endpoints hosted at https://localhost:8003
.Get Customer
endpoint hosted at https://localhost:8006
.https://localhost:8005
The Mock Data Holder contains the following components:
https://localhost:8100
Get Status
and Get Outages
. port 8100
.https://localhost:8101
https://localhost:8102
Get Accounts
and Get Concessions
endpoints hosted at https://localhost:8103
.Get Customer
endpoint hosted at https://localhost:8106
.https://localhost:8105
The following technologies have been used to build the Mock Data Holder:
C#
using the .Net 8
framework.Ocelot
.SQL
instance.xUnit
is the framework used for writing and running tests.Microsoft Playwright
is the framework used for Web Testing.Automated integrated tests have been created as part of this solution. See the Test Automation Execution Guide documentation for more information.
We encourage contributions from the community. See our contributing guidelines.
This project has adopted the Contributor Covenant. For more information see the code of conduct.
See our security policy for information on security controls, reporting a vulnerability and supported versions.
The Mock Data Holder is provided as a development tool only. It conforms to the Consumer Data Standards.