You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ju...@apache.org on 2019/11/22 13:07:56 UTC
[fineract-cn-docker-compose] 32/44: improve Postman scripts
This is an automated email from the ASF dual-hosted git repository.
juhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/fineract-cn-docker-compose.git
commit bedf03bd028f6abdbaba0495852e7992dbec8217
Author: Juhan Aasaru <Ju...@nortal.com>
AuthorDate: Fri Oct 18 16:49:59 2019 +0300
improve Postman scripts
---
README.md | 14 +-
docker-compose.yml | 310 +-
env_variables | 16 +-
external_tools/docker-compose.yml | 6 +-
...act-Cn-Initial-Requests.postman_collection.json | 3079 +++++++++++++-------
...tial-Setup-Environment.postman_environment.json | 80 +-
6 files changed, 2440 insertions(+), 1065 deletions(-)
diff --git a/README.md b/README.md
index 366220f..d54c1cc 100644
--- a/README.md
+++ b/README.md
@@ -66,14 +66,19 @@ Running all services together consumes a lot of memory. So you can start a subse
For example you could start the following additional micro services and an fims-web-app:
```
-docker-compose up rhythm-ms identity-ms customer-ms accounting-ms deposit-ms portfolio-ms office-ms fims-web-app
+docker-compose up rhythm-ms identity-ms customer-ms accounting-ms deposit-ms portfolio-ms office-ms teller-ms fims-web-app
```
-
If you want you can add other micro services (listed in docker-compose.yml) to the list.
+Wait for all the started services (except provisioner) to appear at [Eureka console](http://eureka:8761/).
# Provision
+## Description of provisioning logic
+
+Provisioning logic is described briefly [here](https://cwiki.apache.org/confluence/display/FINERACT/Fineract+CN+demo-server).
+Instead demo_server we have Postman scripts and we use 'playground' as tenant name we want to provision.
+
## Provisioning the Micro Services Using Postman
We provide a postman-request-collection as well as a postman-environment that defines variables that are used to hold values received in responses.
@@ -115,8 +120,9 @@ Check the container for details of failures (if any):
docker-compose logs provisioner-ms
+2. Check that apps have registered with eureka: http://localhost:8761/
-2. Reach out to [mailing list](https://lists.apache.org/list.html?dev@fineract.apache.org) with the relevant details
+3. Reach out to [mailing list](https://lists.apache.org/list.html?dev@fineract.apache.org) with the relevant details
# Sign-in using fims-web-app
@@ -174,7 +180,7 @@ docker-compose up
```
## Note:
-**These scripts are ideal for a docker swarm deployment environment. If you are to deploy Fineract CN using Docker swarm you will have remove the network configuration from the docker-compose script and implement a load balancer (using docker swarm) that reflects the network configuratioin you just removed from the compose file.**
+**These scripts are ideal for a docker swarm deployment environment. If you are to deploy Fineract CN using Docker swarm you will have remove the network configuration from the docker-compose script and implement a load balancer (using docker swarm) that reflects the network configuration you just removed from the compose file.**
### Automating Postman scripts
You can use [Newman](https://learning.getpostman.com/docs/postman/collection_runs/command_line_integration_with_newman/) to run Postman scripts from command line.
diff --git a/docker-compose.yml b/docker-compose.yml
index cb72194..e5492f8 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -6,18 +6,35 @@ services:
- "2020:2020"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ bonecp.acquireIncrement: 1
+ bonecp.maxConnectionsPerPartition: 4
+ bonecp.minConnectionsPerPartition: 1
+ bonecp.partitionCount: 1
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
cassandra.cluster.pwd: ${CASSANDRA_CLUSTER_PASSWORD}
cassandra.cluster.user: ${CASSANDRA_CLUSTER_USER}
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
- custom.postgresql.host: ${POSTGRESQL_HOST}
- custom.postgresql.user: ${POSTGRESQL_USER}
+ cassandra.keyspace: ${CASSANDRA_KEYSPACE}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: provisioner-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
+ postgresql.database: seshat
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2020
+ spring.application.name: provisioner-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.initialclientid: ${SYSTEM_INITIAL_CLIENT_ID}
system.privateKey.exponent: ${PRIVATE_KEY_EXPONENT}
@@ -31,6 +48,9 @@ services:
condition: any
delay: 10s
max_attempts: 3
+ volumes:
+ - ./node_config:/etc/configs/:ro
+ - ./node_logs:/tmp/logs
networks:
external_tools_default:
fineract:
@@ -41,22 +61,32 @@ services:
ports:
- "2021:2021"
environment:
- bonecp.partitionCount: 1
- bonecp.maxConnectionsPerPartition: 4
- bonecp.minConnectionsPerPartition: 1
- bonecp.acquireIncrement: 1
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
cassandra.cluster.pwd: ${CASSANDRA_CLUSTER_PASSWORD}
cassandra.cluster.user: ${CASSANDRA_CLUSTER_USER}
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ cassandra.keyspace: ${CASSANDRA_KEYSPACE}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
- identity.token.refresh.secureCookie: "false" # demoserver
+ eureka.instance.hostname: identity-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
+ identity.token.refresh.secureCookie: "false"
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2021
+ spring.application.name: identity-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -66,28 +96,54 @@ services:
condition: any
delay: 10s
max_attempts: 3
+ volumes:
+ - ./node_config:/etc/configs/:ro
+ - ./node_logs:/tmp/logs
networks:
external_tools_default:
fineract:
ipv4_address: ${IDENTITY_IP}
- # TODO this image has error: https://issues.apache.org/jira/browse/FINCN-177
rhythm-ms:
image: apache/fineract-cn-rhythm:latest
ports:
- "2022:2022"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ bonecp.acquireIncrement: 1
+ bonecp.maxConnectionsPerPartition: 4
+ bonecp.minConnectionsPerPartition: 1
+ bonecp.partitionCount: 1
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
+ cassandra.cluster.pwd: password
+ cassandra.cluster.user: cassandra
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ cassandra.keyspace: ${CASSANDRA_KEYSPACE}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: rhythm-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
+ postgresql.database: seshat
postgresql.host: ${POSTGRESQL_HOST}
+ postgresql.password: postgres
+ postgresql.port: 5432
+ postgresql.user: postgres
rhythm.beatCheckRate: 600000
rhythm.user: ${SCHEDULER_USER_NAME}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2022
+ spring.application.name: rhythm-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -95,6 +151,9 @@ services:
replicas: 1
restart_policy:
condition: on-failure
+ volumes:
+ - ./node_config:/etc/configs/:ro
+ - ./node_logs:/tmp/logs
networks:
external_tools_default:
fineract:
@@ -106,15 +165,37 @@ services:
- "2023:2023"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ bonecp.acquireIncrement: 1
+ bonecp.maxConnectionsPerPartition: 4
+ bonecp.minConnectionsPerPartition: 1
+ bonecp.partitionCount: 1
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
+ cassandra.cluster.pwd: password
+ cassandra.cluster.user: cassandra
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ cassandra.keyspace: ${CASSANDRA_KEYSPACE}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: office-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
+ postgresql.database: seshat
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2023
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ spring.application.name: office-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
+ system.privateKey.exponent: ${PRIVATE_KEY_EXPONENT}
+ system.privateKey.modulus: ${PRIVATE_KEY_MODULUS}
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -131,16 +212,34 @@ services:
- "2024:2024"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ bonecp.acquireIncrement: 1
+ bonecp.maxConnectionsPerPartition: 4
+ bonecp.minConnectionsPerPartition: 1
+ bonecp.partitionCount: 1
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
+ cassandra.cluster.pwd: password
+ cassandra.cluster.user: cassandra
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ cassandra.keyspace: ${CASSANDRA_KEYSPACE}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: customer-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2024
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
- system.initialclientid: ${SYSTEM_INITIAL_CLIENT_ID}
+ spring.application.name: customer-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -155,15 +254,38 @@ services:
image: apache/fineract-cn-accounting:latest
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ bonecp.acquireIncrement: 1
+ bonecp.maxConnectionsPerPartition: 4
+ bonecp.minConnectionsPerPartition: 1
+ bonecp.partitionCount: 1
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
+ cassandra.cluster.pwd: password
+ cassandra.cluster.user: cassandra
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ cassandra.keyspace: ${CASSANDRA_KEYSPACE}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: accounting-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
+ postgresql.database: seshat
postgresql.host: ${POSTGRESQL_HOST}
+ postgresql.password: postgres
+ postgresql.port: 5432
+ postgresql.user: postgres
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2025
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ spring.application.name: accounting-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -178,17 +300,39 @@ services:
- "2026:2026"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ bonecp.acquireIncrement: 1
+ bonecp.maxConnectionsPerPartition: 4
+ bonecp.minConnectionsPerPartition: 1
+ bonecp.partitionCount: 1
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
+ cassandra.cluster.pwd: password
+ cassandra.cluster.user: cassandra
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ cassandra.keyspace: ${CASSANDRA_KEYSPACE}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
- custom.postgresql.host: ${POSTGRESQL_HOST}
- custom.postgresql.user: ${POSTGRESQL_USER}
+ eureka.instance.hostname: portfolio-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
+ portfolio.bookLateFeesAndInterestAsUser: imhotep
+ postgresql.database: seshat
postgresql.host: ${POSTGRESQL_HOST}
+ postgresql.password: postgres
+ postgresql.port: 5432
+ postgresql.user: postgres
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2026
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ spring.application.name: portfolio-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -203,15 +347,30 @@ services:
- "2027:2027"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
+ cassandra.cluster.pwd: ${CASSANDRA_CLUSTER_PASSWORD}
+ cassandra.cluster.user: ${CASSANDRA_CLUSTER_USER}
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ cassandra.keyspace: ${CASSANDRA_KEYSPACE}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: deposit-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2027
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ spring.application.name: deposit-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -219,6 +378,8 @@ services:
external_tools_default:
fineract:
ipv4_address: ${DEPOSIT_ACCOUNT_MANAGEMENT_IP}
+ aliases:
+ - deposit-account-management-ms
teller-ms:
image: apache/fineract-cn-teller:latest
@@ -226,15 +387,30 @@ services:
- "2028:2028"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
+ cassandra.cluster.pwd: ${CASSANDRA_CLUSTER_PASSWORD}
+ cassandra.cluster.user: ${CASSANDRA_CLUSTER_USER}
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ cassandra.keyspace: ${CASSANDRA_KEYSPACE}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: teller-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2028
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ spring.application.name: teller-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -249,15 +425,27 @@ services:
- "2029:2029"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: reporting-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2029
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ spring.application.name: reporting-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -272,15 +460,27 @@ services:
- "2030:2030"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: cheques-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2030
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ spring.application.name: cheques-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -295,15 +495,27 @@ services:
- "2031:2031"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: payroll-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2031
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ spring.application.name: payroll-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -318,15 +530,27 @@ services:
- "2032:2032"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: group-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2032
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ spring.application.name: group-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
@@ -336,20 +560,32 @@ services:
ipv4_address: ${GROUP_IP}
notifications-ms:
- image: apache/fineract-cn-notifications:latest
+ image: apache/fineract-cn-notifications:latestC
ports:
- "2033:2033"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.cl.delete: ONE
+ cassandra.cl.read: ONE
+ cassandra.cl.write: ONE
cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
+ eureka.client.fetchRegistry: "true"
+ eureka.client.initialInstanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS}
+ eureka.client.instanceInfoReplicationIntervalSeconds: ${EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
- eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ eureka.instance.hostname: notifications-ms
+ eureka.instance.leaseRenewalIntervalInSeconds: ${EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS}
+ eureka.registration.enabled: "true"
+ feign.hystrix.enabled: "false"
postgresql.host: ${POSTGRESQL_HOST}
+ ribbon.eureka.enabled: "true"
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
server.port: 2033
- spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ spring.application.name: notifications-v1
+ spring.cloud.config.enabled: "false"
+ spring.cloud.discovery.enabled: "true"
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
diff --git a/env_variables b/env_variables
index b17564f..1ab0b3e 100644
--- a/env_variables
+++ b/env_variables
@@ -1,20 +1,20 @@
ACTIVEMQ_BROKER_URL=tcp://activemq:61616
-CASSANDRA_CLUSTER_NAME=Datacenter1
+CASSANDRA_CLUSTER_NAME=datacenter1
CASSANDRA_CLUSTER_PASSWORD=password
CASSANDRA_CLUSTER_USER=cassandra
CASSANDRA_CONTACT_POINTS=cassandra:9042
-EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE=http://localhost:8761/eureka
-EUREKA_INSTANCE_HOSTNAME=eureka
-MARIADB_HOST=mariadb
-MARIADB_PASSWORD=mysql
-MARIADB_USER=root
+CASSANDRA_KEYSPACE=seshat
+EUREKA_CLIENT_INITIALINSTANCEINFOREPLICATIONINTERVALSECONDS=25
+EUREKA_CLIENT_INSTANCEINFOREPLICATIONINTERVALSECONDS=20
+EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE=http://eureka:8761/eureka
+EUREKA_INSTANCE_LEASERENEWALINTERVALINSECONDS=20
POSTGRESQL_HOST=postgres
POSTGRESQL_PORT=5432
POSTGRESQL_USER=postgres
RIBBON_EUREKA_SERVER=eureka:9090
-SYSTEM_INITIAL_CLIENT_ID=service-runner
SCHEDULER_USER_NAME=imhotep
-FIMS_WEB_APP_IP=172.16.238.19
+SYSTEM_INITIAL_CLIENT_ID=service-runner
+
PROVISIONER_IP=172.16.238.20
IDENTITY_IP=172.16.238.21
RHYTHM_IP=172.16.238.22
diff --git a/external_tools/docker-compose.yml b/external_tools/docker-compose.yml
index 010666d..3718df8 100644
--- a/external_tools/docker-compose.yml
+++ b/external_tools/docker-compose.yml
@@ -26,7 +26,7 @@ services:
ports:
- "8761:8761"
healthcheck:
- test: curl -f http://localhost:8761 || exit 1
+ test: curl -f http://eureka:8761 || exit 1
interval: 1m
retries: 5
deploy:
@@ -52,12 +52,12 @@ services:
- postgres-volume:/var/lib/postgresql/data
cassandra:
- image: cassandra:latest
+ image: cassandra:3.11
container_name: cassandra
ports:
- "9042:9042"
healthcheck:
- test: cqlsh ping -h localhost
+ test: cqlsh ping -h cassandra
interval: 1m
retries: 5
deploy:
diff --git a/postman_scripts/Fineract-Cn-Initial-Requests.postman_collection.json b/postman_scripts/Fineract-Cn-Initial-Requests.postman_collection.json
index 51d6707..452f7ea 100644
--- a/postman_scripts/Fineract-Cn-Initial-Requests.postman_collection.json
+++ b/postman_scripts/Fineract-Cn-Initial-Requests.postman_collection.json
@@ -7,7 +7,7 @@
},
"item": [
{
- "name": "01. Get token from system user",
+ "name": "01. Log in root user",
"event": [
{
"listen": "test",
@@ -67,12 +67,33 @@
"response": []
},
{
- "name": "02. Create first tenant",
+ "name": "NB! ONLY CREATE apps you have started",
+ "request": {
+ "method": "OPTIONS",
+ "header": [],
+ "url": {
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/auth/token",
+ "protocol": "http",
+ "host": [
+ "{{provisionerUrl}}"
+ ],
+ "path": [
+ "provisioner",
+ "v1",
+ "auth",
+ "token"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "02.01 Create identity-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "0b18908b-f2d4-4ce4-a8ad-3d1c0652a1bc",
+ "id": "fb7299ef-04d4-4869-a25b-d1b523098c6d",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -97,11 +118,17 @@
"name": "Content-Type",
"value": "application/json",
"type": "text"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}",
+ "type": "text",
+ "disabled": true
}
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"identifier\": \"{{tenantIdentifier}}\",\n\t\"name\": \"Playground\",\n\t\"description\": \"Sample tenant for demonstrating Fineract-CN functionality\",\n\t\"cassandraConnectionInfo\": {\n\t\t\"clusterName\": \"Datacenter1\",\n\t\t\"contactPoints\": \"cassandra:9042\",\n\t\t\"keyspace\": \"playground\",\n\t\t\"replicationType\": \"Simple\",\n\t\t\"replicas\": \"1\"\n\t},\n\t\"databaseConnectionInfo\": {\n\t\t\"driverClass\": \"org.postgresql.Driver\",\n\t\t\"databaseNa [...]
+ "raw": "{\n\t\"name\": \"identity-v1\",\n\t\"description\": \"Identity Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{identityUrl}}/identity/v1\"\n}",
"options": {
"raw": {
"language": "json"
@@ -109,7 +136,7 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
"protocol": "http",
"host": [
"{{provisionerUrl}}"
@@ -117,19 +144,19 @@
"path": [
"provisioner",
"v1",
- "tenants"
+ "applications"
]
}
},
"response": []
},
{
- "name": "03.1 Create identity-v1 application",
+ "name": "02.02 Create rhythm-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "fb7299ef-04d4-4869-a25b-d1b523098c6d",
+ "id": "4d75f048-905b-41af-b767-4314d5e3a050",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -157,14 +184,12 @@
},
{
"key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}",
- "type": "text",
- "disabled": true
+ "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"identity-v1\",\n\t\"description\": \"Identity Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{identityUrl}}/identity/v1\"\n}",
+ "raw": "{\n\t\"name\": \"rhythm-v1\",\n\t\"description\": \"Customer Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{rhythmUrl}}/rhythm/v1\"\n}",
"options": {
"raw": {
"language": "json"
@@ -187,19 +212,14 @@
"response": []
},
{
- "name": "03.2 Assign Identity Manager for Tenant and obtain Tenant Admin (user antony) Password",
+ "name": "02.03 Create office-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "206c2d92-7c20-46e9-8079-ead0c0adbbe0",
+ "id": "bc3eeb3d-961c-449b-87b9-99606d0511b3",
"exec": [
- "tests[\"Status code is 200\"] = responseCode.code === 200;",
- "",
- "var jsonData = JSON.parse(responseBody);",
- "postman.setEnvironmentVariable(\"antonyUserPassword\", jsonData.adminPassword);",
- "",
- "",
+ "tests[\"Status code is 202\"] = responseCode.code === 202;",
""
],
"type": "text/javascript"
@@ -219,9 +239,7 @@
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "value": "application/json"
},
{
"key": "X-Tenant-Identifier",
@@ -230,15 +248,10 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"identity-v1\"\n}",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{\n\t\"name\": \"office-v1\",\n\t\"description\": \"Office Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{officeUrl}}/office/v1\"\n}"
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/identityservice",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
"protocol": "http",
"host": [
"{{provisionerUrl}}"
@@ -246,30 +259,24 @@
"path": [
"provisioner",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
- "identityservice"
+ "applications"
]
}
},
"response": []
},
{
- "name": "03.3 Login SuperAdmin (Antony)",
+ "name": "02.04 Create customer-v1 application",
"event": [
{
"listen": "test",
"script": {
- "type": "text/javascript",
+ "id": "8adf52e4-af8a-49c8-86fc-c3174e637283",
"exec": [
- "tests[\"Status code is 200\"] = responseCode.code === 200;",
- "",
- "var jsonData = JSON.parse(responseBody);",
- "postman.setEnvironmentVariable(\"antonyToken\", jsonData.accessToken);",
- "",
- "",
+ "tests[\"Status code is 202\"] = responseCode.code === 202;",
""
- ]
+ ],
+ "type": "text/javascript"
}
}
],
@@ -277,60 +284,50 @@
"method": "POST",
"header": [
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Authorization",
+ "value": "{{rootUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{rootUser}}"
},
{
"key": "Content-Type",
"value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "{}"
+ "raw": "{\n\t\"name\": \"customer-v1\",\n\t\"description\": \"Customer Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{customerUrl}}/customer/v1\"\n}"
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username=antony&password={{antonyUserPassword}}",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "token"
- ],
- "query": [
- {
- "key": "grant_type",
- "value": "password"
- },
- {
- "key": "username",
- "value": "antony"
- },
- {
- "key": "password",
- "value": "{{antonyUserPassword}}"
- }
+ "applications"
]
}
},
"response": []
},
{
- "name": "03.4 Change Antony Password",
+ "name": "02.05 Create accounting-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "4a97cc02-4f7f-4a0d-b805-5ec4af08f7b0",
+ "id": "6a24d7f4-0056-42e6-8d20-c7d3bd3dfd09",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
- "",
- "postman.setEnvironmentVariable(\"antonyUserPassword\", \"dGVzdA==\");",
- "",
- "",
""
],
"type": "text/javascript"
@@ -338,21 +335,19 @@
}
],
"request": {
- "method": "PUT",
+ "method": "POST",
"header": [
{
"key": "Authorization",
- "value": "{{antonyToken}}"
+ "value": "{{rootUserToken}}"
},
{
"key": "User",
- "value": "{{antonyUser}}"
+ "value": "{{rootUser}}"
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "value": "application/json"
},
{
"key": "X-Tenant-Identifier",
@@ -361,44 +356,32 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"password\": \"dGVzdA==\"\n}",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{\n\t\"name\": \"accounting-v1\",\n\t\"description\": \"Accounting Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{accountingUrl}}/accounting/v1\"\n}"
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/users/antony/password",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "users",
- "antony",
- "password"
+ "applications"
]
}
},
"response": []
},
{
- "name": "03.5 Login Antony with new password",
+ "name": "02.06 Create portfolio-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "b3b88517-d738-461b-ba9a-f57e872dfcb2",
+ "id": "3efb77f8-9bc7-4835-87e8-b4ebfb7abd11",
"exec": [
- "tests[\"Status code is 200\"] = responseCode.code === 200;",
- "",
- "var jsonData = JSON.parse(responseBody);",
- "postman.setEnvironmentVariable(\"antonyToken\", jsonData.accessToken);",
- "",
- "",
+ "tests[\"Status code is 202\"] = responseCode.code === 202;",
""
],
"type": "text/javascript"
@@ -409,54 +392,55 @@
"method": "POST",
"header": [
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Authorization",
+ "value": "{{rootUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{rootUser}}"
},
{
"key": "Content-Type",
- "value": "application/json"
+ "name": "Content-Type",
+ "value": "application/json",
+ "type": "text"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "{}"
+ "raw": "{\n\t\"name\": \"portfolio-v1\",\n\t\"description\": \"Portfolio\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{portfolioUrl}}/portfolio/v1\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username={{antonyUser}}&password={{antonyUserPassword}}",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "token"
- ],
- "query": [
- {
- "key": "grant_type",
- "value": "password"
- },
- {
- "key": "username",
- "value": "{{antonyUser}}"
- },
- {
- "key": "password",
- "value": "{{antonyUserPassword}}"
- }
+ "applications"
]
}
},
"response": []
},
{
- "name": "03.6 Assign Identity for Tenant",
+ "name": "02.07 Create deposit-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "66378bb5-bb0e-4374-8d4f-67c56b78eea5",
+ "id": "870693ae-6f50-4b8e-9920-fa45e184f732",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -466,7 +450,7 @@
}
],
"request": {
- "method": "PUT",
+ "method": "POST",
"header": [
{
"key": "Authorization",
@@ -487,10 +471,10 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"identity-v1\"\n\t}\n]"
+ "raw": "{\n\t\"name\": \"deposit-v1\",\n\t\"description\": \"Deposit Management Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{depositUrl}}/deposit/v1\"\n}"
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
"protocol": "http",
"host": [
"{{provisionerUrl}}"
@@ -498,8 +482,6 @@
"path": [
"provisioner",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
"applications"
]
}
@@ -507,23 +489,12 @@
"response": []
},
{
- "name": "ONLY CREATE AND ADD apps you have started",
- "request": {
- "method": "OPTIONS",
- "header": [],
- "url": {
- "raw": ""
- }
- },
- "response": []
- },
- {
- "name": "04.000 Create rhythm-v1 application",
+ "name": "02.08 Create teller-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "4d75f048-905b-41af-b767-4314d5e3a050",
+ "id": "0dbc31fb-0e82-492a-aab8-f30e1fdad5a5",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -545,9 +516,7 @@
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "value": "application/json"
},
{
"key": "X-Tenant-Identifier",
@@ -556,12 +525,7 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"rhythm-v1\",\n\t\"description\": \"Customer Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://rhythm-ms:2022/rhythm/v1\"\n}",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{\n\t\"name\": \"teller-v1\",\n\t\"description\": \"Teller\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{tellerUrl}}/teller/v1\"\n}"
},
"url": {
"raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
@@ -579,12 +543,12 @@
"response": []
},
{
- "name": "04.001 Assign rhythm-v1 for Tenant",
+ "name": "02.09 Create reporting-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "ba66d4b9-95a1-45de-9d59-d54308c72273",
+ "id": "b92b9efb-afcb-4c12-b3af-0b8ca07aaef0",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -594,7 +558,7 @@
}
],
"request": {
- "method": "PUT",
+ "method": "POST",
"header": [
{
"key": "Authorization",
@@ -617,7 +581,7 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"rhythm-v1\"\n\t}\n]",
+ "raw": "{\n\t\"name\": \"reporting-v1\",\n\t\"description\": \"Reporting\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{reportingUrl}}/reporting/v1\"\n}",
"options": {
"raw": {
"language": "json"
@@ -625,7 +589,7 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
"protocol": "http",
"host": [
"{{provisionerUrl}}"
@@ -633,8 +597,6 @@
"path": [
"provisioner",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
"applications"
]
}
@@ -642,12 +604,12 @@
"response": []
},
{
- "name": "04.010 Create office-v1 application",
+ "name": "02.10 Create cheques-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "bc3eeb3d-961c-449b-87b9-99606d0511b3",
+ "id": "c91e5040-28c4-4a87-9132-85c420c78efe",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -669,7 +631,9 @@
},
{
"key": "Content-Type",
- "value": "application/json"
+ "name": "Content-Type",
+ "value": "application/json",
+ "type": "text"
},
{
"key": "X-Tenant-Identifier",
@@ -678,7 +642,12 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"office-v1\",\n\t\"description\": \"Office Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://office-ms:2023/office/v1\"\n}"
+ "raw": "{\n\t\"name\": \"cheques-v1\",\n\t\"description\": \"Cheques\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{chequesUrl}}/cheques/v1\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
"raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
@@ -696,12 +665,12 @@
"response": []
},
{
- "name": "04.011 Assign office-v1 for Tenant",
+ "name": "02.11 Create payroll-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "7f3f5ba7-5b63-4a44-b491-12e0436c1056",
+ "id": "f2eb7045-4dae-4ad7-9a0c-fddc35d21436",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -711,7 +680,7 @@
}
],
"request": {
- "method": "PUT",
+ "method": "POST",
"header": [
{
"key": "Authorization",
@@ -734,7 +703,7 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"office-v1\"\n\t}\n]",
+ "raw": "{\n\t\"name\": \"payroll-v1\",\n\t\"description\": \"Payroll\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{payrollUrl}}/payroll/v1\"\n}",
"options": {
"raw": {
"language": "json"
@@ -742,7 +711,7 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
"protocol": "http",
"host": [
"{{provisionerUrl}}"
@@ -750,8 +719,6 @@
"path": [
"provisioner",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
"applications"
]
}
@@ -759,12 +726,12 @@
"response": []
},
{
- "name": "04.020 Create customer-v1 application",
+ "name": "02.12 Create group-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "8adf52e4-af8a-49c8-86fc-c3174e637283",
+ "id": "b533921d-e3f5-45f0-b035-f1d6395b4703",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -786,7 +753,9 @@
},
{
"key": "Content-Type",
- "value": "application/json"
+ "name": "Content-Type",
+ "value": "application/json",
+ "type": "text"
},
{
"key": "X-Tenant-Identifier",
@@ -795,7 +764,12 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"customer-v1\",\n\t\"description\": \"Customer Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{customerUrl}}/customer/v1\"\n}"
+ "raw": "{\n\t\"name\": \"group-v1\",\n\t\"description\": \"Group\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{groupUrl}}/group/v1\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
"raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
@@ -813,12 +787,12 @@
"response": []
},
{
- "name": "04.021 Assign customer-v1 for Tenant",
+ "name": "02.13 Create notifications-v1 application",
"event": [
{
"listen": "test",
"script": {
- "id": "d5f166cb-0a4d-44e2-ab41-fde67c2d1af7",
+ "id": "cfd7c51f-0aac-4b9b-9048-c3ca60672ba0",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -828,7 +802,7 @@
}
],
"request": {
- "method": "PUT",
+ "method": "POST",
"header": [
{
"key": "Authorization",
@@ -851,7 +825,7 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"customer-v1\"\n\t}\n]",
+ "raw": "{\n\t\"name\": \"notifications-v1\",\n\t\"description\": \"Notifications\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{notificationsUrl}}/notification/v1\"\n}",
"options": {
"raw": {
"language": "json"
@@ -859,7 +833,7 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
"protocol": "http",
"host": [
"{{provisionerUrl}}"
@@ -867,8 +841,6 @@
"path": [
"provisioner",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
"applications"
]
}
@@ -876,12 +848,12 @@
"response": []
},
{
- "name": "04.030 Create accounting-v1 application",
+ "name": "03.1 Create first tenant 'playground'",
"event": [
{
"listen": "test",
"script": {
- "id": "6a24d7f4-0056-42e6-8d20-c7d3bd3dfd09",
+ "id": "0b18908b-f2d4-4ce4-a8ad-3d1c0652a1bc",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -903,19 +875,22 @@
},
{
"key": "Content-Type",
- "value": "application/json"
- },
- {
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "name": "Content-Type",
+ "value": "application/json",
+ "type": "text"
}
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"accounting-v1\",\n\t\"description\": \"Accounting Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{accountingUrl}}/accounting/v1\"\n}"
+ "raw": "{\n\t\"identifier\": \"{{tenantIdentifier}}\",\n\t\"name\": \"Playground\",\n\t\"description\": \"Sample tenant for demonstrating Fineract-CN functionality\",\n\t\"cassandraConnectionInfo\": {\n\t\t\"clusterName\": \"datacenter1\",\n\t\t\"contactPoints\": \"cassandra:9042\",\n\t\t\"keyspace\": \"playground\",\n\t\t\"replicationType\": \"Simple\",\n\t\t\"replicas\": \"1\"\n\t},\n\t\"databaseConnectionInfo\": {\n\t\t\"driverClass\": \"org.postgresql.Driver\",\n\t\t\"databaseNa [...]
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants",
"protocol": "http",
"host": [
"{{provisionerUrl}}"
@@ -923,21 +898,26 @@
"path": [
"provisioner",
"v1",
- "applications"
+ "tenants"
]
}
},
"response": []
},
{
- "name": "04.031 Assign accounting-v1 for Tenant",
+ "name": "03.2 Assign identity-v1 for Tenant and obtain Tenant Admin (user antony) Password",
"event": [
{
"listen": "test",
"script": {
- "id": "af1b9ac1-c66c-4353-b59b-ec3e1bea864c",
+ "id": "206c2d92-7c20-46e9-8079-ead0c0adbbe0",
"exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "tests[\"Status code is 200\"] = responseCode.code === 200;",
+ "",
+ "var jsonData = JSON.parse(responseBody);",
+ "postman.setEnvironmentVariable(\"antonyUserPassword\", jsonData.adminPassword);",
+ "",
+ "",
""
],
"type": "text/javascript"
@@ -945,7 +925,7 @@
}
],
"request": {
- "method": "PUT",
+ "method": "POST",
"header": [
{
"key": "Authorization",
@@ -968,7 +948,7 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"accounting-v1\"\n\t}\n]",
+ "raw": "{\n\t\"name\": \"identity-v1\"\n}",
"options": {
"raw": {
"language": "json"
@@ -976,7 +956,7 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/identityservice",
"protocol": "http",
"host": [
"{{provisionerUrl}}"
@@ -986,21 +966,26 @@
"v1",
"tenants",
"{{tenantIdentifier}}",
- "applications"
+ "identityservice"
]
}
},
"response": []
},
{
- "name": "04.040 Create portfolio-v1 application",
+ "name": "03.3 Login Antony (tenant superadmin) with obtained password",
"event": [
{
"listen": "test",
"script": {
- "id": "3efb77f8-9bc7-4835-87e8-b4ebfb7abd11",
+ "id": "b3b88517-d738-461b-ba9a-f57e872dfcb2",
"exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "tests[\"Status code is 200\"] = responseCode.code === 200;",
+ "",
+ "var jsonData = JSON.parse(responseBody);",
+ "postman.setEnvironmentVariable(\"antonyToken\", jsonData.accessToken);",
+ "",
+ "",
""
],
"type": "text/javascript"
@@ -1011,61 +996,78 @@
"method": "POST",
"header": [
{
- "key": "Authorization",
- "value": "{{rootUserToken}}"
- },
- {
- "key": "User",
- "value": "{{rootUser}}"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
- },
- {
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "value": "application/json"
}
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"portfolio-v1\",\n\t\"description\": \"Portfolio\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://portfolio-ms:2026/portfolio/v1\"\n}",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{}"
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username={{antonyUser}}&password={{antonyUserPassword}}",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "applications"
+ "token"
+ ],
+ "query": [
+ {
+ "key": "grant_type",
+ "value": "password"
+ },
+ {
+ "key": "username",
+ "value": "{{antonyUser}}"
+ },
+ {
+ "key": "password",
+ "value": "{{antonyUserPassword}}"
+ }
]
}
},
"response": []
},
{
- "name": "04.041 Assign portfolio-v1 for Tenant",
+ "name": "03.4 Change Antony Password to 'antonyPassword'",
"event": [
{
"listen": "test",
"script": {
- "id": "ef7b5c59-1623-4183-8196-b76e30922713",
+ "id": "4a97cc02-4f7f-4a0d-b805-5ec4af08f7b0",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "",
+ "//postman.setEnvironmentVariable(\"antonyUserPassword\", \"dDNuNG50NGRtMW4=\");",
+ "",
+ "",
""
],
"type": "text/javascript"
}
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "id": "eaa4397b-8b4a-4032-914a-2408cf82ea4b",
+ "exec": [
+ "var CryptoJS = require(\"crypto-js\")",
+ "var rawStr = CryptoJS.enc.Utf8.parse(\"antonyUserPassword\")",
+ "var base64 = CryptoJS.enc.Base64.stringify(rawStr)",
+ "console.log(`antonyUserPassword as BASE64: ${base64}`)",
+ "postman.setEnvironmentVariable(\"antonyUserPassword\", base64);"
+ ],
+ "type": "text/javascript"
+ }
}
],
"request": {
@@ -1073,17 +1075,17 @@
"header": [
{
"key": "Authorization",
- "value": "{{rootUserToken}}"
+ "value": "{{antonyToken}}"
},
{
"key": "User",
- "value": "{{rootUser}}"
+ "value": "{{antonyUser}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "type": "text",
+ "value": "application/json"
},
{
"key": "X-Tenant-Identifier",
@@ -1092,7 +1094,7 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"portfolio-v1\"\n\t}\n]",
+ "raw": "{\n\t\"password\": \"{{antonyUserPassword}}\"\n}",
"options": {
"raw": {
"language": "json"
@@ -1100,34 +1102,38 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/users/antony/password",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
- "applications"
+ "users",
+ "antony",
+ "password"
]
}
},
"response": []
},
{
- "name": "04.050 Create deposit-v1 application",
+ "name": "03.5 LOGIN ANTONY (tenant SuperAdmin) with pwd 'antonyPassword'",
"event": [
{
"listen": "test",
"script": {
- "id": "870693ae-6f50-4b8e-9920-fa45e184f732",
+ "type": "text/javascript",
"exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "tests[\"Status code is 200\"] = responseCode.code === 200;",
+ "",
+ "var jsonData = JSON.parse(responseBody);",
+ "postman.setEnvironmentVariable(\"antonyToken\", jsonData.accessToken);",
+ "",
+ "",
""
- ],
- "type": "text/javascript"
+ ]
}
}
],
@@ -1135,48 +1141,54 @@
"method": "POST",
"header": [
{
- "key": "Authorization",
- "value": "{{rootUserToken}}"
- },
- {
- "key": "User",
- "value": "{{rootUser}}"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
},
{
"key": "Content-Type",
"value": "application/json"
- },
- {
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"deposit-v1\",\n\t\"description\": \"Deposit Management Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://{{depositUrl}}/deposit/v1\"\n}"
+ "raw": "{}"
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username=antony&password={{antonyUserPassword}}",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "applications"
+ "token"
+ ],
+ "query": [
+ {
+ "key": "grant_type",
+ "value": "password"
+ },
+ {
+ "key": "username",
+ "value": "antony"
+ },
+ {
+ "key": "password",
+ "value": "{{antonyUserPassword}}"
+ }
]
}
},
"response": []
},
{
- "name": "04.051 Assign deposits for Tenant",
+ "name": "04.01 Assign rhythm-v1 for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "8b4e42c3-5a2f-437d-8f2c-55a6d398f601",
+ "id": "ba66d4b9-95a1-45de-9d59-d54308c72273",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -1198,7 +1210,9 @@
},
{
"key": "Content-Type",
- "value": "application/json"
+ "name": "Content-Type",
+ "value": "application/json",
+ "type": "text"
},
{
"key": "X-Tenant-Identifier",
@@ -1207,7 +1221,12 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"deposit-v1\"\n\t}\n]"
+ "raw": "[\n\t{\n\t\t\"name\": \"rhythm-v1\"\n\t}\n]",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
"raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
@@ -1227,12 +1246,12 @@
"response": []
},
{
- "name": "04.060 Create teller-v1 application",
+ "name": "04.02 Assign office-v1 for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "0dbc31fb-0e82-492a-aab8-f30e1fdad5a5",
+ "id": "7f3f5ba7-5b63-4a44-b491-12e0436c1056",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -1242,7 +1261,7 @@
}
],
"request": {
- "method": "POST",
+ "method": "PUT",
"header": [
{
"key": "Authorization",
@@ -1254,7 +1273,9 @@
},
{
"key": "Content-Type",
- "value": "application/json"
+ "name": "Content-Type",
+ "value": "application/json",
+ "type": "text"
},
{
"key": "X-Tenant-Identifier",
@@ -1263,10 +1284,15 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"teller-v1\",\n\t\"description\": \"Teller\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://teller-ms:2028/teller/v1\"\n}"
+ "raw": "[\n\t{\n\t\t\"name\": \"office-v1\"\n\t}\n]",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
"{{provisionerUrl}}"
@@ -1274,6 +1300,8 @@
"path": [
"provisioner",
"v1",
+ "tenants",
+ "{{tenantIdentifier}}",
"applications"
]
}
@@ -1281,12 +1309,12 @@
"response": []
},
{
- "name": "04.061 Assign teller-v1 for Tenant",
+ "name": "04.03 Assign customer-v1 for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "99d87103-9033-4dc9-aaef-b82aef6f8e3a",
+ "id": "d5f166cb-0a4d-44e2-ab41-fde67c2d1af7",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -1308,7 +1336,9 @@
},
{
"key": "Content-Type",
- "value": "application/json"
+ "name": "Content-Type",
+ "value": "application/json",
+ "type": "text"
},
{
"key": "X-Tenant-Identifier",
@@ -1317,7 +1347,12 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"teller-v1\"\n\t}\n]"
+ "raw": "[\n\t{\n\t\t\"name\": \"customer-v1\"\n\t}\n]",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
"raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
@@ -1337,14 +1372,15 @@
"response": []
},
{
- "name": "04.070 Create reporting-v1 application",
+ "name": "05.1 Create administrator role for tenant \"playground\"",
"event": [
{
"listen": "test",
"script": {
- "id": "b92b9efb-afcb-4c12-b3af-0b8ca07aaef0",
+ "id": "c64b529c-6e8a-4ef1-ab0d-a58b9499ade9",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "setTimeout(function(){}, [3000]);",
""
],
"type": "text/javascript"
@@ -1355,79 +1391,86 @@
"method": "POST",
"header": [
{
- "key": "Authorization",
- "value": "{{rootUserToken}}"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
},
{
"key": "User",
- "value": "{{rootUser}}"
+ "value": "{{antonyUser}}"
},
{
- "key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "key": "Authorization",
+ "value": "{{antonyToken}}"
},
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Content-Type",
+ "value": "application/json"
}
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"reporting-v1\",\n\t\"description\": \"Reporting\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://reporting-ms:2029/reporting/v1\"\n}",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{\n \"identifier\": \"administrator\",\n \"permissions\": [\n {\n \"permittableEndpointGroupIdentifier\": \"accounting__v1__account\",\n \"allowedOperations\": [\n \"READ\",\n \"CHANGE\",\n \"DELETE\"\n ]\n },\n {\n \"permittableEndpointGroupIdentifier\": \"accounting__v1__fin_condition\",\n \"allowedOperations\": [\n \"READ\",\n \"CHANGE\",\n \"DELETE\"\n ]\n },\n {\n \"permittable [...]
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/roles",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "applications"
+ "roles"
]
}
},
"response": []
},
{
- "name": "04.071 Assign reporting-v1 for Tenant",
+ "name": "05.2 Create Admin User operator with password 'initialPassword'",
"event": [
{
"listen": "test",
"script": {
- "id": "c0c31e05-7498-46c9-8063-7987327fa1fa",
+ "id": "9486d316-2aca-409a-88ff-f17770249dca",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
],
"type": "text/javascript"
}
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "id": "115a549d-513d-46ef-b8af-f9be111bd55d",
+ "exec": [
+ "var CryptoJS = require(\"crypto-js\")",
+ "var rawStr = CryptoJS.enc.Utf8.parse(\"initialPassword\")",
+ "var base64 = CryptoJS.enc.Base64.stringify(rawStr)",
+ "console.log(`operatorPassword in BASE64: ${base64}`)",
+ "postman.setEnvironmentVariable(\"adminUserPassword\", base64);"
+ ],
+ "type": "text/javascript"
+ }
}
],
"request": {
- "method": "PUT",
+ "method": "POST",
"header": [
{
"key": "Authorization",
- "value": "{{rootUserToken}}"
+ "value": "{{antonyToken}}"
},
{
"key": "User",
- "value": "{{rootUser}}"
+ "value": "{{antonyUser}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "type": "text",
+ "value": "application/json"
},
{
"key": "X-Tenant-Identifier",
@@ -1436,7 +1479,7 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"reporting-v1\"\n\t}\n]",
+ "raw": "{\n\t\"identifier\": \"operator\",\n\t\"role\": \"administrator\",\n\t\"password\": \"{{adminUserPassword}}\"\n}",
"options": {
"raw": {
"language": "json"
@@ -1444,35 +1487,50 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/users",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
- "applications"
+ "users"
]
}
},
"response": []
},
{
- "name": "04.080 Create cheques-v1 application",
+ "name": "05.3 Log in with initial password",
"event": [
{
"listen": "test",
"script": {
- "id": "c91e5040-28c4-4a87-9132-85c420c78efe",
+ "id": "90d180ba-a4a4-47ce-b018-94c75b0ebe65",
"exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "tests[\"Status code is 200\"] = responseCode.code === 200;",
+ "",
+ "var jsonData = JSON.parse(responseBody);",
+ "postman.setEnvironmentVariable(\"adminUserToken\", jsonData.accessToken);",
+ "",
+ "const moment = require('moment');",
+ "var timestamp = moment().format(\"YYYY-MM-DD\") + \"T\" + moment().format(\"HH:mm:ss\");",
+ "tests[\"initial password is expired\"] = jsonData.passwordExpiration < timestamp;",
""
],
"type": "text/javascript"
}
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "id": "0f7bafa6-8124-42cc-b0a4-9571119a5fc8",
+ "exec": [
+ "var delay3seconds = setTimeout(function(){}, [3000]);"
+ ],
+ "type": "text/javascript"
+ }
}
],
"request": {
@@ -1480,11 +1538,11 @@
"header": [
{
"key": "Authorization",
- "value": "{{rootUserToken}}"
+ "value": "{{antonyToken}}"
},
{
"key": "User",
- "value": "{{rootUser}}"
+ "value": "{{antonyUser}}"
},
{
"key": "Content-Type",
@@ -1499,7 +1557,7 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"cheques-v1\",\n\t\"description\": \"Cheques\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://cheques-ms:2030/cheques/v1\"\n}",
+ "raw": "{}",
"options": {
"raw": {
"language": "json"
@@ -1507,60 +1565,92 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username=operator&password={{adminUserPassword}}",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "applications"
+ "token"
+ ],
+ "query": [
+ {
+ "key": "grant_type",
+ "value": "password"
+ },
+ {
+ "key": "username",
+ "value": "operator"
+ },
+ {
+ "key": "password",
+ "value": "{{adminUserPassword}}",
+ "description": "Initial password"
+ }
]
}
},
"response": []
},
{
- "name": "04.081 Assign cheques-v1 for Tenant",
+ "name": "05.4 Change user 'operator' password to 'operatorPassword'",
"event": [
{
"listen": "test",
"script": {
- "id": "e696bb1f-9582-4861-9009-2b9ede155c3b",
+ "id": "af5b9059-bf36-4715-acc2-25d272552590",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "",
""
],
"type": "text/javascript"
}
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "id": "91312a48-c2bd-4ea4-b4e6-8c388aec99e9",
+ "exec": [
+ "var CryptoJS = require(\"crypto-js\")",
+ "var rawStr = CryptoJS.enc.Utf8.parse(\"operatorPassword\")",
+ "var base64 = CryptoJS.enc.Base64.stringify(rawStr)",
+ "console.log(`operatorPassword in BASE64: ${base64}`)",
+ "postman.setEnvironmentVariable(\"adminUserPassword\", base64);"
+ ],
+ "type": "text/javascript"
+ }
}
],
"request": {
"method": "PUT",
"header": [
{
- "key": "Authorization",
- "value": "{{rootUserToken}}"
- },
- {
- "key": "User",
- "value": "{{rootUser}}"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "type": "text",
+ "value": "application/json"
},
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Authorization",
+ "type": "text",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "type": "text",
+ "value": "{{adminUser}}"
}
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"cheques-v1\"\n\t}\n]",
+ "raw": "{\n \"password\": \"{{adminUserPassword}}\"\n}",
"options": {
"raw": {
"language": "json"
@@ -1568,31 +1658,39 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/users/operator/password",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
- "applications"
+ "users",
+ "operator",
+ "password"
]
}
},
"response": []
},
{
- "name": "04.090 Create payroll-v1 application",
+ "name": "05.5 LOG IN TENANT ADMIN (operator)",
"event": [
{
"listen": "test",
"script": {
- "id": "f2eb7045-4dae-4ad7-9a0c-fddc35d21436",
+ "id": "c8802a96-df5a-4916-b6fb-e27b33c386e6",
"exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "tests[\"Status code is 200\"] = responseCode.code === 200;",
+ "",
+ "var jsonData = JSON.parse(responseBody);",
+ "postman.setEnvironmentVariable(\"adminUserToken\", jsonData.accessToken);",
+ "",
+ "const moment = require('moment');",
+ "var timestamp = moment().format(\"YYYY-MM-DD\") + \"T\" + moment().format(\"HH:mm:ss\");",
+ "tests[\"password is not expired\"] = jsonData.passwordExpiration > timestamp;",
+ "",
""
],
"type": "text/javascript"
@@ -1603,79 +1701,95 @@
"method": "POST",
"header": [
{
- "key": "Authorization",
- "value": "{{rootUserToken}}"
- },
- {
- "key": "User",
- "value": "{{rootUser}}"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
- },
- {
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "value": "application/json"
}
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"payroll-v1\",\n\t\"description\": \"Payroll\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://payroll-ms:2031/payroll/v1\"\n}",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{}"
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username=operator&password={{adminUserPassword}}",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "applications"
+ "token"
+ ],
+ "query": [
+ {
+ "key": "grant_type",
+ "value": "password"
+ },
+ {
+ "key": "username",
+ "value": "operator"
+ },
+ {
+ "key": "password",
+ "value": "{{adminUserPassword}}"
+ }
]
}
},
"response": []
},
{
- "name": "04.091 Assign payroll-v1 for Tenant",
+ "name": "05.6 Pull operator permissions",
"event": [
{
"listen": "test",
"script": {
- "id": "1a0f8ef5-a7a1-47d4-b83c-92a7b7e4ffcb",
+ "id": "9486d316-2aca-409a-88ff-f17770249dca",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
],
"type": "text/javascript"
}
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "id": "115a549d-513d-46ef-b8af-f9be111bd55d",
+ "exec": [
+ "var CryptoJS = require(\"crypto-js\")",
+ "var rawStr = CryptoJS.enc.Utf8.parse(\"operatorPassword\")",
+ "var base64 = CryptoJS.enc.Base64.stringify(rawStr)",
+ "console.log(`operatorPassword in BASE64: ${base64}`)",
+ "postman.setEnvironmentVariable(\"adminUserPassword\", base64);"
+ ],
+ "type": "text/javascript"
+ }
}
],
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
"request": {
- "method": "PUT",
+ "method": "GET",
"header": [
{
"key": "Authorization",
- "value": "{{rootUserToken}}"
+ "value": "{{adminUserToken}}"
},
{
"key": "User",
- "value": "{{rootUser}}"
+ "value": "{{adminUser}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "type": "text",
+ "value": "application/json"
},
{
"key": "X-Tenant-Identifier",
@@ -1684,7 +1798,7 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"payroll-v1\"\n\t}\n]",
+ "raw": "",
"options": {
"raw": {
"language": "json"
@@ -1692,29 +1806,29 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/users/operator/permissions",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
- "applications"
+ "users",
+ "operator",
+ "permissions"
]
}
},
"response": []
},
{
- "name": "04.100 Create group-v1 application",
+ "name": "06.1 Create Scheduler role for tenant playground",
"event": [
{
"listen": "test",
"script": {
- "id": "b533921d-e3f5-45f0-b035-f1d6395b4703",
+ "id": "c64b529c-6e8a-4ef1-ab0d-a58b9499ade9",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -1727,27 +1841,27 @@
"method": "POST",
"header": [
{
- "key": "Authorization",
- "value": "{{rootUserToken}}"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
},
{
"key": "User",
- "value": "{{rootUser}}"
+ "value": "{{antonyUser}}"
},
{
- "key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "key": "Authorization",
+ "value": "{{antonyToken}}"
},
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
+ "value": "application/json"
}
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"group-v1\",\n\t\"description\": \"Group\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://group-ms:2032/group/v1\"\n}",
+ "raw": "{\n \"identifier\": \"scheduler\",\n \"permissions\": [\n {\n \"permittableEndpointGroupIdentifier\": \"identity__v1__app_self\",\n \"allowedOperations\": [\n \"CHANGE\"\n ]\n },\n {\n \"permittableEndpointGroupIdentifier\": \"portfolio__v1__khepri\",\n \"allowedOperations\": [\n \"CHANGE\"\n ]\n }\n ]\n}\n",
"options": {
"raw": {
"language": "json"
@@ -1755,29 +1869,48 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/roles",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "applications"
+ "roles"
]
}
},
"response": []
},
{
- "name": "04.101 Assign group-v1 for Tenant",
+ "name": "06.2 Create Scheduler user imhotep with password 'initialImhotepPassword'",
"event": [
{
+ "listen": "prerequest",
+ "script": {
+ "id": "3469215d-1ba4-4891-aa3f-e45e343ab4de",
+ "exec": [
+ "var CryptoJS = require(\"crypto-js\")",
+ "",
+ "//Encrypt",
+ "var rawStr = CryptoJS.enc.Utf8.parse(\"initialImhotepPassword\")",
+ "var base64 = CryptoJS.enc.Base64.stringify(rawStr)",
+ "console.log(`imhotepPassword in BASE64: ${base64}`)",
+ "postman.setEnvironmentVariable(\"schedulerUserPassword\", base64);",
+ "",
+ ""
+ ],
+ "type": "text/javascript"
+ }
+ },
+ {
"listen": "test",
"script": {
- "id": "32caff55-23cb-498a-b17c-0444894662ad",
+ "id": "1cad925a-87b3-4ba2-af86-a4d499d68f22",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "setTimeout(function(){}, [3000]);",
""
],
"type": "text/javascript"
@@ -1785,21 +1918,21 @@
}
],
"request": {
- "method": "PUT",
+ "method": "POST",
"header": [
{
"key": "Authorization",
- "value": "{{rootUserToken}}"
+ "value": "{{antonyToken}}"
},
{
"key": "User",
- "value": "{{rootUser}}"
+ "value": "{{antonyUser}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "type": "text",
+ "value": "application/json"
},
{
"key": "X-Tenant-Identifier",
@@ -1808,7 +1941,7 @@
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"group-v1\"\n\t}\n]",
+ "raw": "{\n\t\"identifier\": \"imhotep\",\n\t\"role\": \"scheduler\",\n\t\"password\": \"{{schedulerUserPassword}}\"\n}",
"options": {
"raw": {
"language": "json"
@@ -1816,62 +1949,69 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/users",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
- "applications"
+ "users"
]
}
},
"response": []
},
{
- "name": "04.110 Create notifications-v1 application",
+ "name": "06.3 Login Scheduler user imhotep",
"event": [
{
"listen": "test",
"script": {
- "id": "cfd7c51f-0aac-4b9b-9048-c3ca60672ba0",
+ "id": "272b3e2a-f1b2-41da-aa5d-9e017555d6d2",
"exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "var jsonData = JSON.parse(responseBody);",
+ "",
+ "tests[\"Status code is 200\"] = responseCode.code === 200;",
+ "tests[\"access token was returned \"] = jsonData.accessToken !== undefined;",
+ "",
+ "postman.setEnvironmentVariable(\"schedulerUserToken\", jsonData.accessToken);",
+ "",
+ "",
""
],
"type": "text/javascript"
}
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "id": "dd4a949c-cf1e-4385-aa25-3cb53d39d56d",
+ "exec": [
+ "var delay3seconds = setTimeout(function(){}, [3000]);"
+ ],
+ "type": "text/javascript"
+ }
}
],
"request": {
"method": "POST",
"header": [
{
- "key": "Authorization",
- "value": "{{rootUserToken}}"
- },
- {
- "key": "User",
- "value": "{{rootUser}}"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
- },
- {
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"notifications-v1\",\n\t\"description\": \"Notifications\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://notifications-ms:2033/notification/v1\"\n}",
+ "raw": "{}",
"options": {
"raw": {
"language": "json"
@@ -1879,29 +2019,64 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username=imhotep&password={{schedulerUserPassword}}",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "applications"
+ "token"
+ ],
+ "query": [
+ {
+ "key": "grant_type",
+ "value": "password"
+ },
+ {
+ "key": "username",
+ "value": "imhotep"
+ },
+ {
+ "key": "password",
+ "value": "{{schedulerUserPassword}}"
+ }
]
}
},
"response": []
},
{
- "name": "04.111 Assign notifications-v1 for Tenant",
+ "name": "06.4 Change imhotep user password to 'imhotepPassword'",
"event": [
{
"listen": "test",
"script": {
- "id": "f755efce-b652-48f8-aefb-4cee875df904",
+ "id": "af5b9059-bf36-4715-acc2-25d272552590",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript"
+ }
+ },
+ {
+ "listen": "prerequest",
+ "script": {
+ "id": "0198f255-d555-4a77-8825-04c5bbd1c54d",
+ "exec": [
+ "var CryptoJS = require(\"crypto-js\")",
+ "",
+ "//Encrypt",
+ "var rawStr = CryptoJS.enc.Utf8.parse(\"imhotepPassword\")",
+ "var base64 = CryptoJS.enc.Base64.stringify(rawStr)",
+ "console.log(`imhotepPassword in BASE64: ${base64}`)",
+ "postman.setEnvironmentVariable(\"schedulerUserPassword\", base64);",
+ "",
""
],
"type": "text/javascript"
@@ -1912,12 +2087,8 @@
"method": "PUT",
"header": [
{
- "key": "Authorization",
- "value": "{{rootUserToken}}"
- },
- {
- "key": "User",
- "value": "{{rootUser}}"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
},
{
"key": "Content-Type",
@@ -1926,13 +2097,19 @@
"type": "text"
},
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Authorization",
+ "value": "{{schedulerUserToken}}",
+ "type": "text"
+ },
+ {
+ "key": "User",
+ "value": "imhotep",
+ "type": "text"
}
],
"body": {
"mode": "raw",
- "raw": "[\n\t{\n\t\t\"name\": \"notifications-v1\"\n\t}\n]",
+ "raw": "{\n \"password\": \"{{schedulerUserPassword}}\"\n}",
"options": {
"raw": {
"language": "json"
@@ -1940,78 +2117,106 @@
}
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/users/imhotep/password",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
- "applications"
+ "users",
+ "imhotep",
+ "password"
]
}
},
"response": []
},
{
- "name": "04.999 List tenant applications (Only returning one is a bug?)",
- "protocolProfileBehavior": {
- "disableBodyPruning": true
- },
+ "name": "06.5 Login user imhotep (who has scheduler role)",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "5830a8cd-f000-4b41-bfd2-1ac8c96812e4",
+ "exec": [
+ "tests[\"Status code is 200\"] = responseCode.code === 200;",
+ "",
+ "var jsonData = JSON.parse(responseBody);",
+ "postman.setEnvironmentVariable(\"schedulerUserToken\", jsonData.accessToken);",
+ "",
+ "",
+ ""
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
"request": {
- "method": "GET",
+ "method": "POST",
"header": [
{
- "key": "Authorization",
- "value": "{{rootUserToken}}"
- },
- {
- "key": "User",
- "value": "{{rootUser}}"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
},
{
"key": "Content-Type",
- "value": "application/json"
- },
- {
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "name": "Content-Type",
+ "value": "application/json",
+ "type": "text"
}
],
"body": {
"mode": "raw",
- "raw": ""
+ "raw": "{}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username=imhotep&password={{schedulerUserPassword}}",
"protocol": "http",
"host": [
- "{{provisionerUrl}}"
+ "{{identityUrl}}"
],
"path": [
- "provisioner",
+ "identity",
"v1",
- "tenants",
- "{{tenantIdentifier}}",
- "applications"
+ "token"
+ ],
+ "query": [
+ {
+ "key": "grant_type",
+ "value": "password"
+ },
+ {
+ "key": "username",
+ "value": "imhotep"
+ },
+ {
+ "key": "password",
+ "value": "{{schedulerUserPassword}}"
+ }
]
}
},
"response": []
},
{
- "name": "05.1 Create Admin Role for tenant \"playground\"",
+ "name": "06.6 enable permission identity__v1__app_self for imhotep",
"event": [
{
"listen": "test",
"script": {
- "id": "c64b529c-6e8a-4ef1-ab0d-a58b9499ade9",
+ "id": "5830a8cd-f000-4b41-bfd2-1ac8c96812e4",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
- "setTimeout(function(){}, [3000]);",
+ "",
+ "",
+ "",
""
],
"type": "text/javascript"
@@ -2019,31 +2224,40 @@
}
],
"request": {
- "method": "POST",
+ "method": "PUT",
"header": [
{
"key": "X-Tenant-Identifier",
"value": "{{tenantIdentifier}}"
},
{
- "key": "User",
- "value": "{{antonyUser}}"
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
+ "value": "application/json"
},
{
- "key": "Authorization",
- "value": "{{antonyToken}}"
+ "key": "User",
+ "value": "imhotep",
+ "type": "text"
},
{
- "key": "Content-Type",
- "value": "application/json"
+ "key": "Authorization",
+ "value": "{{schedulerUserToken}}",
+ "type": "text"
}
],
"body": {
"mode": "raw",
- "raw": "{\"identifier\":\"administrator\",\"permissions\":[{\"permittableEndpointGroupIdentifier\":\"identity__v1__roles\",\"allowedOperations\":[\"READ\",\"CHANGE\",\"DELETE\"]},{\"permittableEndpointGroupIdentifier\":\"identity__v1__self\",\"allowedOperations\":[\"READ\",\"CHANGE\",\"DELETE\"]},{\"permittableEndpointGroupIdentifier\":\"office__v1__employees\",\"allowedOperations\":[\"READ\",\"CHANGE\",\"DELETE\"]},{\"permittableEndpointGroupIdentifier\":\"customer__v1__task\",\"al [...]
+ "raw": "true",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/roles",
+ "raw": "http://{{identityUrl}}/identity/v1/applications/rhythm-v1/permissions/identity__v1__app_self/users/imhotep/enabled",
"protocol": "http",
"host": [
"{{identityUrl}}"
@@ -2051,19 +2265,25 @@
"path": [
"identity",
"v1",
- "roles"
+ "applications",
+ "rhythm-v1",
+ "permissions",
+ "identity__v1__app_self",
+ "users",
+ "imhotep",
+ "enabled"
]
}
},
"response": []
},
{
- "name": "05.2 Create Admin User mifos",
+ "name": "07.01 Assign accounting-v1 for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "9486d316-2aca-409a-88ff-f17770249dca",
+ "id": "af1b9ac1-c66c-4353-b59b-ec3e1bea864c",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -2073,15 +2293,15 @@
}
],
"request": {
- "method": "POST",
+ "method": "PUT",
"header": [
{
"key": "Authorization",
- "value": "{{antonyToken}}"
+ "value": "{{rootUserToken}}"
},
{
"key": "User",
- "value": "{{antonyUser}}"
+ "value": "{{rootUser}}"
},
{
"key": "Content-Type",
@@ -2096,7 +2316,7 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"identifier\": \"mifos\",\n\t\"role\": \"administrator\",\n\t\"password\": \"{{adminUserPassword}}\"\n}",
+ "raw": "[\n\t{\n\t\t\"name\": \"accounting-v1\"\n\t}\n]",
"options": {
"raw": {
"language": "json"
@@ -2104,58 +2324,47 @@
}
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/users",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "users"
+ "tenants",
+ "{{tenantIdentifier}}",
+ "applications"
]
}
},
"response": []
},
{
- "name": "05.3 Log in with old password ('password')",
+ "name": "07.020 Assign portfolio-v1 for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "d86648d2-e737-4eb5-9999-f0cb5f2557f7",
+ "id": "ef7b5c59-1623-4183-8196-b76e30922713",
"exec": [
- "tests[\"Status code is 200\"] = responseCode.code === 200;",
- "",
- "var jsonData = JSON.parse(responseBody);",
- "postman.setEnvironmentVariable(\"adminUserToken\", jsonData.accessToken);",
+ "tests[\"Status code is 202\"] = responseCode.code === 202;",
""
],
"type": "text/javascript"
}
- },
- {
- "listen": "prerequest",
- "script": {
- "id": "f0680830-0535-4a81-9151-84e78309789c",
- "exec": [
- "var delay3seconds = setTimeout(function(){}, [3000]);"
- ],
- "type": "text/javascript"
- }
}
],
"request": {
- "method": "POST",
+ "method": "PUT",
"header": [
{
"key": "Authorization",
- "value": "{{antonyToken}}"
+ "value": "{{rootUserToken}}"
},
{
"key": "User",
- "value": "{{antonyUser}}"
+ "value": "{{rootUser}}"
},
{
"key": "Content-Type",
@@ -2170,7 +2379,7 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"identifier\": \"mifos\",\n\t\"role\": \"administrator\",\n\t\"password\": \"cGFzc3dvcmQ=\"\n}",
+ "raw": "[\n\t{\n\t\t\"name\": \"portfolio-v1\"\n\t}\n]",
"options": {
"raw": {
"language": "json"
@@ -2178,45 +2387,30 @@
}
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username=mifos&password={{adminUserPassword}}",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "token"
- ],
- "query": [
- {
- "key": "grant_type",
- "value": "password"
- },
- {
- "key": "username",
- "value": "mifos"
- },
- {
- "key": "password",
- "value": "{{adminUserPassword}}",
- "description": "Initial password"
- }
+ "tenants",
+ "{{tenantIdentifier}}",
+ "applications"
]
}
},
"response": []
},
{
- "name": "05.4 Change Admin user password (required on first login)",
+ "name": "07.021 WAIT FOR PORTFOLIO TO PROVISION (~1min)",
"event": [
{
"listen": "test",
"script": {
- "id": "af5b9059-bf36-4715-acc2-25d272552590",
+ "id": "ef7b5c59-1623-4183-8196-b76e30922713",
"exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;",
- "",
""
],
"type": "text/javascript"
@@ -2224,32 +2418,22 @@
}
],
"request": {
- "method": "PUT",
+ "method": "OPTIONS",
"header": [
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
- },
- {
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
},
{
- "key": "Authorization",
- "value": "{{adminUserToken}}",
- "type": "text"
- },
- {
- "key": "User",
- "value": "{{adminUser}}",
- "type": "text"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "{\n \"password\": \"{{adminUserPassword}}\"\n}",
+ "raw": "",
"options": {
"raw": {
"language": "json"
@@ -2257,34 +2441,30 @@
}
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/users/mifos/password",
+ "raw": "http://{{portfolioUrl}}/portfolio/v1/",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{portfolioUrl}}"
],
"path": [
- "identity",
+ "portfolio",
"v1",
- "users",
- "mifos",
- "password"
+ ""
]
}
},
"response": []
},
{
- "name": "05.5 ADMIN LOGIN",
+ "name": "07.022 enable permission portfolio__v1__khepri for user imhotep",
"event": [
{
"listen": "test",
"script": {
- "id": "af5b9059-bf36-4715-acc2-25d272552590",
+ "id": "5830a8cd-f000-4b41-bfd2-1ac8c96812e4",
"exec": [
- "tests[\"Status code is 200\"] = responseCode.code === 200;",
+ "tests[\"Status code is 202\"] = responseCode.code === 202;",
"",
- "var jsonData = JSON.parse(responseBody);",
- "postman.setEnvironmentVariable(\"adminUserToken\", jsonData.accessToken);",
"",
"",
""
@@ -2294,7 +2474,7 @@
}
],
"request": {
- "method": "POST",
+ "method": "PUT",
"header": [
{
"key": "X-Tenant-Identifier",
@@ -2302,15 +2482,32 @@
},
{
"key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
"value": "application/json"
+ },
+ {
+ "key": "User",
+ "value": "imhotep",
+ "type": "text"
+ },
+ {
+ "key": "Authorization",
+ "value": "{{schedulerUserToken}}",
+ "type": "text"
}
],
"body": {
"mode": "raw",
- "raw": "{}"
+ "raw": "true",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username=mifos&password={{adminUserPassword}}",
+ "raw": "http://{{identityUrl}}/identity/v1/applications/rhythm-v1/permissions/portfolio__v1__khepri/users/imhotep/enabled",
"protocol": "http",
"host": [
"{{identityUrl}}"
@@ -2318,33 +2515,45 @@
"path": [
"identity",
"v1",
- "token"
+ "applications",
+ "rhythm-v1",
+ "permissions",
+ "portfolio__v1__khepri",
+ "users",
+ "imhotep",
+ "enabled"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "ONLY ASSIGN apps you have started",
+ "request": {
+ "method": "OPTIONS",
+ "header": [],
+ "url": {
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/",
+ "protocol": "http",
+ "host": [
+ "{{provisionerUrl}}"
],
- "query": [
- {
- "key": "grant_type",
- "value": "password"
- },
- {
- "key": "username",
- "value": "mifos"
- },
- {
- "key": "password",
- "value": "{{adminUserPassword}}"
- }
+ "path": [
+ "provisioner",
+ "v1",
+ ""
]
}
},
"response": []
},
{
- "name": "06.1 Create Scheduler role for tenant playground",
+ "name": "07.03 Assign deposits for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "c64b529c-6e8a-4ef1-ab0d-a58b9499ade9",
+ "id": "8b4e42c3-5a2f-437d-8f2c-55a6d398f601",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -2354,58 +2563,53 @@
}
],
"request": {
- "method": "POST",
+ "method": "PUT",
"header": [
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Authorization",
+ "value": "{{rootUserToken}}"
},
{
"key": "User",
- "value": "{{adminUser}}"
- },
- {
- "key": "Authorization",
- "value": "{{adminUserToken}}"
+ "value": "{{rootUser}}"
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "type": "text",
"value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "{\n \"identifier\": \"scheduler\",\n \"permissions\": [\n {\n \"permittableEndpointGroupIdentifier\": \"identity__v1__app_self\",\n \"allowedOperations\": [\n \"CHANGE\"\n ]\n },\n {\n \"permittableEndpointGroupIdentifier\": \"portfolio__v1__khepri\",\n \"allowedOperations\": [\n \"CHANGE\"\n ]\n }\n ]\n}\n",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "[\n\t{\n\t\t\"name\": \"deposit-v1\"\n\t}\n]"
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/roles",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "roles"
+ "tenants",
+ "{{tenantIdentifier}}",
+ "applications"
]
}
},
"response": []
},
{
- "name": "06.2 Create Scheduler user imhotep with password '26500BC'",
+ "name": "07.04 Assign teller-v1 for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "7d03384e-a570-48b4-a2f9-8f305dee9098",
+ "id": "99d87103-9033-4dc9-aaef-b82aef6f8e3a",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
""
@@ -2415,21 +2619,19 @@
}
],
"request": {
- "method": "POST",
+ "method": "PUT",
"header": [
{
"key": "Authorization",
- "value": "{{adminUserToken}}"
+ "value": "{{rootUserToken}}"
},
{
"key": "User",
- "value": "{{adminUser}}"
+ "value": "{{rootUser}}"
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "value": "application/json"
},
{
"key": "X-Tenant-Identifier",
@@ -2438,75 +2640,65 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"identifier\": \"imhotep\",\n\t\"role\": \"scheduler\",\n\t\"password\": \"MjY1MDBCQw==\"\n}",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "[\n\t{\n\t\t\"name\": \"teller-v1\"\n\t}\n]"
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/users",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "users"
+ "tenants",
+ "{{tenantIdentifier}}",
+ "applications"
]
}
},
"response": []
},
{
- "name": "06.3 Login Scheduler user imhotep",
+ "name": "07.05 Assign reporting-v1 for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "5830a8cd-f000-4b41-bfd2-1ac8c96812e4",
+ "id": "c0c31e05-7498-46c9-8063-7987327fa1fa",
"exec": [
- "tests[\"Status code is 200\"] = responseCode.code === 200;",
- "",
- "var jsonData = JSON.parse(responseBody);",
- "postman.setEnvironmentVariable(\"schedulerUserToken\", jsonData.accessToken);",
- "",
- "",
+ "tests[\"Status code is 202\"] = responseCode.code === 202;",
""
],
"type": "text/javascript"
}
- },
- {
- "listen": "prerequest",
- "script": {
- "id": "5e84b9b4-361a-4ab5-9ef7-1766a05d940e",
- "exec": [
- "var delay3seconds = setTimeout(function(){}, [3000]);"
- ],
- "type": "text/javascript"
- }
}
],
"request": {
- "method": "POST",
+ "method": "PUT",
"header": [
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Authorization",
+ "value": "{{rootUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{rootUser}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "{}",
+ "raw": "[\n\t{\n\t\t\"name\": \"reporting-v1\"\n\t}\n]",
"options": {
"raw": {
"language": "json"
@@ -2514,46 +2706,31 @@
}
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username=imhotep&password=MjY1MDBCQw==",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "token"
- ],
- "query": [
- {
- "key": "grant_type",
- "value": "password"
- },
- {
- "key": "username",
- "value": "imhotep"
- },
- {
- "key": "password",
- "value": "MjY1MDBCQw=="
- }
+ "tenants",
+ "{{tenantIdentifier}}",
+ "applications"
]
}
},
"response": []
},
{
- "name": "06.4 Change imhotep user password to '26500BC'",
+ "name": "07.06 Assign cheques-v1 for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "af5b9059-bf36-4715-acc2-25d272552590",
+ "id": "e696bb1f-9582-4861-9009-2b9ede155c3b",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
- "",
- "",
- "",
""
],
"type": "text/javascript"
@@ -2564,29 +2741,27 @@
"method": "PUT",
"header": [
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Authorization",
+ "value": "{{rootUserToken}}"
},
{
- "key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "key": "User",
+ "value": "{{rootUser}}"
},
{
- "key": "Authorization",
- "value": "{{schedulerUserToken}}",
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "value": "application/json",
"type": "text"
},
{
- "key": "User",
- "value": "imhotep",
- "type": "text"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "{\n \"password\": \"MjY1MDBCQw==\"\n}",
+ "raw": "[\n\t{\n\t\t\"name\": \"cheques-v1\"\n\t}\n]",
"options": {
"raw": {
"language": "json"
@@ -2594,36 +2769,31 @@
}
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/users/imhotep/password",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "users",
- "imhotep",
- "password"
+ "tenants",
+ "{{tenantIdentifier}}",
+ "applications"
]
}
},
"response": []
},
{
- "name": "06.5 Loginuser imhotep (who has scheduler role)",
+ "name": "07.08 Assign payroll-v1 for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "5830a8cd-f000-4b41-bfd2-1ac8c96812e4",
+ "id": "1a0f8ef5-a7a1-47d4-b83c-92a7b7e4ffcb",
"exec": [
- "tests[\"Status code is 200\"] = responseCode.code === 200;",
- "",
- "var jsonData = JSON.parse(responseBody);",
- "postman.setEnvironmentVariable(\"schedulerUserToken\", jsonData.accessToken);",
- "",
- "",
+ "tests[\"Status code is 202\"] = responseCode.code === 202;",
""
],
"type": "text/javascript"
@@ -2631,22 +2801,30 @@
}
],
"request": {
- "method": "POST",
+ "method": "PUT",
"header": [
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Authorization",
+ "value": "{{rootUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{rootUser}}"
},
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "{}",
+ "raw": "[\n\t{\n\t\t\"name\": \"payroll-v1\"\n\t}\n]",
"options": {
"raw": {
"language": "json"
@@ -2654,38 +2832,39 @@
}
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/token?grant_type=password&username=imhotep&password=MjY1MDBCQw==",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "token"
- ],
- "query": [
- {
- "key": "grant_type",
- "value": "password"
- },
- {
- "key": "username",
- "value": "imhotep"
- },
- {
- "key": "password",
- "value": "MjY1MDBCQw=="
- }
+ "tenants",
+ "{{tenantIdentifier}}",
+ "applications"
]
}
},
"response": []
},
{
- "name": "Q1: WHY 06.6 and 06.7 FAIL?",
+ "name": "07.09 Assign group-v1 for Tenant",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "32caff55-23cb-498a-b17c-0444894662ad",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;",
+ ""
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
"request": {
- "method": "DELETE",
+ "method": "PUT",
"header": [
{
"key": "Authorization",
@@ -2697,7 +2876,9 @@
},
{
"key": "Content-Type",
- "value": "application/json"
+ "name": "Content-Type",
+ "value": "application/json",
+ "type": "text"
},
{
"key": "X-Tenant-Identifier",
@@ -2706,26 +2887,39 @@
],
"body": {
"mode": "raw",
- "raw": ""
+ "raw": "[\n\t{\n\t\t\"name\": \"group-v1\"\n\t}\n]",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
},
"url": {
- "raw": ""
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
+ "protocol": "http",
+ "host": [
+ "{{provisionerUrl}}"
+ ],
+ "path": [
+ "provisioner",
+ "v1",
+ "tenants",
+ "{{tenantIdentifier}}",
+ "applications"
+ ]
}
},
"response": []
},
{
- "name": "06.5 enable permission identity__v1__app_self for imhotep",
+ "name": "07.10 Assign notifications-v1 for Tenant",
"event": [
{
"listen": "test",
"script": {
- "id": "5830a8cd-f000-4b41-bfd2-1ac8c96812e4",
+ "id": "f755efce-b652-48f8-aefb-4cee875df904",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;",
- "",
- "",
- "",
""
],
"type": "text/javascript"
@@ -2736,29 +2930,27 @@
"method": "PUT",
"header": [
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Authorization",
+ "value": "{{rootUserToken}}"
},
{
- "key": "Content-Type",
- "name": "Content-Type",
- "type": "text",
- "value": "application/json"
+ "key": "User",
+ "value": "{{rootUser}}"
},
{
- "key": "User",
- "value": "imhotep",
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "value": "application/json",
"type": "text"
},
{
- "key": "Authorization",
- "value": "{{schedulerUserToken}}",
- "type": "text"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "true",
+ "raw": "[\n\t{\n\t\t\"name\": \"notifications-v1\"\n\t}\n]",
"options": {
"raw": {
"language": "json"
@@ -2766,100 +2958,70 @@
}
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/applications/rhythm-v1/permissions/identity__v1__app_self/users/imhotep/enabled",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "applications",
- "rhythm-v1",
- "permissions",
- "identity__v1__app_self",
- "users",
- "imhotep",
- "enabled"
+ "tenants",
+ "{{tenantIdentifier}}",
+ "applications"
]
}
},
"response": []
},
{
- "name": "06.6 enable permission portfolio__v1__khepri for user imhotep",
- "event": [
- {
- "listen": "test",
- "script": {
- "id": "5830a8cd-f000-4b41-bfd2-1ac8c96812e4",
- "exec": [
- "tests[\"Status code is 200\"] = responseCode.code === 200;",
- "",
- "",
- "",
- ""
- ],
- "type": "text/javascript"
- }
- }
- ],
+ "name": "07.99 List tenant applications (Only returning one is a bug)",
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
"request": {
- "method": "PUT",
+ "method": "GET",
"header": [
{
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
+ "key": "Authorization",
+ "value": "{{rootUserToken}}"
},
{
- "key": "Content-Type",
- "name": "Content-Type",
- "type": "text",
- "value": "application/json"
+ "key": "User",
+ "value": "{{rootUser}}"
},
{
- "key": "User",
- "value": "imhotep",
- "type": "text"
+ "key": "Content-Type",
+ "value": "application/json"
},
{
- "key": "Authorization",
- "value": "{{schedulerUserToken}}",
- "type": "text"
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
}
],
"body": {
"mode": "raw",
- "raw": "true",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": ""
},
"url": {
- "raw": "http://{{identityUrl}}/identity/v1/applications/rhythm-v1/permissions/portfolio__v1__khepri/users/imhotep/enabled",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
- "{{identityUrl}}"
+ "{{provisionerUrl}}"
],
"path": [
- "identity",
+ "provisioner",
"v1",
- "applications",
- "rhythm-v1",
- "permissions",
- "portfolio__v1__khepri",
- "users",
- "imhotep",
- "enabled"
+ "tenants",
+ "{{tenantIdentifier}}",
+ "applications"
]
}
},
"response": []
},
{
- "name": "07.1 Create INCOME ledgers",
+ "name": "08.1 Create REVENUE ledgers",
"event": [
{
"listen": "test",
@@ -2913,7 +3075,7 @@
"response": []
},
{
- "name": "07.2 Create EXPENSE Ledgers",
+ "name": "08.2 Create EXPENSE Ledgers",
"event": [
{
"listen": "test",
@@ -2967,7 +3129,7 @@
"response": []
},
{
- "name": "07.3 Create ASSETS ledgers",
+ "name": "08.3 Create ASSETS ledgers",
"event": [
{
"listen": "test",
@@ -3021,7 +3183,7 @@
"response": []
},
{
- "name": "07.4 Create LIABILITY ledgers",
+ "name": "08.4 Create LIABILITY ledgers",
"event": [
{
"listen": "test",
@@ -3075,7 +3237,7 @@
"response": []
},
{
- "name": "07.5 Create EQUITY ledgers",
+ "name": "08.5 Create EQUITY ledgers",
"event": [
{
"listen": "test",
@@ -3132,36 +3294,28 @@
"name": "NB! Readme has instructions how to run next step",
"request": {
"method": "OPTIONS",
- "header": [
- {
- "key": "Authorization",
- "value": "{{rootUserToken}}"
- },
- {
- "key": "User",
- "value": "{{rootUser}}"
- },
- {
- "key": "Content-Type",
- "value": "application/json"
- },
- {
- "key": "X-Tenant-Identifier",
- "value": "{{tenantIdentifier}}"
- }
- ],
+ "header": [],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
- "raw": ""
+ "raw": "http://{{accountingUrl}}/accounting/v1/",
+ "protocol": "http",
+ "host": [
+ "{{accountingUrl}}"
+ ],
+ "path": [
+ "accounting",
+ "v1",
+ ""
+ ]
}
},
"response": []
},
{
- "name": "08.1 Create accounts (user Runner and import accounts_with_type.csv)",
+ "name": "08.6 Create accounts (user Runner and import accounts_with_type.csv)",
"event": [
{
"listen": "test",
@@ -3229,21 +3383,85 @@
"response": []
},
{
- "name": "09.1 Create member1",
+ "name": "08.7 Verify that accounts are configured",
"event": [
{
"listen": "test",
"script": {
- "id": "4e26fc95-4fad-4972-ac80-528581c28fcc",
+ "id": "edd32edb-8011-4f68-a1f1-adb2503f71ce",
"exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ "var jsonData = JSON.parse(responseBody);",
+ "tests[\"There are 84 accounts\"] = jsonData.totalElements === 84;",
+ ""
],
"type": "text/javascript"
}
}
],
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
"request": {
- "method": "POST",
+ "method": "GET",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": {
+ "raw": "http://{{accountingUrl}}/accounting/v1/accounts?size=200",
+ "protocol": "http",
+ "host": [
+ "{{accountingUrl}}"
+ ],
+ "path": [
+ "accounting",
+ "v1",
+ "accounts"
+ ],
+ "query": [
+ {
+ "key": "size",
+ "value": "200"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "09.10 Create member1",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "4e26fc95-4fad-4972-ac80-528581c28fcc",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
"header": [
{
"key": "Authorization",
@@ -3282,7 +3500,7 @@
"response": []
},
{
- "name": "09.2 Activate member1",
+ "name": "09.11 Activate member1",
"event": [
{
"listen": "test",
@@ -3294,7 +3512,891 @@
"type": "text/javascript"
}
}
- ],
+ ],
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"action\": \"ACTIVATE\"\n}"
+ },
+ "url": {
+ "raw": "http://{{customerUrl}}/customer/v1/customers/member1/commands",
+ "protocol": "http",
+ "host": [
+ "{{customerUrl}}"
+ ],
+ "path": [
+ "customer",
+ "v1",
+ "customers",
+ "member1",
+ "commands"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "09.20 Create customer10",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "d572df48-1555-41c8-839e-fa7e9dc0afcc",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"identifier\": \"customer10\",\n \"type\": \"PERSON\",\n \"givenName\": \"First Name\",\n \"middleName\": null,\n \"surname\": \"LastnameCustomer10\",\n \"dateOfBirth\": {\n \"year\": 1922,\n \"month\": 2,\n \"day\": 22\n },\n \"address\": {\n \t\"street\": \"ABC Street\",\n \t\"region\": \"Nord\",\n \t\"ci [...]
+ },
+ "url": {
+ "raw": "http://{{customerUrl}}/customer/v1/customers",
+ "protocol": "http",
+ "host": [
+ "{{customerUrl}}"
+ ],
+ "path": [
+ "customer",
+ "v1",
+ "customers"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "09.21 Activate customer10",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "afa41cb7-93c9-46d8-8c60-471ae8642097",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"action\": \"ACTIVATE\"\n}"
+ },
+ "url": {
+ "raw": "http://{{customerUrl}}/customer/v1/customers/customer10/commands",
+ "protocol": "http",
+ "host": [
+ "{{customerUrl}}"
+ ],
+ "path": [
+ "customer",
+ "v1",
+ "customers",
+ "customer10",
+ "commands"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "10.10 Create savingsProduct004",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "854f50a3-980b-4450-b8a0-c1333d3beeac",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "value": "application/json",
+ "type": "text"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"identifier\": \"savingsProduct004\",\n \"type\": \"SAVINGS\",\n \"name\": \"Savings Product 004\",\n \"description\": null,\n \"minimumBalance\": 1,\n \"interest\": 0.01,\n \"flexible\": true,\n \"term\": {\n \"period\": \"1\",\n \"timeUnit\": \"YEAR\",\n \"interestPayable\": \"MATURITY\"\n },\n \"currency\": {\n \"code\": \"EUR\",\n \"name\": \"Euro\",\n \"sign\": \"€\",\n \"scale\": 2\n },\n \"charges\": [],\n \"expenseAccountIdentif [...]
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/definitions",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "definitions"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "10.11 Activate savingsProduct004",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "c0ed6c3d-07f1-48e1-b9e6-f0423ae0c5e4",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"action\": \"ACTIVATE\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/definitions/savingsProduct004/commands",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "definitions",
+ "savingsProduct004",
+ "commands"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "10.20 Assign savingsProduct004 to customer10",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"productIdentifier\": \"savingsProduct004\",\n \"beneficiaries\": [\n \"customer10\"\n ],\n \"customerIdentifier\": \"customer10\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/instances",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "instances"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "11.21 Assign savingsProduct004 to member1",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"productIdentifier\": \"savingsProduct004\",\n \"beneficiaries\": [\n \"member1\"\n ],\n \"customerIdentifier\": \"member1\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/instances",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "instances"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "10.30 Create checkingProduct108",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "35f0c037-cbfc-4ffc-b6c7-9c9846cc4018",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"identifier\": \"checkingProduct108\",\n \"type\": \"CHECKING\",\n \"name\": \"checking Product 108\",\n \"description\": null,\n \"minimumBalance\": 0,\n \"interest\": 0,\n \"flexible\": true,\n \"term\": {\n \"period\": \"2\",\n \"timeUnit\": \"YEAR\",\n \"interestPayable\": \"ANNUALLY\"\n },\n \"currency\": {\n \"code\": \"EUR\",\n \"name\": \"Euro\",\n \"sign\": \"€\",\n \"scale\": 2\n },\n \"charges\": [],\n \"expenseAccountIdentif [...]
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/definitions",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "definitions"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "10.31 Activate checkingProduct108",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "9023188b-2b14-4403-aa1f-fc324dc26b9b",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"action\": \"ACTIVATE\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/definitions/checkingProduct108/commands",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "definitions",
+ "checkingProduct108",
+ "commands"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "10.41 Assign checkingProduct108 to customer10",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"productIdentifier\": \"checkingProduct108\",\n \"beneficiaries\": [\n \"customer10\"\n ],\n \"customerIdentifier\": \"customer10\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/instances",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "instances"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "10.42 Assign checkingProduct108 to member1",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "name": "Content-Type",
+ "type": "text",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"productIdentifier\": \"checkingProduct108\",\n \"beneficiaries\": [\n \"member1\"\n ],\n \"customerIdentifier\": \"member1\"\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/instances",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "instances"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "11.3 Get customer10 product instances",
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/instances?customer=customer10",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "instances"
+ ],
+ "query": [
+ {
+ "key": "customer",
+ "value": "customer10"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "11.4 Activate customer10 savings product",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/instances/customer10.9300.00001?command=ACTIVATE",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "instances",
+ "customer10.9300.00001"
+ ],
+ "query": [
+ {
+ "key": "command",
+ "value": "ACTIVATE"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "11.5 Activate customer10 checking product",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/instances/customer10.9300.00002?command=ACTIVATE",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "instances",
+ "customer10.9300.00002"
+ ],
+ "query": [
+ {
+ "key": "command",
+ "value": "ACTIVATE"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "11.6 Get customer10 product instances again",
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/instances?customer=customer10",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "instances"
+ ],
+ "query": [
+ {
+ "key": "customer",
+ "value": "customer10"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "11.7 Get customer10 possible transaction types",
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/instances/transactiontypes?customer=customer10",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "instances",
+ "transactiontypes"
+ ],
+ "query": [
+ {
+ "key": "customer",
+ "value": "customer10"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "11.8 Get member1 product instances",
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "{{adminUserToken}}"
+ },
+ {
+ "key": "User",
+ "value": "{{adminUser}}"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "X-Tenant-Identifier",
+ "value": "{{tenantIdentifier}}"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": {
+ "raw": "http://{{depositUrl}}/deposit/v1/instances?customer=member1",
+ "protocol": "http",
+ "host": [
+ "{{depositUrl}}"
+ ],
+ "path": [
+ "deposit",
+ "v1",
+ "instances"
+ ],
+ "query": [
+ {
+ "key": "customer",
+ "value": "member1"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "11.90 Activate member1 savings product",
"request": {
"method": "POST",
"header": [
@@ -3317,39 +4419,32 @@
],
"body": {
"mode": "raw",
- "raw": "{\n \"action\": \"ACTIVATE\"\n}"
+ "raw": ""
},
"url": {
- "raw": "http://{{customerUrl}}/customer/v1/customers/member1/commands",
+ "raw": "http://{{depositUrl}}/deposit/v1/instances/member1.9300.00001?command=ACTIVATE",
"protocol": "http",
"host": [
- "{{customerUrl}}"
+ "{{depositUrl}}"
],
"path": [
- "customer",
+ "deposit",
"v1",
- "customers",
- "member1",
- "commands"
+ "instances",
+ "member1.9300.00001"
+ ],
+ "query": [
+ {
+ "key": "command",
+ "value": "ACTIVATE"
+ }
]
}
},
"response": []
},
{
- "name": "09.2 Create customer10",
- "event": [
- {
- "listen": "test",
- "script": {
- "id": "d572df48-1555-41c8-839e-fa7e9dc0afcc",
- "exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;"
- ],
- "type": "text/javascript"
- }
- }
- ],
+ "name": "11.91 Activate member1 checking product",
"request": {
"method": "POST",
"header": [
@@ -3372,39 +4467,37 @@
],
"body": {
"mode": "raw",
- "raw": "{\n \"identifier\": \"customer10\",\n \"type\": \"PERSON\",\n \"givenName\": \"First Name\",\n \"middleName\": null,\n \"surname\": \"LastnameCustomer10\",\n \"dateOfBirth\": {\n \"year\": 1922,\n \"month\": 2,\n \"day\": 22\n },\n \"address\": {\n \t\"street\": \"ABC Street\",\n \t\"region\": \"Nord\",\n \t\"ci [...]
+ "raw": ""
},
"url": {
- "raw": "http://{{customerUrl}}/customer/v1/customers",
+ "raw": "http://{{depositUrl}}/deposit/v1/instances/member1.9300.00002?command=ACTIVATE",
"protocol": "http",
"host": [
- "{{customerUrl}}"
+ "{{depositUrl}}"
],
"path": [
- "customer",
+ "deposit",
"v1",
- "customers"
+ "instances",
+ "member1.9300.00002"
+ ],
+ "query": [
+ {
+ "key": "command",
+ "value": "ACTIVATE"
+ }
]
}
},
"response": []
},
{
- "name": "09.3 Activate customer10",
- "event": [
- {
- "listen": "test",
- "script": {
- "id": "afa41cb7-93c9-46d8-8c60-471ae8642097",
- "exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;"
- ],
- "type": "text/javascript"
- }
- }
- ],
+ "name": "11.93. Get member1 products",
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
"request": {
- "method": "POST",
+ "method": "GET",
"header": [
{
"key": "Authorization",
@@ -3425,32 +4518,36 @@
],
"body": {
"mode": "raw",
- "raw": "{\n \"action\": \"ACTIVATE\"\n}"
+ "raw": ""
},
"url": {
- "raw": "http://{{customerUrl}}/customer/v1/customers/customer10/commands",
+ "raw": "http://{{depositUrl}}/deposit/v1/instances?customer=member1",
"protocol": "http",
"host": [
- "{{customerUrl}}"
+ "{{depositUrl}}"
],
"path": [
- "customer",
+ "deposit",
"v1",
- "customers",
- "customer10",
- "commands"
+ "instances"
+ ],
+ "query": [
+ {
+ "key": "customer",
+ "value": "member1"
+ }
]
}
},
"response": []
},
{
- "name": "10.1 Create savingsProduct001",
+ "name": "12.1 create HQ",
"event": [
{
"listen": "test",
"script": {
- "id": "854f50a3-980b-4450-b8a0-c1333d3beeac",
+ "id": "8824daa3-c0b2-4afe-9296-726bd33fb7a1",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;"
],
@@ -3471,9 +4568,7 @@
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "value": "application/json"
},
{
"key": "X-Tenant-Identifier",
@@ -3482,35 +4577,30 @@
],
"body": {
"mode": "raw",
- "raw": "{\n \"identifier\": \"savingsProduct001\",\n \"type\": \"SAVINGS\",\n \"name\": \"Savings Product 1\",\n \"description\": null,\n \"minimumBalance\": 1,\n \"interest\": 0.01,\n \"flexible\": true,\n \"term\": {\n \"period\": \"1\",\n \"timeUnit\": \"YEAR\",\n \"interestPayable\": \"MATURITY\"\n },\n \"currency\": {\n \"code\": \"EUR\",\n \"name\": \"Euro\",\n \"sign\": \"€\",\n \"scale\": 2\n },\n \"charges\": [],\n \"expenseAccountIdentifie [...]
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{\n \"identifier\": \"ourHQ\",\n \"name\": \"Our headquarter\",\n \"description\": null,\n \"address\": {\n \"street\": \"Street\",\n \"city\": \"City\",\n \"postalCode\": null,\n \"region\": null,\n \"country\": \"Germany\",\n \"countryCode\": \"DE\"\n }\n}"
},
"url": {
- "raw": "http://{{depositUrl}}/deposit/v1/definitions",
+ "raw": "http://{{officeUrl}}/office/v1/offices",
"protocol": "http",
"host": [
- "{{depositUrl}}"
+ "{{officeUrl}}"
],
"path": [
- "deposit",
+ "office",
"v1",
- "definitions"
+ "offices"
]
}
},
"response": []
},
{
- "name": "10.2 Activate savingsProduct001",
+ "name": "12.2. create branch",
"event": [
{
"listen": "test",
"script": {
- "id": "c0ed6c3d-07f1-48e1-b9e6-f0423ae0c5e4",
+ "id": "67d85fff-6c6d-476d-9f71-36247ee2bc40",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;"
],
@@ -3531,8 +4621,6 @@
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "type": "text",
"value": "application/json"
},
{
@@ -3542,37 +4630,32 @@
],
"body": {
"mode": "raw",
- "raw": "{\n \"action\": \"ACTIVATE\"\n}",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{\n \"identifier\": \"branch01\",\n \"name\": \"Branch 14\",\n \"description\": null,\n \"address\": {\n \"street\": \"Hohenzollernstraße\",\n \"city\": \"München\",\n \"postalCode\": null,\n \"region\": null,\n \"country\": \"Germany\",\n \"countryCode\": \"DE\"\n },\n \"parentIdentifier\": \"ourHQ\"\n}"
},
"url": {
- "raw": "http://{{depositUrl}}/deposit/v1/definitions/savingsProduct001/commands",
- "protocol": "http",
+ "raw": "http:/{{officeUrl}}/office/v1/offices/ourHQ",
"host": [
- "{{depositUrl}}"
+ "http:"
],
+ "port": "",
"path": [
- "deposit",
+ "{{officeUrl}}",
+ "office",
"v1",
- "definitions",
- "savingsProduct001",
- "commands"
+ "offices",
+ "ourHQ"
]
}
},
"response": []
},
{
- "name": "10.3 Create Checking product",
+ "name": "12.3. create branch office",
"event": [
{
"listen": "test",
"script": {
- "id": "35f0c037-cbfc-4ffc-b6c7-9c9846cc4018",
+ "id": "c7796fc7-df25-4206-a73c-5eb058e90cb0",
"exec": [
"tests[\"Status code is 202\"] = responseCode.code === 202;"
],
@@ -3593,8 +4676,6 @@
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "type": "text",
"value": "application/json"
},
{
@@ -3604,42 +4685,26 @@
],
"body": {
"mode": "raw",
- "raw": "{\n \"identifier\": \"checkingProduct110\",\n \"type\": \"CHECKING\",\n \"name\": \"checking Product 110\",\n \"description\": null,\n \"minimumBalance\": 0,\n \"interest\": 0,\n \"flexible\": true,\n \"term\": {\n \"period\": \"2\",\n \"timeUnit\": \"YEAR\",\n \"interestPayable\": \"ANNUALLY\"\n },\n \"currency\": {\n \"code\": \"EUR\",\n \"name\": \"Euro\",\n \"sign\": \"€\",\n \"scale\": 2\n },\n \"charges\": [],\n \"expenseAccountIdentif [...]
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{\n \"identifier\": \"office001\",\n \"name\": \"Office 001 of branch01\",\n \"description\": null,\n \"address\": {\n \"street\": \"Max-Planck-Straße 1\",\n \"city\": \"München\",\n \"postalCode\": null,\n \"region\": null,\n \"country\": \"Germany\",\n \"countryCode\": \"DE\"\n },\n \"parentIdentifier\": \"branch01\"\n}"
},
"url": {
- "raw": "http://{{depositUrl}}/deposit/v1/definitions",
+ "raw": "http://{{officeUrl}}/office/v1/offices/branch01",
"protocol": "http",
"host": [
- "{{depositUrl}}"
+ "{{officeUrl}}"
],
"path": [
- "deposit",
+ "office",
"v1",
- "definitions"
+ "offices",
+ "branch01"
]
}
},
"response": []
},
{
- "name": "10.4 Activate checkingProduct110",
- "event": [
- {
- "listen": "test",
- "script": {
- "id": "9023188b-2b14-4403-aa1f-fc324dc26b9b",
- "exec": [
- "tests[\"Status code is 202\"] = responseCode.code === 202;"
- ],
- "type": "text/javascript"
- }
- }
- ],
+ "name": "12.40. create employee Peter",
"request": {
"method": "POST",
"header": [
@@ -3653,8 +4718,6 @@
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "type": "text",
"value": "application/json"
},
{
@@ -3664,42 +4727,35 @@
],
"body": {
"mode": "raw",
- "raw": "{\n \"action\": \"ACTIVATE\"\n}",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{\n \"identifier\": \"peter\",\n \"givenName\": \"Peter\",\n \"middleName\": null,\n \"surname\": \"Gibbons\",\n \"contactDetails\": [\n {\n \"group\": \"BUSINESS\",\n \"type\": \"EMAIL\",\n \"value\": \"peter@example.com\",\n \"preferenceLevel\": 1\n }\n ],\n \"assignedOffice\": \"office001\"\n}"
},
"url": {
- "raw": "http://{{depositUrl}}/deposit/v1/definitions/checkingProduct110/commands",
+ "raw": "http://{{officeUrl}}/office/v1/employees",
"protocol": "http",
"host": [
- "{{depositUrl}}"
+ "{{officeUrl}}"
],
"path": [
- "deposit",
+ "office",
"v1",
- "definitions",
- "checkingProduct110",
- "commands"
+ "employees"
]
}
},
"response": []
},
{
- "name": "Q2: WHY customer is twice in next?",
+ "name": "12.41 create employee Samir",
"request": {
- "method": "DELETE",
+ "method": "POST",
"header": [
{
"key": "Authorization",
- "value": "{{rootUserToken}}"
+ "value": "{{adminUserToken}}"
},
{
"key": "User",
- "value": "{{rootUser}}"
+ "value": "{{adminUser}}"
},
{
"key": "Content-Type",
@@ -3712,16 +4768,37 @@
],
"body": {
"mode": "raw",
- "raw": ""
+ "raw": "{\n \"identifier\": \"samir\",\n \"givenName\": \"Samir\",\n \"middleName\": null,\n \"surname\": \"Nagheenanajar\",\n \"contactDetails\": [\n {\n \"group\": \"BUSINESS\",\n \"type\": \"EMAIL\",\n \"value\": \"samir@example.com\",\n \"preferenceLevel\": 1\n }\n ],\n \"assignedOffice\": \"office001\"\n}"
},
"url": {
- "raw": ""
+ "raw": "http://{{officeUrl}}/office/v1/employees",
+ "protocol": "http",
+ "host": [
+ "{{officeUrl}}"
+ ],
+ "path": [
+ "office",
+ "v1",
+ "employees"
+ ]
}
},
"response": []
},
{
- "name": "11.1 Assign savingsProduct001 to customer10",
+ "name": "12.50. create teller1 to office001",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "ae00c4f4-e095-44bc-98ed-6f0a664a8439",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
"request": {
"method": "POST",
"header": [
@@ -3735,9 +4812,7 @@
},
{
"key": "Content-Type",
- "name": "Content-Type",
- "value": "application/json",
- "type": "text"
+ "value": "application/json"
},
{
"key": "X-Tenant-Identifier",
@@ -3746,35 +4821,41 @@
],
"body": {
"mode": "raw",
- "raw": "{\n \"productIdentifier\": \"savingsProduct001\",\n \"beneficiaries\": [\n \"customer10\"\n ],\n \"customerIdentifier\": \"customer10\"\n}",
- "options": {
- "raw": {
- "language": "json"
- }
- }
+ "raw": "{\n \"code\": \"teller1\",\n \"password\": \"teller1Password\",\n \"cashdrawLimit\": \"1000\",\n \"tellerAccountIdentifier\": \"7013\",\n \"vaultAccountIdentifier\": \"7014\",\n \"chequesReceivableAccount\": \"7011\",\n \"cashOverShortAccount\": \"3190\",\n \"denominationRequired\": false\n}"
},
"url": {
- "raw": "http://{{depositUrl}}/deposit/v1/instances",
+ "raw": "http://{{tellerUrl}}/teller/v1/offices/office001/teller",
"protocol": "http",
"host": [
- "{{depositUrl}}"
+ "{{tellerUrl}}"
],
"path": [
- "deposit",
+ "teller",
"v1",
- "instances"
+ "offices",
+ "office001",
+ "teller"
]
}
},
"response": []
},
{
- "name": "11.20. Get customer products",
- "protocolProfileBehavior": {
- "disableBodyPruning": true
- },
+ "name": "12.51 create teller2 to office001",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "ae00c4f4-e095-44bc-98ed-6f0a664a8439",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
"request": {
- "method": "GET",
+ "method": "POST",
"header": [
{
"key": "Authorization",
@@ -3795,36 +4876,41 @@
],
"body": {
"mode": "raw",
- "raw": ""
+ "raw": "{\n \"code\": \"teller2\",\n \"password\": \"teller2Password\",\n \"cashdrawLimit\": \"1000\",\n \"tellerAccountIdentifier\": \"7013\",\n \"vaultAccountIdentifier\": \"7014\",\n \"chequesReceivableAccount\": \"7011\",\n \"cashOverShortAccount\": \"3190\",\n \"denominationRequired\": false\n}"
},
"url": {
- "raw": "http://{{depositUrl}}/deposit/v1/instances?customer=customer10",
+ "raw": "http://{{tellerUrl}}/teller/v1/offices/office001/teller",
"protocol": "http",
"host": [
- "{{depositUrl}}"
+ "{{tellerUrl}}"
],
"path": [
- "deposit",
+ "teller",
"v1",
- "instances"
- ],
- "query": [
- {
- "key": "customer",
- "value": "customer10"
- }
+ "offices",
+ "office001",
+ "teller"
]
}
},
"response": []
},
{
- "name": "11.21. Get member1 products",
- "protocolProfileBehavior": {
- "disableBodyPruning": true
- },
+ "name": "12.60 open teller1 and connect with Peter",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "ae00c4f4-e095-44bc-98ed-6f0a664a8439",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
"request": {
- "method": "GET",
+ "method": "POST",
"header": [
{
"key": "Authorization",
@@ -3845,36 +4931,43 @@
],
"body": {
"mode": "raw",
- "raw": ""
+ "raw": "{\n \"action\": \"OPEN\",\n \"assignedEmployeeIdentifier\": \"peter\",\n \"adjustment\": \"DEBIT\",\n \"amount\": \"5000\"\n}"
},
"url": {
- "raw": "http://{{depositUrl}}/deposit/v1/instances?customer=member1",
+ "raw": "http://{{tellerUrl}}/teller/v1/offices/office001/teller/teller1/commands",
"protocol": "http",
"host": [
- "{{depositUrl}}"
+ "{{tellerUrl}}"
],
"path": [
- "deposit",
+ "teller",
"v1",
- "instances"
- ],
- "query": [
- {
- "key": "customer",
- "value": "member1"
- }
+ "offices",
+ "office001",
+ "teller",
+ "teller1",
+ "commands"
]
}
},
"response": []
},
{
- "name": "11.3 Get customer address",
- "protocolProfileBehavior": {
- "disableBodyPruning": true
- },
+ "name": "12.61 open teller2 and connect with Samir",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "ae00c4f4-e095-44bc-98ed-6f0a664a8439",
+ "exec": [
+ "tests[\"Status code is 202\"] = responseCode.code === 202;"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
"request": {
- "method": "GET",
+ "method": "POST",
"header": [
{
"key": "Authorization",
@@ -3895,22 +4988,22 @@
],
"body": {
"mode": "raw",
- "raw": ""
+ "raw": "{\n \"action\": \"OPEN\",\n \"assignedEmployeeIdentifier\": \"samir\",\n \"adjustment\": \"DEBIT\",\n \"amount\": \"3000\"\n}"
},
"url": {
- "raw": "http://localhost:8888/api/customer/v1/customers/customer10/identifications",
+ "raw": "http://{{tellerUrl}}/teller/v1/offices/office001/teller/teller2/commands",
"protocol": "http",
"host": [
- "localhost"
+ "{{tellerUrl}}"
],
- "port": "8888",
"path": [
- "api",
- "customer",
+ "teller",
"v1",
- "customers",
- "customer10",
- "identifications"
+ "offices",
+ "office001",
+ "teller",
+ "teller2",
+ "commands"
]
}
},
@@ -3918,4 +5011,4 @@
}
],
"protocolProfileBehavior": {}
-}
+}
\ No newline at end of file
diff --git a/postman_scripts/Fineract-Cn-Initial-Setup-Environment.postman_environment.json b/postman_scripts/Fineract-Cn-Initial-Setup-Environment.postman_environment.json
index 6428a72..9b92287 100644
--- a/postman_scripts/Fineract-Cn-Initial-Setup-Environment.postman_environment.json
+++ b/postman_scripts/Fineract-Cn-Initial-Setup-Environment.postman_environment.json
@@ -3,23 +3,13 @@
"name": "Fineract-Cn-Initial-Setup-Environment",
"values": [
{
- "key": "host",
- "value": "localhost",
- "enabled": true
- },
- {
"key": "tenantIdentifier",
"value": "playground",
"enabled": true
},
{
- "key": "user",
- "value": "superuser",
- "enabled": true
- },
- {
"key": "accessToken",
- "value": "Bearer eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJzdXBlcnVzZXIiLCIvbWlmb3MuaW8vc2lnbmF0dXJlVGltZXN0YW1wIjoiMjAxNy0wNC0yNlQwN18yNl8xMyIsIi9taWZvcy5pby90b2tlbkNvbnRlbnQiOiJ7XCJ0b2tlblBlcm1pc3Npb25zXCI6W3tcInBhdGhcIjpcInBvcnRmb2xpby12MS9wcm9kdWN0cy8qL2NoYXJnZXNcIixcImFsbG93ZWRPcGVyYXRpb25zXCI6W1wiQ0hBTkdFXCJdfSx7XCJwYXRoXCI6XCJpZGVudGl0eS12MS9hcHBsaWNhdGlvbnMvKi9wZXJtaXNzaW9ucy8qL3VzZXJzL3t1c2VyaWRlbnRpZmllcn0vZW5hYmxlZFwiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJSRUFEXCJdfSx7XCJwYXRoXCI6XCJpZGV [...]
+ "value": "",
"enabled": true
},
{
@@ -29,7 +19,7 @@
},
{
"key": "rootUserToken",
- "value": "Bearer eyJhbGciOiJSUzUxMiJ9.eyJhdWQiOiJwcm92aXNpb25lci12MSIsInN1YiI6IndlcGVtbmVmcmV0IiwiL2ZpbmNuLmFwYWNoZS5vcmcvcyI6IjIwMTktMDktMTlUMTZfNTRfNTYiLCIvZmluY24uYXBhY2hlLm9yZy9jIjoiUk9MRV9BRE1JTiIsImlzcyI6InN5c3RlbSIsImlhdCI6MTU2OTI0NDMwNiwiZXhwIjoxNTY5MjQ3OTA2fQ.I6o8sv9ArXzr2u_-u0F53DeWpXBSAgLpQLrIF6Cumg4-lJtXyyqwiP34rBLDfj7PCeQSYLy59RR_o4j_isL0FhZZbTM97gZiNts6DY0Q7cuitLyDANYiHra4jhjzA85NH8lp_BDNVhRj2CsrcWXEciztiBzGy9dPS_AOts7ftQarOKilwZSw1KUZOIoMeYLbNk5tXELmREzTVGR8s_kEENdveWub [...]
+ "value": "",
"enabled": true
},
{
@@ -39,7 +29,7 @@
},
{
"key": "antonyToken",
- "value": "Bearer eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJhbnRvbnkiLCIvZmluY24uYXBhY2hlLm9yZy9zIjoiMjAxOS0wOS0yM1QxM18xMl8wOSIsIi9maW5jbi5hcGFjaGUub3JnL2MiOiJ7XCJ0b2tlblBlcm1pc3Npb25zXCI6W3tcInBhdGhcIjpcImlkZW50aXR5LXYxL3VzZXJzL3t1c2VyaWRlbnRpZmllcn0vcGVybWlzc2lvbnNcIixcImFsbG93ZWRPcGVyYXRpb25zXCI6W1wiUkVBRFwiXX0se1wicGF0aFwiOlwiaWRlbnRpdHktdjEvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbmlkZW50aWZpZXJ9L3Blcm1pc3Npb25zXCIsXCJhbGxvd2VkT3BlcmF0aW9uc1wiOltcIlJFQURcIixcIkRFTEVURVwiLFwiQ0hBTkdFXCJdfSx7XCJwYXR [...]
+ "value": "",
"enabled": true
},
{
@@ -74,22 +64,22 @@
},
{
"key": "antonyUserPassword",
- "value": "dGVzdA==",
+ "value": "YW50b255VXNlclBhc3N3b3Jk",
"enabled": true
},
{
"key": "adminUserPassword",
- "value": "cGFzc3dvcmQ=",
+ "value": "b3BlcmF0b3JQYXNzd29yZA==",
"enabled": true
},
{
"key": "adminUserToken",
- "value": "Bearer eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJtaWZvcyIsIi9maW5jbi5hcGFjaGUub3JnL3MiOiIyMDE5LTA5LTIzVDEzXzEyXzA5IiwiL2ZpbmNuLmFwYWNoZS5vcmcvYyI6IntcInRva2VuUGVybWlzc2lvbnNcIjpbe1wicGF0aFwiOlwiaWRlbnRpdHktdjEvdXNlcnMve3VzZXJpZGVudGlmaWVyfS9wZXJtaXNzaW9uc1wiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJSRUFEXCJdfSx7XCJwYXRoXCI6XCJjdXN0b21lci12MS90YXNrc1wiLFwiYWxsb3dlZE9wZXJhdGlvbnNcIjpbXCJSRUFEXCIsXCJDSEFOR0VcIl19LHtcInBhdGhcIjpcImRlcG9zaXQtdjEvZGVmaW5pdGlvbnMvKi9pbnN0YW5jZXNcIixcImFsbG93ZWRPcGV [...]
+ "value": "",
"enabled": true
},
{
"key": "adminUser",
- "value": "mifos",
+ "value": "operator",
"enabled": true
},
{
@@ -104,11 +94,61 @@
},
{
"key": "schedulerUserToken",
- "value": "Bearer eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJpbWhvdGVwIiwiL2ZpbmNuLmFwYWNoZS5vcmcvcyI6IjIwMTktMDktMjNUMTNfMTJfMDkiLCIvZmluY24uYXBhY2hlLm9yZy9jIjoie1widG9rZW5QZXJtaXNzaW9uc1wiOlt7XCJwYXRoXCI6XCJpZGVudGl0eS12MS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uaWRlbnRpZmllcn0vcGVybWlzc2lvbnNcIixcImFsbG93ZWRPcGVyYXRpb25zXCI6W1wiQ0hBTkdFXCJdfSx7XCJwYXRoXCI6XCJpZGVudGl0eS12MS91c2Vycy97dXNlcmlkZW50aWZpZXJ9L3Blcm1pc3Npb25zXCIsXCJhbGxvd2VkT3BlcmF0aW9uc1wiOltcIlJFQURcIl19LHtcInBhdGhcIjpcInBvcnRmb2xpby12MS9 [...]
+ "value": "",
+ "enabled": true
+ },
+ {
+ "key": "schedulerUserPassword",
+ "value": "aW1ob3RlcFBhc3N3b3Jk",
+ "enabled": true
+ },
+ {
+ "key": "officeUrl",
+ "value": "office-ms:2023",
+ "enabled": true
+ },
+ {
+ "key": "tellerUrl",
+ "value": "teller-ms:2028",
+ "enabled": true
+ },
+ {
+ "key": "portfolioUrl",
+ "value": "portfolio-ms:2026",
+ "enabled": true
+ },
+ {
+ "key": "rhythmUrl",
+ "value": "rhythm-ms:2022",
+ "enabled": true
+ },
+ {
+ "key": "reportingUrl",
+ "value": "reporting-ms:2029",
+ "enabled": true
+ },
+ {
+ "key": "chequesUrl",
+ "value": "cheques-ms:2030",
+ "enabled": true
+ },
+ {
+ "key": "payrollUrl",
+ "value": "payroll-ms:2031",
+ "enabled": true
+ },
+ {
+ "key": "groupUrl",
+ "value": "group-ms:2032",
+ "enabled": true
+ },
+ {
+ "key": "notificationsUrl",
+ "value": "notifications-ms:2033",
"enabled": true
}
],
"_postman_variable_scope": "environment",
- "_postman_exported_at": "2019-09-23T14:12:43.724Z",
- "_postman_exported_using": "Postman/7.7.3"
+ "_postman_exported_at": "2019-10-18T13:46:23.344Z",
+ "_postman_exported_using": "Postman/7.9.0"
}