Skip to content

A mock version of a Consumer Data Right Data Holder solution that can be used in the development and testing of CDR solutions

License

Notifications You must be signed in to change notification settings

mark202/mock-data-holder

 
 

Repository files navigation

Consumer Data Right Logo

Consumer Data Standards v1.18.0 Conformance Test Suite 4.0 FAPI 1.0 Advanced Profile made-with-dotnet made-with-csharp MIT License Pull Requests Welcome

Consumer Data Right - Mock Data Holder

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 Mock Data Holder and is offered to help the community in the development and testing of their CDR solutions.

Mock Data Holder - Alignment

The Mock Data Holder aligns to v1.18.0 of the Consumer Data Standards. The Mock Data Holder passed v4.0 of the Conformance Test Suite for Data Holders. The Mock Data Holder is compliant with the FAPI 1.0 Advanced Profile. The Mock Data Holder aligns to FAPI 1.0 Migration Phase 1 and Phase 2. Phase 1 requirements are switched on by default. Configuration has been added to allow switching on Phase 2 requirements.

Getting Started

The Mock Data Holder was built using the Mock Register and the Mock Data Recipient. You can swap out any of the Mock Data Holder, Mock Data 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:

  1. Build and deploy the source code
  2. Use the pre-built image
  3. Use the docker compose file to run a multi-container mock CDR Ecosystem

Build and deploy the source code

To get started, clone the source code.

git clone https://github.com/ConsumerDataRight/mock-data-holder.git

To get help on 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.

Use the pre-built image

A version of the Mock Data Holder is built into a single Docker image that is made available via docker hub.

Pull the latest image

docker pull consumerdataright/mock-data-holder

To get help on launching and debugging the solutions as containers and switching out your solution(s), see the help guide.

Try it out

Once the Mock Data Holder container is running, you can use the provided Mock Data Holder Postman API collection to try it out.

Certificate Management

Consult the Certificate Management documentation for more information about how certificates are used for the Mock Data Holder.

Loading your own data

When the Mock Data Holder container first starts it will load data from the included seed-data.json file that is included in the CDR.DataHolder.Manage.API project. This file includes dummy banking data (customers, accounts, transactions) as well as data recipient metadata that can be obtained from the Register. When calls are made to the Resource API the dummy banking data is returned. The data recipient metadata is used within the internal workings of the Mock Data Holder to check their status before responding to data sharing requests.

There are a couple of ways to load your own data into the container instance:

  1. Provide your own seed-data.json file within the Mock Data Holder container
  • Within the /app/manage/Data folder of the container, make a copy of the seed-data.json file, renaming to a name of your choice, e.g. my-seed-data.json.
  • Update your seed data file with your desired metadata.
  • Change the /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
},
  • Restart the container.
  1. Use the Manage API endpoint to load data

The Mock Data Holder includes a Manage API that allows metadata to be downloaded and uploaded from the repository.

To retrieve the current metadata held within the repository make the following request to the Manage API:

GET https://localhost:8005/manage/metadata

The response will be metadata in JSON format that conforms to the same structure of the seed-data.json file. This payload structure is also the same structure that is used to load new metadata via the Manage API.

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

POST https://localhost:8005/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.

Use the docker compose file to run a multi-container mock CDR Ecosystem

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.

Mock Data Holder - Architecture

The following diagram outlines the high level architecture of the Mock Data Holder:

Mock Data Holder - Architecture

Get Data Recipients discovery Azure Function:

Get Data Recipients discovery function

Mock Data Holder - Components

The Mock Data Holder contains the following components:

  • Public API
    • Hosted at https://localhost:8000
    • Contains the public discovery APIs - Get Status and Get Outages.
    • Accessed directly on port 8000.
  • Identity Provider
    • Hosted at https://localhost:8001
    • Mock Data Holder identity provider implementation utilising Identity Server 4
    • Accessed directly (TLS only) as well as the mTLS Gateway, depending on the target endpoint.
  • mTLS Gateway
    • Hosted at https://localhost:8002
    • Provides the base URL endpoint for mTLS communications, including Infosec, Resource and Admin APIs.
    • Performs certificate validation.
  • Resource API
    • Hosted at https://localhost:8003
    • Currently includes the Get Customer, Get Accounts and Get Transactions endpoints.
    • Accessed via the mTLS Gateway.
  • Manage API
    • Hosted at https://localhost:8005
    • Not part of the Consumer Data Standards, but allows for the maintenance of data in the Mock Data Holder repository.
    • Also includes trigger points to refresh the Data Recipient, Data Recipient Status and Software Product Status from the Mock Register.
    • A user interface may be added at some time in the future to provide user friendly access to the repository data.
  • Azure Function
    • An Azure Function that can automate the continuous Get Data Recipients discovery process.
    • To get help on the Azure Functions, see the help guide.
  • Repository
    • A SQL database containing Mock Data Holder data.

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 6 framework.
  • The Identity Provider is implemented using Identity Server 4.
  • The mTLS Gateway has been implemented using Ocelot.
  • The Repository utilises a SQL instance.

Testing

A collection of API requests has been made available in Postman in order to test the Mock Data Holder and view the expected interactions. See the Mock Data Holder Postman documentation for more information.

Contribute

We encourage contributions from the community. See our contributing guidelines.

Code of Conduct

This project has adopted the Contributor Covenant. For more information see the code of conduct.

License

MIT License

Notes

The Mock Data Holder is provided as a development tool only. It conforms to the Consumer Data Standards.

About

A mock version of a Consumer Data Right Data Holder solution that can be used in the development and testing of CDR solutions

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 86.3%
  • SCSS 12.0%
  • HTML 0.9%
  • PowerShell 0.3%
  • Batchfile 0.2%
  • Dockerfile 0.1%
  • Other 0.2%