Skip to main content
  1. Data-holder-testings/
  2. Self-hosted configuration/

AU Data Holder Testing

5 mins

This Wych Data Holder Tester (Tester) is the Wych probe for validating the state of a Data Holder solution, this has been designed to support Data Holder testing for ACCC CDR standards with each test verifying a rule as set out in the specifications.

graph BT; DH[Data Holder] --> REG[CDR Register] DR[Data Holder Tester] --> REG DR --> DH

Tester can share a Register and Register Auth instance but has a one-to-one relationship with a Data Holder. The Tester must co-exist with the register as it is responsible for configuring the register and validating the Data Holder to register communications. To accomplish this Tester must have access to the Register and the Registers datastore.

graph BT; DH1[Data Holder] --> REG[CDR Register Auth] DH2[Data Holder] --> REG DH3[Data Holder] --> REG DR1[Data Holder Tester] --> REG DR2[Data Holder Tester] --> REG DR3[Data Holder Tester] --> REG DR1 --> DH1 DR2 --> DH2 DR3 --> DH3

Requirements #

Tester requires a PostgreSQL 14+ relational database. Tester can utilise the same PostgreSQL service as the other non-production service but requires two separate schemas. The schema can be set in the search path to faciliate easy of connection.

The PostgreSQL jdbc syntax is:

jdbc:postgresql://[host]:[port]/[db-name]?currentSchema=[db-schema]

This can be organised as a database per app or a schema per database.

jdbc:postgresql://localhost:5432/testing?currentSchema=au-dataholder-tester
jdbc:postgresql://localhost:5432/au-dataholder-tester?currentSchema=public

Repository #

Tester can be pulled from the following repository. Check Changelog for the latest version.

docker pull wychaustralia.azurecr.io/au-dataholder-tester:[version]

Docker #

For the Tester to start you will need to set the following properties. If you are setting these as environment variables then use the UPPERCASE and replace . (dot) with _ (underscore).

Config #

Key Description
WYCH_BASE_URL The URL of this application, a self reference e.g. https://tester.host.tld
WYCH_REGISTER_URL The URL of the register application e.g. https://register.host.tld
WYCH_REGISTER_AUTH_URL The URL of register auth application e.g. https://auth.host.tld
DATAHOLDER_RESOURCE_ENDPOINT The resource endpoint of the Data Holder
DATAHOLDER_INFOSEC_ENDPOINT The infosec endpoint of the Data Holder
DATAHOLDER_ADMIN_ENDPOINT The admin endpoint of the Data Holder
DATAHOLDER_PUBLIC_ENDPOINT The public endpoint of the Data Holder
WYCH_DATASOURCE_JDBC_URL The database JDBC URL in the form jdbc:postgresql://{{host}}}:{{port}}}/{{db_name}}}
WYCH_DATASOURCE_USERNAME The database users name
WYCH_DATASOURCE_PASSWORD The database users password
Option config
WYCH_DATASOURCE_TESTER_JDBC_URL The database JDBC URL in the form jdbc:postgresql://{{host}}}:{{port}}}/{{db_name}}}
WYCH_DATASOURCE_TESTER_USERNAME The database users name
WYCH_DATASOURCE_TESTER_PASSWORD The database users password
WYCH_DATASOURCE_RECIPIENT_JDBC_URL The database JDBC URL in the form jdbc:postgresql://{{host}}}:{{port}}}/{{db_name}}}
WYCH_DATASOURCE_RECIPIENT_USERNAME The database users name
WYCH_DATASOURCE_RECIPIENT_PASSWORD The database users password
WYCH_DATASOURCE_REGISTER_JDBC_URL The database JDBC URL in the form jdbc:postgresql://{{host}}}:{{port}}}/{{db_name}}}
WYCH_DATASOURCE_REGISTER_USERNAME The database users name
WYCH_DATASOURCE_REGISTER_PASSWORD The database users password

Compose #

Here is a sample docker compose - this sets up the required DB and configures the Tester service.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
version: "3.7"
name: au-register
services:
  db:
    image: postgres
    init: true
    environment:
      PGDATA: /var/lib/postgresql/data/pgdata
      POSTGRES_USER: a-database-user
      POSTGRES_PASSWORD: a-database-password
    volumes:
      - au-register-data-volume:/var/lib/postgresql/data/pgdata
    networks:
      au-register-db:
        aliases:
          - au-register-db
  
  #####
  # tester service
  dataholder-tester:
    image: wychaustralia.azurecr.io/au-dataholder-tester:[version]
    depends_on:
      - db
      - au-register
      - au-register-auth
    restart: on-failure
    ports:
      - "8082:80"
    environment:
      WYCH_BASE_URL: http://dataholder-tester
      WYCH_REGISTER_URL: http://au-register
      WYCH_REGISTER_AUTH_URL: http://au-register-auth:8080

      WYCH_DATASOURCE_JDBC_URL: jdbc:postgresql://db:5432/wych
      WYCH_DATASOURCE_USERNAME: a-database-user
      WYCH_DATASOURCE_PASSWORD: a-database-password

      # if your apps are not sharing a database you will need to provide these separate configuration values
      # WYCH_DATASOURCE_TESTER_JDBC_URL: jdbc:postgresql://db:5432/wych?currentSchema=tester
      # WYCH_DATASOURCE_TESTER_USERNAME: a-database-user
      # WYCH_DATASOURCE_TESTER_PASSWORD: a-database-password
      # WYCH_DATASOURCE_RECIPIENT_JDBC_URL: jdbc:postgresql://db:5432/wych?currentSchema=recipient
      # WYCH_DATASOURCE_RECIPIENT_USERNAME: a-database-user
      # WYCH_DATASOURCE_RECIPIENT_PASSWORD: a-database-password
      # WYCH_DATASOURCE_REGISTER_JDBC_URL: jdbc:postgresql://db:5432/wych?currentSchema=register
      # WYCH_DATASOURCE_REGISTER_USERNAME: a-database-user
      # WYCH_DATASOURCE_REGISTER_PASSWORD: a-database-password

      DATAHOLDER_RESOURCE_ENDPOINT: https://au-dataholder.HOST.TLD/dh/secured
      DATAHOLDER_INFOSEC_ENDPOINT: https://au-dataholder.HOST.TLD/dh/infosec
      DATAHOLDER_ADMIN_ENDPOINT: https://au-register.HOST.TLD/dh/secured
      DATAHOLDER_PUBLIC_ENDPOINT: https://au-register.HOST.TLD/dh/public

networks:
  wych-service:
    name: wych-service
  au-register-auth-db:
      
volumes:
  au-register-auth-data-volume:
      
volumes:
  au-register-data-volume:

Changelog #

tag changelog digest
1.57.0 Reducing minimum config requirements d0c4e8
1.56.0 Reducing minimum config requirements 398d39
1.55.0 {{< alert >}} requires au-register >=1.5.0 {{< /alert >}} Bugfix issues caused by compatibility mode 1abf87
1.54.0 Moving native image to compatibility mode for x86, x64 and ARM architectures 787aec
1.53.0 Maintenance release, patching dependencies e2b818
1.52.0 Added new History results endpoint d41272
1.51.0 Added ability to refresh an existing arrangements 5d0fe7
1.50.0 Improved results reporting, including persisting Number of Tests completed 49b2fe
1.49.0 Added spec references to test results 5ebdc0
1.48.0 Increases test coverage and Error response management b7c895
1.47.0 Bugfix fixed tests resulting in duplicate rows 005118
1.46.0 Bugfix field type 057587
1.45.0 Added ability to run single/specific validator 07f030
1.44.0 Added new Validator endpoint e323af
1.43.0 Bugfix on listings fields 2f74ad
1.42.0 Added Customer Mandatory field checks 5c250c
1.41.0 Added test counter to field checks 680e46
1.40.0 Added metrics validation, fixed missing tls for customer calls 067b86
1.39.0 Added Balances for Specific Account Mandatory field checks 95389f
1.38.0 Added Specific Direct Debits Mandatory Field Checks d23e2c
1.37.0 Added Specific Scheduled Payments Mandatory Field Checks 66caf2
1.36.0 Added Payee Detail Mandatory Field Checks ae7226
1.35.0 Added Bulk Direct Debits Mandatory field checks b506f1
1.34.0 Added mandatory field test to bulk balances endpoint 0237ba
1.33.0 Added Transactions for Account Mandatory Field Checks f4e450
1.32.0 Added mandatory field checks for specific balances endpoint e175c1
1.31.0 Added Bulk Scheduled Payments mandatory field checks d3082e
1.30.0 Added Product Detail Mandatory Field Checks 55b709
1.29.0 Added metadata tests
Added ssl feature flag
5cd12c
1.28.0 Improved conditional property checks 50040b
1.27.0 Increasing code covered 4f938f
1.26.0 Added scheduled payments tests
Fixed MaskedPanString test
Added scheduled payments mandatory field checks
108900
1.25.0 Updated to CDR spec 1.29.1 04af6f
1.24.0 Remove code duplication
Improve model of specification
Cover all fields of the tested responses
43ece4
1.23.0 Added Payee mandatory field checks
Added direct debit mandatory field checks
01e4c8
1.22.0 Added Product endpoint Mandatory Field Check
Modify Addtional Info URI Validation
539c1d
1.21.0 Added Payee endpoint mandatory field check
Mandatory fields are returned Get Payees
646be8
1.20.0 Account balance tests
Account balance mandatory fields test
Account blance optional parameter tests
7ef130
1.19.0 Supporting service unavailability
Changed iso date format to match RFC3339
11c0ee
1.18.0 Added secured endpoint to dataholder tester cb719f
1.17.0 Added TransactionDetails Mandatory field validation 13a53a
1.16.0 Handle register not available
Added AccountDetails Mandatory Checks
Refactor to return multiple validation failures
9b6f1c
1.15.0 Store response entity only if entity exists 2aa664
1.14.0 Fixing response body storage error 75ecdf
1.13.0 Fixing native image generation 1ef05b
1.12.0 Adding account mandatory fields
Added BankAccountDetails Mandatory Field Checks
Introducing null checks
908514
1.11.0 Adding basic data cache and retrieval ea4eba
1.10.0 Enabling vulnerability analysis e150a0
1.9.0 Reducing required properties 2b5061
1.8.0 Adding PAR validation error cases f8f302
1.7.0 Adding DCR error cases 27bf88
1.6.0 Improving readability with testcase and test suite ids 340237
1.5.0 Removing the need for Queues 929bf2