@mojaloop/sdk-scheme-adapter 12.0.1 → 12.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/.circleci/config.yml +619 -0
  2. package/.env.example +13 -0
  3. package/CHANGELOG.md +29 -0
  4. package/CODEOWNERS +2 -0
  5. package/Dockerfile +35 -0
  6. package/LICENSE.md +10 -0
  7. package/PROXY.md +84 -0
  8. package/README.md +228 -0
  9. package/SECURITY.md +18 -0
  10. package/audit-resolve.json +20 -0
  11. package/docker/ml-testing-toolkit/secrets/keygen.sh +5 -0
  12. package/docker/ml-testing-toolkit/secrets/privatekey.pem +27 -0
  13. package/docker/ml-testing-toolkit/secrets/publickey.cer +21 -0
  14. package/docker/ml-testing-toolkit/secrets/tls/createSecrets.sh +29 -0
  15. package/docker/ml-testing-toolkit/secrets/tls/hub_client.csr +28 -0
  16. package/docker/ml-testing-toolkit/secrets/tls/hub_client_cacert.pem +32 -0
  17. package/docker/ml-testing-toolkit/secrets/tls/hub_client_cakey.key +51 -0
  18. package/docker/ml-testing-toolkit/secrets/tls/hub_client_key.key +51 -0
  19. package/docker/ml-testing-toolkit/secrets/tls/hub_server.csr +28 -0
  20. package/docker/ml-testing-toolkit/secrets/tls/hub_server_cacert.pem +32 -0
  21. package/docker/ml-testing-toolkit/secrets/tls/hub_server_cacert.srl +1 -0
  22. package/docker/ml-testing-toolkit/secrets/tls/hub_server_cakey.key +51 -0
  23. package/docker/ml-testing-toolkit/secrets/tls/hub_server_cert.pem +33 -0
  24. package/docker/ml-testing-toolkit/secrets/tls/hub_server_key.key +51 -0
  25. package/docker/ml-testing-toolkit/secrets/tls/openssl.conf +17 -0
  26. package/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/api_spec.yaml +2450 -0
  27. package/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/response_map.json +96 -0
  28. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/api_spec.yaml +4187 -0
  29. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/callback_map.json +542 -0
  30. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/mockRef.json +83 -0
  31. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/trigger_templates/transaction_request_followup.json +125 -0
  32. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/api_spec.yaml +3703 -0
  33. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/callback_map.json +568 -0
  34. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/mockRef.json +83 -0
  35. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/trigger_templates/transaction_request_followup.json +125 -0
  36. package/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/api_spec.yaml +983 -0
  37. package/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/mockRef.json +38 -0
  38. package/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/response_map.json +34 -0
  39. package/docker/ml-testing-toolkit/spec_files/reports/templates/newman/html_template.html +1074 -0
  40. package/docker/ml-testing-toolkit/spec_files/reports/templates/newman/pdf_template.html +765 -0
  41. package/docker/ml-testing-toolkit/spec_files/reports/templates/newman/script.js +98 -0
  42. package/docker/ml-testing-toolkit/spec_files/rules_callback/config.json +3 -0
  43. package/docker/ml-testing-toolkit/spec_files/rules_callback/default.json +426 -0
  44. package/docker/ml-testing-toolkit/spec_files/rules_response/config.json +3 -0
  45. package/docker/ml-testing-toolkit/spec_files/rules_response/default.json +1623 -0
  46. package/docker/ml-testing-toolkit/spec_files/rules_response/default_pisp_rules.json +161 -0
  47. package/docker/ml-testing-toolkit/spec_files/rules_validation/config.json +3 -0
  48. package/docker/ml-testing-toolkit/spec_files/rules_validation/default.json +672 -0
  49. package/docker/ml-testing-toolkit/spec_files/system_config.json +62 -0
  50. package/docker/ml-testing-toolkit/spec_files/user_config.json +45 -0
  51. package/docker/wait4/setup_hosts_file.sh +25 -0
  52. package/docker/wait4/wait4.config.js +71 -0
  53. package/docker/wait4/wait4.js +204 -0
  54. package/docker-compose.yml +67 -0
  55. package/docs/Mojaloop - Modusbox Onboarding functionality.pdf +0 -0
  56. package/docs/dfspInboundApi.yaml +1091 -0
  57. package/jest.config.js +4 -1
  58. package/package.json +13 -8
  59. package/secrets/jwsSigningKey.key +27 -0
  60. package/secrets/jwsVerificationKeys/mojaloop-sdk.pem +9 -0
  61. package/secrets/jwsVerificationKeys/switch.pem +9 -0
  62. package/sequences.puml +99 -0
  63. package/src/ControlAgent/index.js +221 -0
  64. package/{TestServer → src/ControlServer}/handlers.js +0 -0
  65. package/src/ControlServer/index.js +294 -0
  66. package/{InboundServer → src/InboundServer}/api.yaml +0 -0
  67. package/src/InboundServer/api_template.yaml +69 -0
  68. package/{InboundServer → src/InboundServer}/handlers.js +0 -0
  69. package/{InboundServer → src/InboundServer}/index.js +33 -1
  70. package/{InboundServer → src/InboundServer}/middlewares.js +0 -0
  71. package/{OAuthTestServer → src/OAuthTestServer}/index.js +0 -0
  72. package/{OAuthTestServer → src/OAuthTestServer}/model.js +0 -0
  73. package/{OutboundServer → src/OutboundServer}/api.yaml +0 -0
  74. package/{OutboundServer → src/OutboundServer}/api_interfaces/index.d.ts +0 -0
  75. package/{OutboundServer → src/OutboundServer}/api_interfaces/openapi.d.ts +0 -0
  76. package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/bulkQuoteId.yaml +1 -1
  77. package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/bulkTransferId.yaml +1 -1
  78. package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/requestToPayTransactionId.yaml +1 -1
  79. package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/transferId.yaml +1 -1
  80. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/accountsCreationCompleted.yaml +0 -0
  81. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/accountsCreationError.yaml +0 -0
  82. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/accountsCreationTimeout.yaml +0 -0
  83. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteBadRequest.yaml +0 -0
  84. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteServerError.yaml +0 -0
  85. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteSuccess.yaml +0 -0
  86. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteTimeout.yaml +0 -0
  87. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferBadRequest.yaml +0 -0
  88. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferServerError.yaml +0 -0
  89. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferSuccess.yaml +0 -0
  90. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferTimeout.yaml +0 -0
  91. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/partiesByIdError404.yaml +1 -1
  92. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/partiesByIdSuccess.yaml +0 -0
  93. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/quotesPostSuccess.yaml +0 -0
  94. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/quotesServerError.yaml +0 -0
  95. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/requestToPaySuccess.yaml +0 -0
  96. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/requestToPayTransferBadRequest.yaml +0 -0
  97. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/requestToPayTransferSuccess.yaml +0 -0
  98. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/simpleTransfersPostSuccess.yaml +0 -0
  99. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/simpleTransfersServerError.yaml +0 -0
  100. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferBadRequest.yaml +0 -0
  101. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferServerError.yaml +0 -0
  102. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferSuccess.yaml +0 -0
  103. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferTimeout.yaml +0 -0
  104. package/src/OutboundServer/api_template/components/schemas/accountCreationStatus.yaml +18 -0
  105. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/accountsCreationState.yaml +0 -0
  106. package/src/OutboundServer/api_template/components/schemas/accountsRequest.yaml +20 -0
  107. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/accountsResponse.yaml +1 -1
  108. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/async2SyncCurrentState.yaml +0 -0
  109. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteErrorResponse.yaml +0 -0
  110. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteRequest.yaml +2 -2
  111. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteResponse.yaml +1 -1
  112. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteStatus.yaml +0 -0
  113. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteStatusResponse.yaml +1 -1
  114. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferErrorResponse.yaml +0 -0
  115. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferRequest.yaml +2 -2
  116. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferResponse.yaml +1 -1
  117. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferStatus.yaml +0 -0
  118. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferStatusResponse.yaml +1 -1
  119. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorAccountsResponse.yaml +0 -0
  120. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorQuotesResponse.yaml +0 -0
  121. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorResponse.yaml +0 -0
  122. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorSimpleTransfersResponse.yaml +0 -0
  123. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorTransferResponse.yaml +0 -0
  124. package/src/OutboundServer/api_template/components/schemas/extensionListEmptiable.yaml +6 -0
  125. package/src/OutboundServer/api_template/components/schemas/individualQuote.yaml +32 -0
  126. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/individualQuoteResult.yaml +5 -5
  127. package/src/OutboundServer/api_template/components/schemas/individualTransfer.yaml +32 -0
  128. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/individualTransferFulfilment.yaml +2 -2
  129. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/individualTransferResult.yaml +6 -6
  130. package/src/OutboundServer/api_template/components/schemas/mojaloopError.yaml +5 -0
  131. package/src/OutboundServer/api_template/components/schemas/mojaloopTransactionRequestState.yaml +2 -0
  132. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/partiesByIdResponse.yaml +1 -1
  133. package/src/OutboundServer/api_template/components/schemas/quote.yaml +3 -0
  134. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/quoteError.yaml +0 -0
  135. package/src/OutboundServer/api_template/components/schemas/quotesPostRequest.yaml +13 -0
  136. package/src/OutboundServer/api_template/components/schemas/quotesPostResponse.yaml +48 -0
  137. package/src/OutboundServer/api_template/components/schemas/requestToPayRequest.yaml +39 -0
  138. package/src/OutboundServer/api_template/components/schemas/requestToPayResponse.yaml +41 -0
  139. package/src/OutboundServer/api_template/components/schemas/requestToPayTransferRequest.yaml +42 -0
  140. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/requestToPayTransferResponse.yaml +6 -6
  141. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/simpleTransferServerError.yaml +0 -0
  142. package/src/OutboundServer/api_template/components/schemas/simpleTransfersPostRequest.yaml +12 -0
  143. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/simpleTransfersPostResponse.yaml +1 -1
  144. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transactionType.yaml +0 -0
  145. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferContinuationAcceptOTP.yaml +0 -0
  146. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferContinuationAcceptParty.yaml +0 -0
  147. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferContinuationAcceptQuote.yaml +0 -0
  148. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferError.yaml +0 -0
  149. package/src/OutboundServer/api_template/components/schemas/transferFulfilment.yaml +3 -0
  150. package/src/OutboundServer/api_template/components/schemas/transferParty.yaml +40 -0
  151. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferRequest.yaml +4 -4
  152. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferResponse.yaml +6 -6
  153. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferStatus.yaml +0 -0
  154. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferStatusResponse.yaml +1 -1
  155. package/{OutboundServer → src/OutboundServer}/api_template/health.yaml +0 -0
  156. package/{OutboundServer → src/OutboundServer}/api_template/openapi.yaml +0 -0
  157. package/{OutboundServer → src/OutboundServer}/api_template/paths/accounts.yaml +0 -0
  158. package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkQuotes.yaml +0 -0
  159. package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkQuotes_bulkQuoteId.yaml +0 -0
  160. package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkTransfers.yaml +0 -0
  161. package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkTransfers_bulkTransferId.yaml +0 -0
  162. package/{OutboundServer → src/OutboundServer}/api_template/paths/parties_Type_ID.yaml +2 -2
  163. package/{OutboundServer → src/OutboundServer}/api_template/paths/parties_Type_ID_SubId.yaml +3 -3
  164. package/{OutboundServer → src/OutboundServer}/api_template/paths/quotes.yaml +0 -0
  165. package/{OutboundServer → src/OutboundServer}/api_template/paths/requestToPay.yaml +0 -0
  166. package/{OutboundServer → src/OutboundServer}/api_template/paths/requestToPayTransfer.yaml +0 -0
  167. package/{OutboundServer → src/OutboundServer}/api_template/paths/requestToPayTransfer_requestToPayTransactionId.yaml +0 -0
  168. package/{OutboundServer → src/OutboundServer}/api_template/paths/simpleTransfers.yaml +0 -0
  169. package/{OutboundServer → src/OutboundServer}/api_template/paths/transfers.yaml +0 -0
  170. package/{OutboundServer → src/OutboundServer}/api_template/paths/transfers_transferId.yaml +0 -0
  171. package/{OutboundServer → src/OutboundServer}/handlers.js +0 -0
  172. package/{OutboundServer → src/OutboundServer}/index.js +15 -0
  173. package/{OutboundServer → src/OutboundServer}/middlewares.js +0 -0
  174. package/{TestServer → src/TestServer}/api.yaml +0 -0
  175. package/src/TestServer/handlers.js +63 -0
  176. package/{TestServer → src/TestServer}/index.js +31 -0
  177. package/{config.js → src/config.js} +6 -0
  178. package/{index.d.ts → src/index.d.ts} +0 -0
  179. package/{index.js → src/index.js} +0 -0
  180. package/{lib → src/lib}/api/index.js +0 -0
  181. package/{lib → src/lib}/cache.js +0 -0
  182. package/{lib → src/lib}/check.js +0 -0
  183. package/{lib → src/lib}/model/AccountsModel.js +0 -0
  184. package/{lib → src/lib}/model/Async2SyncModel.js +0 -0
  185. package/{lib → src/lib}/model/InboundTransfersModel.js +0 -0
  186. package/{lib → src/lib}/model/OutboundBulkQuotesModel.js +3 -3
  187. package/{lib → src/lib}/model/OutboundBulkTransfersModel.js +1 -1
  188. package/{lib → src/lib}/model/OutboundRequestToPayModel.js +1 -1
  189. package/{lib → src/lib}/model/OutboundRequestToPayTransferModel.js +9 -9
  190. package/{lib → src/lib}/model/OutboundTransfersModel.js +1 -1
  191. package/{lib → src/lib}/model/PartiesModel.js +0 -0
  192. package/{lib → src/lib}/model/ProxyModel/MatchRules/Expression.js +0 -0
  193. package/{lib → src/lib}/model/ProxyModel/MatchRules/Headers.js +0 -0
  194. package/{lib → src/lib}/model/ProxyModel/MatchRules/MatchRule.js +0 -0
  195. package/{lib → src/lib}/model/ProxyModel/MatchRules/Path.js +0 -0
  196. package/{lib → src/lib}/model/ProxyModel/MatchRules/Query.js +0 -0
  197. package/{lib → src/lib}/model/ProxyModel/MatchRules/index.js +0 -0
  198. package/{lib → src/lib}/model/ProxyModel/Route.js +0 -0
  199. package/{lib → src/lib}/model/ProxyModel/configSchema.json +0 -0
  200. package/{lib → src/lib}/model/ProxyModel/index.js +0 -0
  201. package/{lib → src/lib}/model/QuotesModel.js +0 -0
  202. package/{lib → src/lib}/model/TransfersModel.js +0 -0
  203. package/{lib → src/lib}/model/common/BackendError.js +0 -0
  204. package/{lib → src/lib}/model/common/PersistentStateMachine.js +0 -0
  205. package/{lib → src/lib}/model/common/index.js +0 -0
  206. package/{lib → src/lib}/model/index.js +0 -0
  207. package/{lib → src/lib}/model/lib/deferredJob.js +0 -0
  208. package/{lib → src/lib}/model/lib/index.js +0 -0
  209. package/{lib → src/lib}/model/lib/requests/backendRequests.js +0 -0
  210. package/{lib → src/lib}/model/lib/requests/common.js +0 -0
  211. package/{lib → src/lib}/model/lib/requests/index.js +0 -0
  212. package/{lib → src/lib}/model/lib/shared.js +6 -5
  213. package/{lib → src/lib}/randomphrase/index.js +0 -0
  214. package/{lib → src/lib}/randomphrase/words.json +0 -0
  215. package/{lib → src/lib}/router.js +0 -0
  216. package/{lib → src/lib}/validate.js +0 -0
  217. package/test/config/integration.env +9 -0
  218. package/test/integration/lib/cache.test.js +3 -3
  219. package/test/unit/ControlClient.test.js +113 -0
  220. package/test/unit/ControlServer/events.js +41 -0
  221. package/test/unit/ControlServer/index.js +231 -0
  222. package/test/unit/ControlServer.test.js +126 -0
  223. package/test/unit/InboundServer.test.js +4 -4
  224. package/test/unit/TestServer.test.js +5 -5
  225. package/test/unit/api/utils.js +5 -5
  226. package/test/unit/config.test.js +10 -9
  227. package/test/unit/inboundApi/handlers.test.js +6 -6
  228. package/test/unit/index.test.js +2 -1
  229. package/test/unit/lib/cache.test.js +1 -1
  230. package/test/unit/lib/model/AccountsModel.test.js +2 -2
  231. package/test/unit/lib/model/InboundTransfersModel.test.js +5 -5
  232. package/test/unit/lib/model/OutboundBulkQuotesModel.test.js +2 -2
  233. package/test/unit/lib/model/OutboundBulkTransfersModel.test.js +2 -2
  234. package/test/unit/lib/model/OutboundRequestToPayModel.test.js +3 -3
  235. package/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js +2 -2
  236. package/test/unit/lib/model/OutboundTransfersModel.test.js +36 -3
  237. package/test/unit/lib/model/PartiesModel.test.js +28 -28
  238. package/test/unit/lib/model/QuotesModel.test.js +31 -31
  239. package/test/unit/lib/model/TransfersModel.test.js +3 -3
  240. package/test/unit/lib/model/common/PersistentStateMachine.test.js +13 -13
  241. package/test/unit/lib/model/mockedLibRequests.js +1 -1
  242. package/test/unit/outboundApi/handlers.test.js +3 -3
  243. package/.eslintignore +0 -2
  244. package/InboundServer/api_template.yaml +0 -69
  245. package/OutboundServer/api_template/components/schemas/accountCreationStatus.yaml +0 -18
  246. package/OutboundServer/api_template/components/schemas/accountsRequest.yaml +0 -20
  247. package/OutboundServer/api_template/components/schemas/extensionListEmptiable.yaml +0 -6
  248. package/OutboundServer/api_template/components/schemas/individualQuote.yaml +0 -32
  249. package/OutboundServer/api_template/components/schemas/individualTransfer.yaml +0 -32
  250. package/OutboundServer/api_template/components/schemas/mojaloopError.yaml +0 -5
  251. package/OutboundServer/api_template/components/schemas/mojaloopTransactionRequestState.yaml +0 -2
  252. package/OutboundServer/api_template/components/schemas/quote.yaml +0 -3
  253. package/OutboundServer/api_template/components/schemas/quotesPostRequest.yaml +0 -13
  254. package/OutboundServer/api_template/components/schemas/quotesPostResponse.yaml +0 -48
  255. package/OutboundServer/api_template/components/schemas/requestToPayRequest.yaml +0 -39
  256. package/OutboundServer/api_template/components/schemas/requestToPayResponse.yaml +0 -41
  257. package/OutboundServer/api_template/components/schemas/requestToPayTransferRequest.yaml +0 -42
  258. package/OutboundServer/api_template/components/schemas/simpleTransfersPostRequest.yaml +0 -12
  259. package/OutboundServer/api_template/components/schemas/transferFulfilment.yaml +0 -3
  260. package/OutboundServer/api_template/components/schemas/transferParty.yaml +0 -40
@@ -0,0 +1,1074 @@
1
+
2
+ {{!-- {{#each items}}
3
+ <tr class="item">
4
+ <td>
5
+ {{name}}
6
+ </td>
7
+ <td>
8
+ $ {{price}}
9
+ </td>
10
+ </tr>
11
+ {{/each}}
12
+ <tr class="total ">
13
+ <td></td>
14
+ <td>
15
+ Total: ${{total items}}
16
+ </td>
17
+ </tr> --}}
18
+
19
+
20
+
21
+
22
+ <!DOCTYPE html>
23
+ <html lang="en">
24
+ <head>
25
+ <meta charset="UTF-8">
26
+ <title>Testing Toolkit Assertions Report</title>
27
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
28
+ <link rel="stylesheet prefetch" href='https://use.fontawesome.com/releases/v5.0.10/css/all.css'>
29
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/github-gist.min.css">
30
+ <link rel="stylesheet" href="https://cdn.datatables.net/v/bs4/dt-1.10.18/datatables.min.css"/>
31
+
32
+ <style>
33
+ .theme-dark {
34
+ --background-color: #222;
35
+ --bg-card-deck: #444444;
36
+ --text-color: #ccd2d8;
37
+ --tab-border: solid 1px #444;
38
+ --success: #3c9372;
39
+ --failure: #c24a3f;
40
+ --warning: #d28c23;
41
+ --info: #4083b6;
42
+ --badge-outline: #3c9372;
43
+ --badge-bg: #cdd3db;
44
+ --badge-text: #ccd2d9;
45
+ --failure-row: #c24a3f;
46
+ --warning-row: #d28c23;
47
+ --card-bg: #444;
48
+ --card-footer: #4f5758;
49
+ --form-input: #ececb5;
50
+ --hov-text: #d2dae5;
51
+ --h4-text: #ccd1d9;
52
+ }
53
+
54
+ .theme-light {
55
+ --tab-border: solid 1px #fff;
56
+ --text-color: #000000;
57
+ --success: #42a745;
58
+ --failure: #dc3544;
59
+ --warning: #f4c10b;
60
+ --info: #49a1b8;
61
+ --badge-outline: #040411;
62
+ --badge-bg: #f8f9fa;
63
+ --badge-text: #fff;
64
+ --failure-row: #f5c6cb;
65
+ --warning-row: #ffeeba;
66
+ --card-bg: #f7f7f7;
67
+ --hov-text: #fff;
68
+ --h4-text: #ffffff;
69
+ }
70
+
71
+ body {
72
+ padding-top:30px;
73
+ background-color: var(--background-color);
74
+ color: var(--text-color);
75
+ }
76
+
77
+ #execution-data {
78
+ padding: 10px;
79
+ border: var(--tab-border);
80
+ border-top: none;
81
+ }
82
+
83
+ .nav-tabs {
84
+ padding-top: 10px;
85
+ height: 105px;
86
+ overflow-y: auto;
87
+ }
88
+
89
+ .card-header {
90
+ background-color: var(--card-bg)!important;
91
+ }
92
+
93
+ .card-body {
94
+ background-color: var(--card-bg)!important;
95
+ }
96
+
97
+ .card-footer {
98
+ padding: .75rem 1.25rem;
99
+ background-color: var(--card-footer);
100
+ }
101
+
102
+ .card-deck {
103
+ background-color: var(--bg-card-deck)!important;
104
+ }
105
+ .form-control {
106
+ background: var(--form-input);
107
+ }
108
+
109
+ .custom-tab {
110
+ padding: 10px 15px;
111
+ margin-right: 0px;
112
+ height: 46px;
113
+ width: 59px;
114
+ text-align: center;
115
+ border: var(--tab-border);
116
+ border-bottom: none;
117
+ cursor:pointer;
118
+ }
119
+
120
+ body.theme-dark .text-white {
121
+ color: #ccd2d9!important;
122
+ }
123
+ h4 {
124
+ color: var(--h4-text);
125
+ }
126
+
127
+ body.theme-dark h1 {
128
+ color: #ccd2da;
129
+ }
130
+
131
+ body.theme-dark .bg-light>td {
132
+ background: #4f5858!important;
133
+ }
134
+
135
+ body.theme-dark .hljs {
136
+ background: #0f0f0f82!important;
137
+ color: #8d8787!important;
138
+ }
139
+
140
+ .bg-info {
141
+ background-color: var(--info)!important;
142
+ }
143
+ .bg-success {
144
+ background-color: var(--success)!important;
145
+ }
146
+
147
+ .alert-success {
148
+ background-color: var(--success)!important;
149
+ }
150
+
151
+ .alert-warning {
152
+ background-color: var(--warning)!important;
153
+ }
154
+
155
+ .alert-info {
156
+ background-color: var(--info)!important;
157
+ }
158
+
159
+ .bg-warning {
160
+ background-color: var(--warning)!important;
161
+ }
162
+
163
+ .badge-warning {
164
+ color: var(--badge-text)!important;
165
+ background-color: var(--warning)!important;
166
+ }
167
+
168
+ .table-warning>td {
169
+ background-color: var(--warning-row);
170
+ }
171
+
172
+ .alert-danger {
173
+ background-color: var(--failure)!important;
174
+ }
175
+
176
+ body.theme-dark .alert-dark {
177
+ background-color: #636467!important;
178
+ }
179
+
180
+ body.theme-dark .text-dark {
181
+ color: #d1dae4!important;
182
+ }
183
+
184
+ .badge-light {
185
+ color: #212529;
186
+ background-color: var(--badge-bg);
187
+ }
188
+
189
+ .bg-danger {
190
+ background-color: var(--failure)!important;
191
+ }
192
+
193
+ .table-danger>td {
194
+ background-color: var(--failure-row);
195
+ }
196
+
197
+ body.theme-dark .table .thead-light th {
198
+ background-color: #4f5858!important;
199
+ border-color: #dee2e6!important;
200
+ color: #ccd2d8!important;
201
+ }
202
+
203
+ .itPassed {
204
+ background: var(--success);
205
+ color: white;
206
+ }
207
+ .itFailed {
208
+ background: var(--failure);
209
+ color: white;
210
+ }
211
+
212
+ .resultsInfoPass {
213
+ color: var(--success);
214
+ padding-top: 4px;
215
+ }
216
+
217
+ .resultsInfoFail {
218
+ color: var(--failure);
219
+ padding-top: 4px;
220
+ }
221
+
222
+ .badge-outline-success {
223
+ color: var(--success);
224
+ border: 1px solid var(--success);
225
+ background-color: transparent;
226
+ }
227
+
228
+ .badge-outline {
229
+ color: var(--badge-outline);
230
+ border: 1px solid var(--badge-outline);
231
+ background-color: transparent;
232
+ }
233
+
234
+ .btn-outline-success {
235
+ color: var(--success)!important;
236
+ border-color: var(--success)!important;
237
+ }
238
+
239
+ .backToTop:hover {
240
+ background-color: var(--success);
241
+ border-color: var(--success);
242
+ color: var(--hov-text)!important;
243
+ }
244
+
245
+ .btn-outline-success:hover {
246
+ background-color: var(--success);
247
+ border-color: var(--success);
248
+ color: var(--hov-text)!important;
249
+ }
250
+
251
+ .btn-outline-secondary {
252
+ background-color: var(--success)!important;
253
+ color: var(--hov-text)!important;
254
+ }
255
+
256
+ body, html {
257
+ height:100%;
258
+ }
259
+
260
+ .card {
261
+ overflow:hidden;
262
+ }
263
+
264
+ .card-body .rotate {
265
+ z-index: 8;
266
+ float: right;
267
+ height: 100%;
268
+ }
269
+
270
+ .card-body .rotate i {
271
+ color: rgba(20, 20, 20, 0.15);
272
+ position: absolute;
273
+ left: 0;
274
+ left: auto;
275
+ right: -10px;
276
+ bottom: 0;
277
+ display: block;
278
+ -webkit-transform: rotate(-44deg);
279
+ -moz-transform: rotate(-44deg);
280
+ -o-transform: rotate(-44deg);
281
+ -ms-transform: rotate(-44deg);
282
+ transform: rotate(-44deg);
283
+ }
284
+ .dyn-height {
285
+ max-height:350px;
286
+ overflow-y:auto;
287
+ }
288
+
289
+ .nav-pills .nav-link.active {
290
+ background-color: transparent!important;
291
+ }
292
+
293
+ .backToTop {
294
+ display: none;
295
+ position: fixed;
296
+ bottom: 20px;
297
+ right: 30px;
298
+ z-index: 99;
299
+ font-size: 18px;
300
+ outline: none;
301
+ cursor: pointer;
302
+ padding: 15px;
303
+ border-radius: 4px;
304
+ }
305
+
306
+ .card-header .fa {
307
+ transition: .3s transform ease-in-out;
308
+ }
309
+ .card-header .collapsed .fa {
310
+ transform: rotate(90deg);
311
+ }
312
+
313
+ .single-line-tabs {
314
+ padding-top: 10px;
315
+ height: 60px;
316
+ }
317
+
318
+ ::-webkit-scrollbar {
319
+ width: 5px;
320
+ }
321
+
322
+ ::-webkit-scrollbar-track {
323
+ background: #f1f1f1;
324
+ }
325
+
326
+ ::-webkit-scrollbar-thumb {
327
+ background: #888;
328
+ }
329
+
330
+ ::-webkit-scrollbar-thumb:hover {
331
+ background: #555;
332
+ }
333
+
334
+ /* The switch - the box around the slider */
335
+ .switch {
336
+ position: relative;
337
+ display: inline-block;
338
+ width: 44px;
339
+ height: 20px;
340
+ }
341
+
342
+ /* Hide default HTML checkbox */
343
+ .switch input {
344
+ opacity: 0;
345
+ width: 0;
346
+ height: 0;
347
+ }
348
+
349
+ /* The slider */
350
+ .slider {
351
+ position: absolute;
352
+ cursor: pointer;
353
+ top: 0;
354
+ left: 0;
355
+ right: 0;
356
+ bottom: 0;
357
+ background-color: #ccc;
358
+ -webkit-transition: 0.4s;
359
+ transition: 0.4s;
360
+ }
361
+
362
+ .slider:before {
363
+ position: absolute;
364
+ content: "";
365
+ height: 20px;
366
+ width: 20px;
367
+ left: 0px;
368
+ bottom: 4px;
369
+ top: 0;
370
+ bottom: 0;
371
+ margin: auto 0;
372
+ -webkit-transition: 0.4s;
373
+ transition: 0.4s;
374
+ box-shadow: 0 0px 15px #2020203d;
375
+ background: white;
376
+ background-repeat: no-repeat;
377
+ background-position: center;
378
+ }
379
+
380
+ input:checked + .slider {
381
+ background-color: #4083b6;
382
+ }
383
+
384
+ input:focus + .slider {
385
+ box-shadow: 0 0 1px #4083b6;
386
+ }
387
+
388
+ input:checked + .slider:before {
389
+ -webkit-transform: translateX(24px);
390
+ -ms-transform: translateX(24px);
391
+ transform: translateX(24px);
392
+ background: white;
393
+ background-repeat: no-repeat;
394
+ background-position: center;
395
+ }
396
+
397
+ /* Rounded sliders */
398
+ .slider.round {
399
+ border-radius: 34px;
400
+ }
401
+
402
+ .slider.round:before {
403
+ border-radius: 50%;
404
+ }
405
+
406
+ </style>
407
+ </head>
408
+ <body class="">
409
+ <div class="container">
410
+ <div class="container">
411
+ <label>Light</label>
412
+ <label id="switch" class="switch">
413
+ <input type="checkbox" onchange="toggleTheme()" id="slider">
414
+ <span class="slider round"></span>
415
+ </label>
416
+ <label>Dark</label>
417
+ </div>
418
+ <div class="card">
419
+ <div class="card-header">
420
+ <ul class="nav nav-pills mb-3 nav-justified" id="pills-tab" role="tablist">
421
+ <li class="nav-item bg-info active" data-toggle="tooltip" title="Click to view the Summary">
422
+ <a class="nav-link text-white" id="pills-summary-tab" data-toggle="pill" href="#pills-summary" role="tab" aria-controls="pills-summary" aria-selected="true">Summary</a>
423
+ </li>
424
+ <li class="nav-item bg-success" data-toggle="tooltip" title="Click to view the Requests">
425
+ <a class="nav-link text-white" id="pills-requests-tab" data-toggle="pill" href="#pills-requests" role="tab" aria-controls="pills-requests" aria-selected="false">Details</a>
426
+ </li>
427
+ </ul>
428
+ <div class="tab-content" id="pills-tabContent">
429
+ <div class="tab-pane fade show active" id="pills-summary" role="tabcard" aria-labelledby="pills-summary-tab">
430
+ <div class="row">
431
+ <div class="col-md-9 col-lg-12 main">
432
+ <h1 class="display-4 text-center">Testing Toolkit Report</h1>
433
+ <h5 class="text-center">{{runtimeInformation.completedTime}}</h5>
434
+ <div class="row">
435
+ <div class="col-lg-4 col-md-6">
436
+ <div class="card text-white card-danger">
437
+ <div class="card-body bg-success">
438
+ <div class="rotate">
439
+ <i class="fa fa-list fa-4x"></i>
440
+ </div>
441
+ <h6 class="text-uppercase">Total Assertions</h6>
442
+ <h1 class="display-2">{{totalAssertions test_cases}}</h1>
443
+ </div>
444
+ </div>
445
+ </div>
446
+ <div class="col-lg-4 col-md-6">
447
+ <div class="card text-white card-warning">
448
+ <div class="card-body bg-success">
449
+ <div class="rotate">
450
+ <i class="fa fa-share fa-5x"></i>
451
+ </div>
452
+ <h6 class="text-uppercase">Total Passed Tests</h6>
453
+ <h1 class="display-2">{{totalPassedAssertions test_cases}}</h1>
454
+ </div>
455
+ </div>
456
+ </div>
457
+ <div class="col-lg-4 col-md-6">
458
+ <div class="card text-white card-info">
459
+ <div class="card-body bg-danger">
460
+ <div class="rotate">
461
+ <i class="fa fa-plus-circle fa-5x"></i>
462
+ </div>
463
+ <h6 class="text-uppercase">Total Failed Tests</h6>
464
+ <h1 class="display-2">{{totalFailedAssertions test_cases}}</h1>
465
+ </div>
466
+ </div>
467
+ </div>
468
+ </div>
469
+ <hr>
470
+ <div class="row">
471
+ <div class="col">
472
+ <div class="row">
473
+ <div class="col-sm-12 mb-3">
474
+ <div class="card border-info">
475
+ <div class="card-body">
476
+ <h5 class="card-title text-uppercase text-white text-center bg-info">Runtime Information</h5>
477
+ <span><i class="fas fa-file-code"></i></span><strong> Template Name:</strong> {{name}}<br>
478
+ {{#if runtimeInformation}}
479
+ <span><i class="fas fa-stopwatch"></i></span><strong> Total run duration:</strong> {{runtimeInformation.runDurationMs}} ms<br>
480
+ <span><i class="fas fa-stopwatch"></i></span><strong> Average response time:</strong> {{runtimeInformation.avgResponseTime}}<br>
481
+ {{/if}}
482
+ </div>
483
+ </div>
484
+ </div>
485
+ </div>
486
+ <div class="row">
487
+ <div class="col-sm-12 mb-3">
488
+ <div class="table-responsive">
489
+ <table class="table table-striped table-bordered">
490
+ <thead class="thead-inverse">
491
+ <tr class="text-center">
492
+ <th class="text-uppercase">Summary Item</th>
493
+ <th class="text-uppercase">Total</th>
494
+ <th class="text-uppercase">Failed</th>
495
+ </tr>
496
+ </thead>
497
+ <tbody>
498
+ <tr>
499
+ <td>Test Cases</td>
500
+ <td class="text-center">{{totalTestCases test_cases}}</td>
501
+ <td class="text-center">{{failedTestCases test_cases}}</td>
502
+ </tr>
503
+ <tr>
504
+ <td>Requests</td>
505
+ <td class="text-center">{{totalRequests test_cases}}</td>
506
+ <td class="text-center">{{failedRequests test_cases}}</td>
507
+ </tr>
508
+ <tr class="">
509
+ <td>Assertions</td>
510
+ <td class="text-center">{{totalAssertions test_cases}}</td>
511
+ <td class="text-center">{{totalFailedAssertions test_cases}}</td>
512
+ </tr>
513
+ </tbody>
514
+ </table>
515
+ </div>
516
+ </div>
517
+ </div>
518
+ <hr>
519
+ </div>
520
+ </div>
521
+ </div>
522
+ </div>
523
+ </div>
524
+ <div class="tab-pane fade" id="pills-logs" role="tabcard" aria-labelledby="pills-logs-tab">
525
+ <button id="topOfLogsScreen" class="btn btn-outline-success btn-sm backToTop" onclick="topFunction()">Go To Top</button>
526
+ </div>
527
+ <div class="tab-pane fade" id="pills-requests" role="tabcard" aria-labelledby="pills-requests-tab">
528
+
529
+ <button id="topOfRequestsScreen" class="btn btn-outline-success btn-sm backToTop" onclick="topFunction()">Go To Top</button>
530
+
531
+ <div class="btn-group float-right" role="group" aria-label="Button Group">
532
+ <button id="openAll" class="btn btn-outline-success btn-sm float-right">Expand Folders</button>
533
+ <button id="openAllRequests" class="btn btn-outline-success btn-sm float-right">Expand Requests</button>
534
+ <button id="closeAll" class="btn btn-outline-success btn-sm float-right">Collapse Folders</button>
535
+ <button id="closeAllRequests" class="btn btn-outline-success btn-sm float-right">Collapse Requests</button>
536
+ </div>
537
+
538
+ <div class="text-uppercase" id="execution-menu">
539
+ <nav class="table-responsive">
540
+ <ul class="nav single-line-tabs d-none" id="iterationList">
541
+ </ul>
542
+ </nav>
543
+ </div>
544
+ <h6 class="text-uppercase text-muted" id="iterationSelected" style="padding-top: 10px;"></h6>
545
+ {{#each test_cases}}
546
+ <div class="tab-content" id="execution-data">
547
+
548
+ <div class="alert alert-dark text-uppercase text-center iteration-0">
549
+ <a data-toggle="collapse" href="#" data-target="#folder-collapse-{{id}}" aria-expanded="false" aria-controls="collapse" id="folder-{{id}}" class="collapsed text-dark z-block">
550
+ {{#if (ifFailedTestCase this)}}
551
+ <i class="fas fa-info-circle float-left resultsInfoFail" ></i>
552
+ {{/if}}
553
+ {{name}} <i class="float-lg-right fa fa-chevron-down" style="padding-top: 4px;"></i>
554
+ </a>
555
+ </div>
556
+ <div id="folder-collapse-{{id}}" class="collapse" aria-labelledby="folder-{{id}}">
557
+ {{#each requests}}
558
+ <div id="folder-{{../id}}-{{request.id}}" class="card-deck iteration-0">
559
+ <div class="row iteration-0">
560
+ <div class="col-sm-12 mb-3 iteration-0">
561
+ <div class="card iteration-0">
562
+ {{#if (ifAllTestsPassedInRequest request)}}
563
+ <div class="card-header bg-success iteration-0">
564
+ {{else}}
565
+ <div class="card-header bg-danger iteration-0">
566
+ {{/if}}
567
+ <a data-toggle="collapse" href="#" data-target="#collapse-{{../id}}-{{request.id}}" aria-expanded="false" aria-controls="collapse" id="requests-{{../id}}-{{request.id}}" class="collapsed text-white z-block">
568
+ {{request.description}} <i class="float-lg-right fa fa-chevron-down"></i>
569
+ </a>
570
+ </div>
571
+ <div id="collapse-{{../id}}-{{request.id}}" class="collapse" aria-labelledby="requests-{{../id}}-{{request.id}}">
572
+ <div class="card-body">
573
+ <div class="row">
574
+ <div class="col-sm-12 mb-3">
575
+ <div class="card-deck">
576
+ <div class="card border-info" style="width: 50rem;">
577
+ <div class="card-body">
578
+ <h5 class="card-title text-uppercase text-white text-center bg-info">Request Information</h5>
579
+ <span><i class="fas fa-info-circle"></i></span><strong> Request Method:</strong> <span class="badge-outline-success badge badge-success"> {{request.method}}</span><br>
580
+ <span><i class="fas fa-info-circle"></i></span><strong> Request URL:</strong> {{request.path}} <br>
581
+ </div>
582
+ </div>
583
+ <div class="card border-info" style="width: 50rem;">
584
+ <div class="card-body">
585
+ <h5 class="card-title text-uppercase text-white text-center bg-info">Response Information</h5>
586
+ <span><i class="fas fa-info-circle"></i></span><strong> Response Code:</strong> <span class="float-right badge-outline badge badge-success"> {{response.status}} - {{response.statusText}} </span><br>
587
+ <span><i class="fas fa-stopwatch"></i></span><strong> Mean time per request:</strong> <span class="float-right badge-outline badge badge-success"> NA</span><br>
588
+ <span><i class="fas fa-database"></i></span><strong> Mean size per request:</strong> <span class="float-right badge-outline badge badge-success"> NA</span><br>
589
+ <hr>
590
+ <h5 class="card-title text-uppercase text-white text-center bg-info">Test Pass Percentage</h5>
591
+ <div>
592
+ <div class="progress" style="height: 40px;">
593
+ {{#if (ifAllTestsPassedInRequest request)}}
594
+ <div class="progress-bar bg-success" style="width: 100%" role="progressbar">
595
+ {{else}}
596
+ <div class="progress-bar bg-danger" style="width: 100%" role="progressbar">
597
+ {{/if}}
598
+ <h5><strong>{{testPassPercentage request.tests}} %</strong></h5>
599
+ </div>
600
+ </div>
601
+ </div>
602
+ </div>
603
+ </div>
604
+ </div>
605
+ </div>
606
+ </div>
607
+ {{#if request.headers}}
608
+ <div class="row">
609
+ <div class="col-sm-12 mb-3">
610
+ <div class="card-deck">
611
+ <div class="card border-info" style="width: 50rem;">
612
+ <div class="card-body">
613
+ <h5 class="card-title text-uppercase text-white text-center bg-info">Request Headers</h5>
614
+ <div class="table-responsive">
615
+ <table class="table table-bordered">
616
+ <thead class="thead-light text-center"><tr><th>Header Name</th><th>Header Value</th></tr></thead>
617
+ <tbody>
618
+ {{#each request.headers}}
619
+ <tr>
620
+ <td class="text-nowrap">{{@key}}</td>
621
+ <td>{{this}}</td>
622
+ </tr>
623
+ {{/each}}
624
+ </tbody>
625
+ </table>
626
+ </div>
627
+ </div>
628
+ </div>
629
+ </div>
630
+ </div>
631
+ </div>
632
+ {{/if}}
633
+ {{#if request.body}}
634
+ <div class="row">
635
+ <div class="col-sm-12 mb-3">
636
+ <div class="card-deck">
637
+ <div class="card border-info" style="width: 50rem;">
638
+ <div class="card-body">
639
+ <h5 class="card-title text-uppercase text-white text-center bg-info">Request Body</h5>
640
+ <div class="dyn-height">
641
+ <pre><code id="copyText-requestBody-{{../id}}-{{request.id}}" class="prettyPrint">{{jsonStringify request.body}}</code></pre>
642
+ </div>
643
+ <div class="card-footer">
644
+ <button class="btn btn-outline-secondary btn-sm copyButton" type="button" data-clipboard-action="copy" data-clipboard-target="#copyText-requestBody-{{../id}}-{{request.id}}">Copy to Clipboard</button>
645
+ </div>
646
+ </div>
647
+ </div>
648
+ </div>
649
+ </div>
650
+ </div>
651
+ {{/if}}
652
+ {{#if additionalInfo.curlRequest}}
653
+ <div class="row">
654
+ <div class="col-sm-12 mb-3">
655
+ <div class="card-deck">
656
+ <div class="card border-info" style="width: 50rem;">
657
+ <div class="card-body">
658
+ <h5 class="card-title text-uppercase text-white text-center bg-info">CURL command</h5>
659
+ <div class="dyn-height">
660
+ <pre><code id="copyText-curlCommand-{{../id}}-{{request.id}}" class="prettyPrint">{{additionalInfo.curlRequest}}</code></pre>
661
+ </div>
662
+ <div class="card-footer">
663
+ <button class="btn btn-outline-secondary btn-sm copyButton" type="button" data-clipboard-action="copy" data-clipboard-target="#copyText-curlCommand-{{../id}}-{{request.id}}">Copy to Clipboard</button>
664
+ </div>
665
+ </div>
666
+ </div>
667
+ </div>
668
+ </div>
669
+ </div>
670
+ {{/if}}
671
+ {{#if response.data}}
672
+ <div class="row">
673
+ <div class="col-sm-12 mb-3">
674
+ <div class="card-deck">
675
+ <div class="card border-info" style="width: 50rem;">
676
+ <div class="card-body">
677
+ <h5 class="card-title text-uppercase text-white text-center bg-info">Response Body</h5>
678
+ <div class="dyn-height">
679
+ <pre><code id="copyText-responseBody-{{../id}}-{{request.id}}" class="prettyPrint">{{jsonStringify response.data}}</code></pre>
680
+ </div>
681
+ <div class="card-footer">
682
+ <button class="btn btn-outline-secondary btn-sm copyButton" type="button" data-clipboard-action="copy" data-clipboard-target="#copyText-responseBody-{{../id}}-{{request.id}}">Copy to Clipboard</button>
683
+ </div>
684
+ </div>
685
+ </div>
686
+ </div>
687
+ </div>
688
+ </div>
689
+ {{/if}}
690
+ {{#if callback.headers}}
691
+ <div class="row">
692
+ <div class="col-sm-12 mb-3">
693
+ <div class="card-deck">
694
+ <div class="card border-info" style="width: 50rem;">
695
+ <div class="card-body">
696
+ <h5 class="card-title text-uppercase text-white text-center bg-info">Callback Headers</h5>
697
+ <div class="table-responsive">
698
+ <table class="table table-bordered">
699
+ <thead class="thead-light text-center"><tr><th>Header Name</th><th>Header Value</th></tr></thead>
700
+ <tbody>
701
+ {{#each callback.headers}}
702
+ <tr>
703
+ <td class="text-nowrap">{{@key}}</td>
704
+ <td>{{this}}</td>
705
+ </tr>
706
+ {{/each}}
707
+ </tbody>
708
+ </table>
709
+ </div>
710
+ </div>
711
+ </div>
712
+ </div>
713
+ </div>
714
+ </div>
715
+ {{/if}}
716
+ {{#if callback.body}}
717
+ <div class="row">
718
+ <div class="col-sm-12 mb-3">
719
+ <div class="card-deck">
720
+ <div class="card border-info" style="width: 50rem;">
721
+ <div class="card-body">
722
+ <h5 class="card-title text-uppercase text-white text-center bg-info">Callback Body</h5>
723
+ <div class="dyn-height">
724
+ <pre><code id="copyText-callbackBody-{{../id}}-{{request.id}}" class="prettyPrint">{{jsonStringify callback.body}}</code></pre>
725
+ </div>
726
+ <div class="card-footer">
727
+ <button class="btn btn-outline-secondary btn-sm copyButton" type="button" data-clipboard-action="copy" data-clipboard-target="#copyText-callbackBody-{{../id}}-{{request.id}}">Copy to Clipboard</button>
728
+ </div>
729
+ </div>
730
+ </div>
731
+ </div>
732
+ </div>
733
+ </div>
734
+ {{/if}}
735
+
736
+ <div class="row">
737
+ <div class="card border-info">
738
+ <div class="card-body">
739
+ <h5 class="card-title text-uppercase text-white text-center bg-info">Test Information</h5>
740
+ <div class="table-responsive text-nowrap">
741
+ <table id="myTable-0ec92bb5-8001-4566-bd7a-917f7a4df5a4" class="table table-hover">
742
+ <thead><tr class="text-center"><th>Name</th><th>Result</th></tr></thead>
743
+ <tbody>
744
+ {{#each request.tests.assertions}}
745
+ <tr>
746
+ <td>{{description}}</td>
747
+ {{#if (isAssertionPassed resultStatus.status)}}
748
+ <td class="text-center bg-success">
749
+ PASSED
750
+ </td>
751
+ {{else}}
752
+ <td class="text-center bg-warning">
753
+ FAILED
754
+ </td>
755
+ </tr><tr><td colspan="2" class="text-center bg-warning">({{resultStatus.message}})</td>
756
+ {{/if}}
757
+ </tr>
758
+ {{/each}}
759
+ </tbody>
760
+ <tfoot>
761
+ <tr class="bg-light">
762
+ <td><strong>Total</strong></td>
763
+ <td class="text-center"><strong>{{request.tests.passedAssertionsCount}} / {{request.tests.assertions.length}}</strong></td>
764
+ </tr>
765
+ </tfoot>
766
+ </table>
767
+ </div>
768
+ <div class="row d-none">
769
+ <div class="col-sm-12 mb-3">
770
+ <div class="card-deck">
771
+ <div class="card border-danger" style="width: 50rem;">
772
+ <div class="card-body">
773
+ <h5 class="card-title text-uppercase text-white text-center bg-danger">Test Failure</h5>
774
+ <div class="table-responsive">
775
+ <table class="table table-hover">
776
+ <thead><tr class="text-nowrap"><th>Test Name</th><th>Assertion Error</th></tr></thead>
777
+ <tbody>
778
+ </tbody>
779
+ </table>
780
+ </div>
781
+ </div>
782
+ </div>
783
+ </div>
784
+ </div>
785
+ </div>
786
+ </div>
787
+ </div>
788
+ </div>
789
+ </div>
790
+ </div>
791
+ </div>
792
+ </div>
793
+ </div>
794
+ </div>
795
+ {{/each}}
796
+ </div>
797
+
798
+ </div>
799
+ {{/each}}
800
+ </div>
801
+ </div>
802
+ </div>
803
+ </div>
804
+ </div>
805
+ </body>
806
+ </html>
807
+
808
+
809
+ <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
810
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.2.1/js/bootstrap.bundle.min.js"></script>
811
+ <script src="https://cdn.datatables.net/v/bs4/dt-1.10.18/datatables.min.js"></script>
812
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script>
813
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/remarkable/1.7.1/remarkable.min.js"></script>
814
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
815
+ <script>hljs.initHighlightingOnLoad();</script>
816
+
817
+ <script>
818
+ $(document).ready(function() {
819
+ $('[data-toggle="tooltip"]').tooltip({
820
+ trigger : 'hover'
821
+ })
822
+ })
823
+ </script>
824
+
825
+ <script>
826
+ $('#openAll').on('click', function(e) {
827
+ {{#each test_cases}}
828
+ $('#folder-{{id}}').removeClass('collapsed')
829
+ $('#folder-collapse-{{id}}').addClass('show')
830
+ {{/each}}
831
+ })
832
+ </script>
833
+
834
+ <script>
835
+ $('#closeAll').on('click', function(e) {
836
+ {{#each test_cases}}
837
+ $('#folder-{{id}}').addClass('collapsed')
838
+ $('#folder-collapse-{{id}}').removeClass('show')
839
+ {{/each}}
840
+ })
841
+ </script>
842
+
843
+ <script>
844
+ $('#openAllRequests').on('click', function(e) {
845
+ {{#each test_cases}}
846
+ {{#each requests}}
847
+ $('#requests-{{../id}}-{{request.id}}').removeClass('collapsed')
848
+ $('#collapse-{{../id}}-{{request.id}}').removeClass('collapsed')
849
+ $('#requests-{{../id}}-{{request.id}}').addClass('show')
850
+ $('#collapse-{{../id}}-{{request.id}}').addClass('show')
851
+ {{/each}}
852
+ {{/each}}
853
+ })
854
+ </script>
855
+
856
+ <script>
857
+ $('#closeAllRequests').on('click', function(e) {
858
+ {{#each test_cases}}
859
+ {{#each requests}}
860
+ $('#requests-{{../id}}-{{request.id}}').removeClass('show')
861
+ $('#collapse-{{../id}}-{{request.id}}').removeClass('show')
862
+ $('#requests-{{../id}}-{{request.id}}').addClass('collapsed')
863
+ $('#collapse-{{../id}}-{{request.id}}').addClass('collapsed')
864
+ {{/each}}
865
+ {{/each}}
866
+ })
867
+ </script>
868
+
869
+ <script>
870
+ function isJSON(data)
871
+ {
872
+ var ret = true;
873
+ try {
874
+ JSON.parse(data);
875
+ }catch(e) {
876
+ ret = false;
877
+ }
878
+ return ret;
879
+ }
880
+
881
+ function isXML(data)
882
+ {
883
+ return (data.length > 0 && data[0] === '<');
884
+ }
885
+
886
+ // see https://gist.github.com/sente/1083506/d2834134cd070dbcc08bf42ee27dabb746a1c54d#gistcomment-2254622
887
+ function formatXML(data) {
888
+ const PADDING = ' '.repeat(2); // set desired indent size here
889
+ const reg = /(>)(<)(\/*)/g;
890
+ let pad = 0;
891
+ xml = data.replace(reg, '$1\r\n$2$3');
892
+
893
+ return xml.split('\r\n').map((node, index) => {
894
+ let indent = 0;
895
+ if (node.match(/.+<\/\w[^>]*>$/)) {
896
+ indent = 0;
897
+ } else if (node.match(/^<\/\w/) && pad > 0) {
898
+ pad -= 1;
899
+ } else if (node.match(/^<\w[^>]*[^\/]>.*$/)) {
900
+ indent = 1;
901
+ } else {
902
+ indent = 0;
903
+ }
904
+
905
+ pad += indent;
906
+ return PADDING.repeat(pad - indent) + node;
907
+ }).join('\r\n');
908
+ }
909
+
910
+ $(".prettyPrint").each(function () {
911
+ var data = $(this).text();
912
+ // Verify whether data is JSON
913
+ if(isJSON(data))
914
+ {
915
+ obj = JSON.parse(data);
916
+ data = JSON.stringify(obj, null, 2);
917
+ }
918
+ else if(isXML(data)) {
919
+ data = formatXML(data);
920
+ }
921
+ $(this).text(data);
922
+ });
923
+ </script>
924
+
925
+
926
+ <!-- Copy Response Body To Clipboard -->
927
+ <script>
928
+ var clipboard = new ClipboardJS('.copyButton');
929
+
930
+ clipboard.on('success', function(e) {
931
+ e.clearSelection();
932
+ $(".copyButton").addClass("bg-success text-white")
933
+ e.trigger.textContent = '✔ Copied!';
934
+ window.setTimeout(function() {
935
+ $(".copyButton").removeClass("bg-success text-white")
936
+ e.trigger.textContent = 'Copy to Clipboard';
937
+ }, 2000);
938
+ });
939
+ clipboard.on('error', function(e) {
940
+ e.clearSelection();
941
+ $(".copyButton").addClass("bg-danger text-white")
942
+ e.trigger.textContent = '✗ Not Copied';
943
+ window.setTimeout(function() {
944
+ $(".copyButton").removeClass("bg-danger text-white")
945
+ e.trigger.textContent = 'Copy to Clipboard';
946
+ }, 2000);
947
+ });
948
+
949
+ </script>
950
+
951
+ <!-- Render the Description Markdown -->
952
+ <script>
953
+ const remarkable = new Remarkable();
954
+
955
+ const descriptions = document.querySelectorAll("#description");
956
+ descriptions.forEach(description => {
957
+ description.innerHTML = renderHtmlFromMarkdown(description.textContent);
958
+ });
959
+ function renderHtmlFromMarkdown(markdown) {
960
+ return remarkable.render(trim(markdown));
961
+ }
962
+ function trim(string) {
963
+ return string ? string.replace(/^ +| +$/gm, "") : string;
964
+ }
965
+ </script>
966
+
967
+ <script>
968
+ window.onscroll = function() {scrollFunction()};
969
+
970
+ function scrollFunction() {
971
+ if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
972
+ document.getElementById("topOfRequestsScreen").style.display = "block";
973
+ document.getElementById("topOfFailuresScreen").style.display = "block";
974
+ document.getElementById("topOfSkippedScreen").style.display = "block";
975
+ document.getElementById("topOfLogsScreen").style.display = "block";
976
+ document.getElementById("openAll").style.display = "none";
977
+ document.getElementById("closeAll").style.display = "none";
978
+ document.getElementById("openAllRequests").style.display = "none";
979
+ document.getElementById("closeAllRequests").style.display = "none";
980
+ } else {
981
+ document.getElementById("topOfRequestsScreen").style.display = "none";
982
+ document.getElementById("topOfFailuresScreen").style.display = "none";
983
+ document.getElementById("topOfSkippedScreen").style.display = "none";
984
+ document.getElementById("topOfLogsScreen").style.display = "none";
985
+ document.getElementById("openAll").style.display = "block";
986
+ document.getElementById("closeAll").style.display = "block";
987
+ document.getElementById("openAllRequests").style.display = "block";
988
+ document.getElementById("closeAllRequests").style.display = "block";
989
+ }
990
+ }
991
+
992
+ function topFunction() {
993
+ document.body.scrollTop = 0;
994
+ document.documentElement.scrollTop = 0;
995
+ }
996
+ </script>
997
+
998
+ <script type="text/javascript">
999
+ "use strict";
1000
+
1001
+ window.onload = function () {
1002
+
1003
+ // hides all blocks of response
1004
+ var allItems = document.querySelectorAll('[class*=iteration-]');
1005
+ allItems.forEach(function(elem){
1006
+ elem.style.display = 'none';
1007
+ });
1008
+
1009
+
1010
+ let totalIterations = 1;
1011
+
1012
+
1013
+ let menu = document.querySelector('#execution-menu .nav');
1014
+
1015
+ for(var i = 0; i < totalIterations; i++)
1016
+ {
1017
+ let li = document.createElement('li');
1018
+ li.appendChild(document.createTextNode((i + 1)));
1019
+ li.setAttribute('id', 'iteration-' + i);
1020
+ li.classList.add("custom-tab");
1021
+ li.classList.add("itPassed");
1022
+
1023
+ li.addEventListener('click', function() {
1024
+ let allItems = document.querySelectorAll('[class*=iteration-]');
1025
+ allItems.forEach(function(elem) {
1026
+ elem.style.display = 'none';
1027
+ })
1028
+
1029
+ let allMenus = document.querySelectorAll('[id*=iteration-]');
1030
+ allMenus.forEach(function(elem){
1031
+ elem.style.borderBottom = 'none';
1032
+ })
1033
+
1034
+ this.style.borderBottom = 'solid 3px #032a33';
1035
+
1036
+ let items = document.querySelectorAll("." + this.id);
1037
+ items.forEach(function(elem) {
1038
+ elem.style.display = elem.style.display == 'block' ? 'none' : 'block';
1039
+ })
1040
+ });
1041
+ menu.appendChild(li);
1042
+ }
1043
+
1044
+ //shows first tab data
1045
+ document.getElementById('iteration-0').click();
1046
+ // document.getElementById('iterationSelected').innerHTML = `Iteration ${document.getElementById('iteration-0').innerHTML} selected`
1047
+
1048
+ }
1049
+ </script>
1050
+
1051
+ <script>
1052
+ function setTheme(themeName) {
1053
+ localStorage.setItem('theme', themeName);
1054
+ document.body.className = themeName;
1055
+ }
1056
+
1057
+ function toggleTheme() {
1058
+ if (localStorage.getItem('theme') === 'theme-light') {
1059
+ setTheme('theme-dark');
1060
+ } else {
1061
+ setTheme('theme-light');
1062
+ }
1063
+ }
1064
+
1065
+ (function () {
1066
+ if (localStorage.getItem('theme') === 'theme-light') {
1067
+ setTheme('theme-light');
1068
+ document.getElementById('slider').checked = false;
1069
+ } else {
1070
+ setTheme('theme-dark');
1071
+ document.getElementById('slider').checked = true;
1072
+ }
1073
+ })();
1074
+ </script>