From 63836da16b41c93a337ac015d635fefa77cabadd Mon Sep 17 00:00:00 2001 From: Richard Lindner Date: Wed, 4 Dec 2024 08:54:14 +0100 Subject: [PATCH] Fb/json leftovers (#92) * uaa json flag tests * uaa json flag tests 2 * better naming * better ordering of flags * docs for json list and longlist * docs for uaa and json flag * more details for json output * more details for json output 2 * more details * more details 2 * more details 3 --- docs/cap-multitenancy/index.md | 12 +- docs/hana-management/index.md | 16 +- docs/index.md | 12 +- docs/tenant-registry/index.md | 12 +- docs/user-authentication/index.md | 22 +- src/cliOptions.js | 12 +- .../userAuthentication.test.js.snap | 316 ++++++++++++++++-- test/userAuthentication.test.js | 42 ++- 8 files changed, 389 insertions(+), 55 deletions(-) diff --git a/docs/cap-multitenancy/index.md b/docs/cap-multitenancy/index.md index 7d0f07f..eff0989 100644 --- a/docs/cap-multitenancy/index.md +++ b/docs/cap-multitenancy/index.md @@ -42,9 +42,9 @@ Commands for this area are: * --cds-offboard-all offboard all tenants ... [METADATA] onboard subscription metadata ... [TENANT] filter list for tenant id or subdomain - ... --auto-undeploy upgrade with auto undeploy - ... --time list includes timestamps ... --json list in json + ... --time list includes timestamps + ... --auto-undeploy upgrade with auto undeploy ~ are read-only commands * are potentially _dangerous_ commands @@ -69,6 +69,14 @@ If the provided information is insufficient or seems incomplete, then you can al If you already know which subaccount or tenant id you want the information for, then you can filter the list or long list, by providing that information, e.g., `mtx cdsl skyfin-company`. +For automated processes, you can use the `--json` flag and consume the list data as JSON. With the +`--json` flag active, you will get the same data for `cdsl` and `cdsll`. For example, you could get the tenant, global +account and subscription user for each tenant with: + +``` +mtx cdsl --json | jq '.[] | { tenant: .subscribedTenantId, account: .globalAccountGUID, user: .userId }' +``` + ## Example for List Here is an example of listing all subscribed subacconts: diff --git a/docs/hana-management/index.md b/docs/hana-management/index.md index 62f27a6..cedd59d 100644 --- a/docs/hana-management/index.md +++ b/docs/hana-management/index.md @@ -46,9 +46,9 @@ Commands for this area are: * --hdi-delete-all delete all hdi container instances and bindings ... [TENANT_ID] filter for tenant id ... [PARAMS] create binding with custom parameters - ... --reveal show passwords - ... --time list includes timestamps ... --json list in json + ... --time list includes timestamps + ... --reveal show passwords ~ are read-only commands * are potentially _dangerous_ commands @@ -66,7 +66,7 @@ Commands for this area are: The list command `mtx hdil` is the most common entry point and will show a table of all hdi container bindings their most useful associated information. -With the addition of the `--time` option, the list will include both absolute and relative timestamps for creation +With the addition of the `--time` flag, the list will include both absolute and relative timestamps for creation and the latest update. If the provided information is insufficient or seems incomplete, then you can always fallback to the long list @@ -75,6 +75,14 @@ If the provided information is insufficient or seems incomplete, then you can al If you already know which tenant id you want the information for, then you can filter the list or long list, by providing that information, e.g., `mtx hdill `. +For automated processes, you can use the `--json` flag and consume the list data as JSON. With the +`--json` flag active, you will get the same data for `hdil` and `hdill`. For example, to get the ready state of +the all bindings, you use: + +``` +mtx hdil --json | jq '.bindings.[] | { binding: .id, ready: .ready }' +``` + {: .info} Note that due to the way `@sap/cds-mtx` works, the number of hdi 'tenants' does not correspond 1:1 with subscribed subaccounts. Rather there are 2 hdi tenants for each subscribed subaccount, as well as one additional `__META__` hdi @@ -134,7 +142,7 @@ evolution. {: .info} By default MTX Tool hides passwords, to protect the user from revealing them inadvertantly in screen sharing sessions. -When you first set up connections and want to reveal the passwords, use the `--reveal` option. +When you first set up connections and want to reveal the passwords, use the `--reveal` flag. ![](hana-management-tunnel.gif) diff --git a/docs/index.md b/docs/index.md index a37aad7..d6f07e6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -66,8 +66,8 @@ commands: ~ uaasp --uaa-service-passcode SERVICE PASSCODE [TENANT] obtain service token for one-time passcode ~ uaasu --uaa-service-user SERVICE USERNAME PASSWORD [TENANT] obtain service token for username password ... [TENANT] obtain token for tenant, fallback to paas tenant - ... --decode decode result token ... --json output in json + ... --decode decode result token ... --userinfo add detailed user info for passcode or username === tenant registry (reg) === @@ -81,8 +81,8 @@ commands: * --registry-offboard TENANT_ID offboard tenant subscription * --registry-offboard-skip TENANT_ID SKIP_APPS offboard tenant subscription skipping apps ... [TENANT] filter list for tenant id or subdomain - ... --time list includes timestamps ... --json list in json + ... --time list includes timestamps ... --skip-unchanged skip update for unchanged dependencies ... --only-stale only update subscriptions that have not changed today ... --only-failed only update subscriptions with UPDATE_FAILED state @@ -97,9 +97,9 @@ commands: * --cds-offboard-all offboard all tenants ... [METADATA] onboard subscription metadata ... [TENANT] filter list for tenant id or subdomain - ... --auto-undeploy upgrade with auto undeploy - ... --time list includes timestamps ... --json list in json + ... --time list includes timestamps + ... --auto-undeploy upgrade with auto undeploy === hana management (hdi) === ~ hdil --hdi-list [TENANT_ID] list all hdi container instances @@ -113,9 +113,9 @@ commands: * --hdi-delete-all delete all hdi container instances and bindings ... [TENANT_ID] filter for tenant id ... [PARAMS] create binding with custom parameters - ... --reveal show passwords - ... --time list includes timestamps ... --json list in json + ... --time list includes timestamps + ... --reveal show passwords === server diagnostic (srv) === ~ srv --server-info call server /info diff --git a/docs/tenant-registry/index.md b/docs/tenant-registry/index.md index cd366c2..a439feb 100644 --- a/docs/tenant-registry/index.md +++ b/docs/tenant-registry/index.md @@ -46,8 +46,8 @@ Commands for this area are: * --registry-offboard TENANT_ID offboard tenant subscription * --registry-offboard-skip TENANT_ID SKIP_APPS offboard tenant subscription skipping apps ... [TENANT] filter list for tenant id or subdomain - ... --time list includes timestamps ... --json list in json + ... --time list includes timestamps ... --skip-unchanged skip update for unchanged dependencies ... --only-stale only update subscriptions that have not changed today ... --only-failed only update subscriptions with UPDATE_FAILED state @@ -69,7 +69,7 @@ Commands for this area are: The list command `mtx regl` is the most common entry point and will show a table of all registered subacconts with their most useful associated information. -With the addition of the `--time` option, the list will include both absolute and relative timestamps for creation +With the addition of the `--time` flag, the list will include both absolute and relative timestamps for creation and the latest update. If the provided information is insufficient or seems incomplete, then you can always fallback to the long list @@ -78,6 +78,14 @@ If the provided information is insufficient or seems incomplete, then you can al If you already know which subaccount or tenant id you want the information for, then you can filter the list or long list, by providing that information, e.g., `mtx regl skyfin-company`. +For automated processes, you can use the `--json` flag and consume the list data as JSON. With the `--json` flag +active, you will get the same data for `regl` and `regll`. For example, to get the subscription url and state for each +tenant, you could use: + +``` +mtx regl --json | jq '.subscriptions.[] | { url: .url, state: .state }' +``` + ## Example for List Here is an example of listing all registered tenants: diff --git a/docs/user-authentication/index.md b/docs/user-authentication/index.md index 916f8fc..5581c57 100644 --- a/docs/user-authentication/index.md +++ b/docs/user-authentication/index.md @@ -42,8 +42,8 @@ Commands for this area are: ~ uaasp --uaa-service-passcode SERVICE PASSCODE [TENANT] obtain service token for one-time passcode ~ uaasu --uaa-service-user SERVICE USERNAME PASSWORD [TENANT] obtain service token for username password ... [TENANT] obtain token for tenant, fallback to paas tenant - ... --decode decode result token ... --json output in json + ... --decode decode result token ... --userinfo add detailed user info for passcode or username ~ are read-only commands @@ -155,6 +155,26 @@ only be trusted if that account has successfully subscribed to the xsapp. So, `mtx uaasc destination skyfin-company`, will give you the corresponding JWT, which can then be decoded or used as `Authorization` header in an HTTP client. +## Output in JSON + +All uaa commands support the `--json` flag. When this flag is active, the tool will produce JSON output. + +| active flags | output structure | +| :------------------- | :--------------------------------------------------- | +| `--json` | `{ "token": "" }` | +| `--json`, `--decode` | `{ "header": "", "body": "" }` | + +When this flag is active, the regular logging is disabled, so that the +output processing can be automated with, e.g., [jq](https://jqlang.github.io/jq/). + +``` +mtx uaac --json | jq .token +mtx uaac --json --decode | jq .body.scope +``` + +Note that errors are still written in plain text. Since errors are written to `STDERR`, not `STDOUT`, this will not disrupt +any pipes that might be used to process the output. + ## Example for Saas Service Here is an example of retrieving a JWT for the bound destination service: diff --git a/src/cliOptions.js b/src/cliOptions.js index 61b2b84..b50e68c 100644 --- a/src/cliOptions.js +++ b/src/cliOptions.js @@ -69,8 +69,8 @@ commands: ~ uaasp --uaa-service-passcode SERVICE PASSCODE [TENANT] obtain service token for one-time passcode ~ uaasu --uaa-service-user SERVICE USERNAME PASSWORD [TENANT] obtain service token for username password ... [TENANT] obtain token for tenant, fallback to paas tenant - ... --decode decode result token ... --json output in json + ... --decode decode result token ... --userinfo add detailed user info for passcode or username === tenant registry (reg) === @@ -84,8 +84,8 @@ commands: * --registry-offboard TENANT_ID offboard tenant subscription * --registry-offboard-skip TENANT_ID SKIP_APPS offboard tenant subscription skipping apps ... [TENANT] filter list for tenant id or subdomain - ... --time list includes timestamps ... --json list in json + ... --time list includes timestamps ... --skip-unchanged skip update for unchanged dependencies ... --only-stale only update subscriptions that have not changed today ... --only-failed only update subscriptions with UPDATE_FAILED state @@ -100,9 +100,9 @@ commands: * --cds-offboard-all offboard all tenants ... [METADATA] onboard subscription metadata ... [TENANT] filter list for tenant id or subdomain - ... --auto-undeploy upgrade with auto undeploy - ... --time list includes timestamps ... --json list in json + ... --time list includes timestamps + ... --auto-undeploy upgrade with auto undeploy === hana management (hdi) === ~ hdil --hdi-list [TENANT_ID] list all hdi container instances @@ -116,9 +116,9 @@ commands: * --hdi-delete-all delete all hdi container instances and bindings ... [TENANT_ID] filter for tenant id ... [PARAMS] create binding with custom parameters - ... --reveal show passwords - ... --time list includes timestamps ... --json list in json + ... --time list includes timestamps + ... --reveal show passwords === server diagnostic (srv) === ~ srv --server-info call server /info diff --git a/test/__snapshots__/userAuthentication.test.js.snap b/test/__snapshots__/userAuthentication.test.js.snap index 8b83af7..742adf5 100644 --- a/test/__snapshots__/userAuthentication.test.js.snap +++ b/test/__snapshots__/userAuthentication.test.js.snap @@ -49,6 +49,12 @@ JWT Body: }" `; +exports[`uaa tests service tokens saas service client --json 1`] = ` +{ + "token": "eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QiLCJqaWQiOiAiVllUQmxQN2dHVWVFaFprdEhQNlV6N2NjUHNGaDJ4TS9ZMDk4SmlzNTlkTT0ifQ.eyJqdGkiOiI5YmYzNDdjZjMwZDE0YjMzOTk1ODlkYzY3NjZjNDU0OCIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSIsInNlcnZpY2VpbnN0YW5jZWlkIjoiM2M2ZTcwNDgtZjQxOS00NWFiLTg2MWItMWQ1MDBlZDlhODcyIn0sInN1YiI6InNiLWFmYy1kZXYhYjU4NzR8YnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTgiLCJhdXRob3JpdGllcyI6WyJidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OC5EZWxldGVMb2dzQnlBcHAiLCJidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OC5SZWFkTG9nc0J5QXBwIiwidWFhLnJlc291cmNlIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguaW5pdGRiIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguQ3JlYXRlVGV4dFJlc291cmNlIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguQ3JlYXRlQ29uZmlnIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguY2FsbGJhY2siXSwic2NvcGUiOlsiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguRGVsZXRlTG9nc0J5QXBwIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguUmVhZExvZ3NCeUFwcCIsInVhYS5yZXNvdXJjZSIsImJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4LmluaXRkYiIsImJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4LkNyZWF0ZVRleHRSZXNvdXJjZSIsImJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4LkNyZWF0ZUNvbmZpZyIsImJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4LmNhbGxiYWNrIl0sImNsaWVudF9pZCI6InNiLWFmYy1kZXYhYjU4NzR8YnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTgiLCJjaWQiOiJzYi1hZmMtZGV2IWI1ODc0fGJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4IiwiYXpwIjoic2ItYWZjLWRldiFiNTg3NHxidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OCIsImdyYW50X3R5cGUiOiJjbGllbnRfY3JlZGVudGlhbHMiLCJyZXZfc2lnIjoiYjViMWE3MDYiLCJpYXQiOjE3MDgwNzc3MjEsImV4cCI6MTcwODEyMDkyMSwiaXNzIjoiaHR0cHM6Ly9za3lmaW4tY29tcGFueS5hdXRoZW50aWNhdGlvbi5zYXAuaGFuYS5vbmRlbWFuZC5jb20vb2F1dGgvdG9rZW4iLCJ6aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJhdWQiOlsidWFhIiwic2ItYWZjLWRldiFiNTg3NHxidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OCIsImJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4Il19.UVhwIZMohTbI4zHjZn19sZ2e-ViGWoyA-gTwMLDO31uLd9iEHTt-vGuqNhg0HzAexcNC-XfL5Bkl13nEu5PnoJKOwEk0-d6qfu_PiSh930pqnC7j7qSWUVq0qP4K4gFgjuUFBz710r_d0ezAKk3tw81Crgb0Kcb5SIxpz9XoWpotM31yiWLrovIGR3cuCSbnnBc3pNjRNPSeoAkM4UIsD11ju5aL1YFb75vMRW7rg5BRxzlATLdoT04wT1o3y1JCWFwp44OVwnvcSycW2Jl74FbN6XT3MIfShmlHdUusZN2ewiOXvamJ7Gmn47ZBhwikQGHZoNezpWtKzP3HPQPaZg", +} +`; + exports[`uaa tests service tokens saas service client default 1`] = ` "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QiLCJqaWQiOiAiVllUQmxQN2dHVWVFaFprdEhQNlV6N2NjUHNGaDJ4TS9ZMDk4SmlzNTlkTT0ifQ.eyJqdGkiOiI5YmYzNDdjZjMwZDE0YjMzOTk1ODlkYzY3NjZjNDU0OCIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSIsInNlcnZpY2VpbnN0YW5jZWlkIjoiM2M2ZTcwNDgtZjQxOS00NWFiLTg2MWItMWQ1MDBlZDlhODcyIn0sInN1YiI6InNiLWFmYy1kZXYhYjU4NzR8YnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTgiLCJhdXRob3JpdGllcyI6WyJidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OC5EZWxldGVMb2dzQnlBcHAiLCJidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OC5SZWFkTG9nc0J5QXBwIiwidWFhLnJlc291cmNlIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguaW5pdGRiIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguQ3JlYXRlVGV4dFJlc291cmNlIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguQ3JlYXRlQ29uZmlnIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguY2FsbGJhY2siXSwic2NvcGUiOlsiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguRGVsZXRlTG9nc0J5QXBwIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguUmVhZExvZ3NCeUFwcCIsInVhYS5yZXNvdXJjZSIsImJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4LmluaXRkYiIsImJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4LkNyZWF0ZVRleHRSZXNvdXJjZSIsImJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4LkNyZWF0ZUNvbmZpZyIsImJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4LmNhbGxiYWNrIl0sImNsaWVudF9pZCI6InNiLWFmYy1kZXYhYjU4NzR8YnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTgiLCJjaWQiOiJzYi1hZmMtZGV2IWI1ODc0fGJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4IiwiYXpwIjoic2ItYWZjLWRldiFiNTg3NHxidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OCIsImdyYW50X3R5cGUiOiJjbGllbnRfY3JlZGVudGlhbHMiLCJyZXZfc2lnIjoiYjViMWE3MDYiLCJpYXQiOjE3MDgwNzc3MjEsImV4cCI6MTcwODEyMDkyMSwiaXNzIjoiaHR0cHM6Ly9za3lmaW4tY29tcGFueS5hdXRoZW50aWNhdGlvbi5zYXAuaGFuYS5vbmRlbWFuZC5jb20vb2F1dGgvdG9rZW4iLCJ6aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJhdWQiOlsidWFhIiwic2ItYWZjLWRldiFiNTg3NHxidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OCIsImJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4Il19.UVhwIZMohTbI4zHjZn19sZ2e-ViGWoyA-gTwMLDO31uLd9iEHTt-vGuqNhg0HzAexcNC-XfL5Bkl13nEu5PnoJKOwEk0-d6qfu_PiSh930pqnC7j7qSWUVq0qP4K4gFgjuUFBz710r_d0ezAKk3tw81Crgb0Kcb5SIxpz9XoWpotM31yiWLrovIGR3cuCSbnnBc3pNjRNPSeoAkM4UIsD11ju5aL1YFb75vMRW7rg5BRxzlATLdoT04wT1o3y1JCWFwp44OVwnvcSycW2Jl74FbN6XT3MIfShmlHdUusZN2ewiOXvamJ7Gmn47ZBhwikQGHZoNezpWtKzP3HPQPaZg" @@ -179,6 +185,14 @@ JWT Body: }" `; +exports[`uaa tests service tokens saas service passcode --json 1`] = `[]`; + +exports[`uaa tests service tokens saas service passcode --json 2`] = ` +{ + "token": "eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QiLCJqaWQiOiAiUzkvMVJQenN2K2ZxVTBpK0ZWU1NlTXFRV29mQzdKbEY0Q1hIVHQ3TzRuQT0ifQ.eyJqdGkiOiJhMWU1Njc3Y2FkYjI0YWFkOWU5MDc5MjlmNjJhMTgwNiIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSIsIm9pZGNJc3N1ZXIiOiJodHRwczovL2F3ZHNwOGVmNC5hY2NvdW50czQwMC5vbmRlbWFuZC5jb20iLCJzZXJ2aWNlaW5zdGFuY2VpZCI6IjNjNmU3MDQ4LWY0MTktNDVhYi04NjFiLTFkNTAwZWQ5YTg3MiJ9LCJ1c2VyX3V1aWQiOiI4ZTk3MTY2Yi0xNTRjLTQyYzQtYWEzOC05NzMxY2U0MWE5ODciLCJ4cy51c2VyLmF0dHJpYnV0ZXMiOnt9LCJ4cy5zeXN0ZW0uYXR0cmlidXRlcyI6eyJ4cy5zYW1sLmdyb3VwcyI6WyJhZmNfZGV2ZWxvcGVyX2NhbmFyeSIsImFmY19kZXZlbG9wZXJfaHViIl0sInhzLnJvbGVjb2xsZWN0aW9ucyI6W119LCJnaXZlbl9uYW1lIjoiUmljaGFyZCIsImZhbWlseV9uYW1lIjoiTGluZG5lciIsInN1YiI6ImE5N2QxMGMxLTdkMGQtNDU3My1hYmZiLTNhZGNlZjU0N2EzMiIsInNjb3BlIjpbIm9wZW5pZCIsInVhYS51c2VyIl0sImNsaWVudF9pZCI6InNiLWFmYy1kZXYhYjU4NzR8YnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTgiLCJjaWQiOiJzYi1hZmMtZGV2IWI1ODc0fGJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4IiwiYXpwIjoic2ItYWZjLWRldiFiNTg3NHxidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OCIsImdyYW50X3R5cGUiOiJwYXNzd29yZCIsInVzZXJfaWQiOiJhOTdkMTBjMS03ZDBkLTQ1NzMtYWJmYi0zYWRjZWY1NDdhMzIiLCJvcmlnaW4iOiJzYXAuY3VzdG9tIiwidXNlcl9uYW1lIjoicmljaGFyZC5saW5kbmVyQHNhcC5jb20iLCJlbWFpbCI6InJpY2hhcmQubGluZG5lckBzYXAuY29tIiwicmV2X3NpZyI6ImY0MmE3MTYwIiwiaWF0IjoxNzA4MDc3NzU1LCJleHAiOjE3MDgxMjA5NTUsImlzcyI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoiNWVjYzc0MTMtMmI3ZS00MTRhLTk0OTYtYWQ0YTYxZjZjY2NmIiwiYXVkIjpbInVhYSIsInNiLWFmYy1kZXYhYjU4NzR8YnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTgiLCJvcGVuaWQiXX0.nh7UEXdp0vk0rEkTs_GKV1qfwT_MBdswOnNyntlybvXGSxhkOrPB7PFFksq7Ke2w3yBsRdJ0xt5vRT_XPeyYphEomliCgWOXn4clWzWWuR9hUYYmxpBI2ZY30zK5baJjUWRVv-F_RD0clGnZJR5LxgzQVNIrjIJbTFBoGr7DgIc9TmxdXgrUYZoKt5XvKiLosXTQfIB46nL9pfK1fzChjWhGOCWj0dIigPgNHqQx1BbePOkgLZb72rRvqOpzGN-ynd36sowOEKgqmeiPjt4NEPukmX63yxpMv-PTf7syKAF49oPIZCblA5MWD416OEPj525_44dS8IL5LQB3V2_YIg", +} +`; + exports[`uaa tests service tokens saas service passcode --userinfo 1`] = ` [ [ @@ -339,6 +353,14 @@ JWT Body: }" `; +exports[`uaa tests service tokens saas service user --json 1`] = `[]`; + +exports[`uaa tests service tokens saas service user --json 2`] = ` +{ + "token": "eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QiLCJqaWQiOiAiYWVYOE5lalRmbEplUXhBZVMxTFVnT1JNY2RFU0JCS1BZQXdXYW14bVljYz0ifQ.eyJqdGkiOiIyZGY3MjMzYzBkMTM0NjE0ODQyMjBhOGI3YTBjNzNjYiIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSIsIm9pZGNJc3N1ZXIiOiJodHRwczovL2F3ZHNwOGVmNC5hY2NvdW50czQwMC5vbmRlbWFuZC5jb20iLCJzZXJ2aWNlaW5zdGFuY2VpZCI6IjNjNmU3MDQ4LWY0MTktNDVhYi04NjFiLTFkNTAwZWQ5YTg3MiJ9LCJ1c2VyX3V1aWQiOiJhYmI5ZGQ5Yi1iMDEyLTRkZjctYmNjZi00MWVkODY3NmNhYjMiLCJ4cy51c2VyLmF0dHJpYnV0ZXMiOnt9LCJ4cy5zeXN0ZW0uYXR0cmlidXRlcyI6eyJ4cy5yb2xlY29sbGVjdGlvbnMiOlsiQUZDX0FMTCJdfSwiZ2l2ZW5fbmFtZSI6IkRlZmF1bHQiLCJmYW1pbHlfbmFtZSI6IlRlc3RVc2VyIiwic3ViIjoiOWI4ODAzMjAtZDVmOC00NDg3LTkxN2MtYmMwZThjYzcwZDZmIiwic2NvcGUiOlsib3BlbmlkIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguRGlzcGxheUFsbEJ1c2luZXNzTG9ncyIsInVhYS51c2VyIl0sImNsaWVudF9pZCI6InNiLWFmYy1kZXYhYjU4NzR8YnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTgiLCJjaWQiOiJzYi1hZmMtZGV2IWI1ODc0fGJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4IiwiYXpwIjoic2ItYWZjLWRldiFiNTg3NHxidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OCIsImdyYW50X3R5cGUiOiJwYXNzd29yZCIsInVzZXJfaWQiOiI5Yjg4MDMyMC1kNWY4LTQ0ODctOTE3Yy1iYzBlOGNjNzBkNmYiLCJvcmlnaW4iOiJzYXAuY3VzdG9tIiwidXNlcl9uYW1lIjoidGVzdHVzZXJAc2FwLmNvbSIsImVtYWlsIjoidGVzdHVzZXJAc2FwLmNvbSIsImF1dGhfdGltZSI6MTcwODA3Nzc5NiwicmV2X3NpZyI6Ijc0Y2MyZmJmIiwiaWF0IjoxNzA4MDc3Nzk2LCJleHAiOjE3MDgxMjA5OTYsImlzcyI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoiNWVjYzc0MTMtMmI3ZS00MTRhLTk0OTYtYWQ0YTYxZjZjY2NmIiwiYXVkIjpbInVhYSIsInNiLWFmYy1kZXYhYjU4NzR8YnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTgiLCJvcGVuaWQiLCJidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OCJdfQ.mgKzqg5kVuFiCtWQiC9oWwT8Ng0exL9ldkK0eAaLZKZERm2774CjwFoOPicuwGlzVBrU6adjztW-SdVnGA6GBzCRHUX7ce7okk20QVEKeHoZQFHvlZHJlHW93GP4K8kZ4R3vQPYgCIvNhRUwU7uz_TKdnJc68ffNnpFw_iu8LPjAX42_226dcLZbiWO4z3l0nr_mytCIm6ww6Y2GNZEJGxhwz-dU0JhtGQJkVohmy0zfKUtGs8X4Hc3AGXL65kL9Fh1fZPS5trYlU5VlFbf6d6i4WVPKuq969JZQM_-NXTCwiCdlYdsvG5zwzROOFmpc8hJPW1_3oczvbRTAC-DZDg", +} +`; + exports[`uaa tests service tokens saas service user --userinfo 1`] = ` [ [ @@ -372,7 +394,51 @@ exports[`uaa tests service tokens saas service user default 2`] = ` Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QiLCJqaWQiOiAiYWVYOE5lalRmbEplUXhBZVMxTFVnT1JNY2RFU0JCS1BZQXdXYW14bVljYz0ifQ.eyJqdGkiOiIyZGY3MjMzYzBkMTM0NjE0ODQyMjBhOGI3YTBjNzNjYiIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSIsIm9pZGNJc3N1ZXIiOiJodHRwczovL2F3ZHNwOGVmNC5hY2NvdW50czQwMC5vbmRlbWFuZC5jb20iLCJzZXJ2aWNlaW5zdGFuY2VpZCI6IjNjNmU3MDQ4LWY0MTktNDVhYi04NjFiLTFkNTAwZWQ5YTg3MiJ9LCJ1c2VyX3V1aWQiOiJhYmI5ZGQ5Yi1iMDEyLTRkZjctYmNjZi00MWVkODY3NmNhYjMiLCJ4cy51c2VyLmF0dHJpYnV0ZXMiOnt9LCJ4cy5zeXN0ZW0uYXR0cmlidXRlcyI6eyJ4cy5yb2xlY29sbGVjdGlvbnMiOlsiQUZDX0FMTCJdfSwiZ2l2ZW5fbmFtZSI6IkRlZmF1bHQiLCJmYW1pbHlfbmFtZSI6IlRlc3RVc2VyIiwic3ViIjoiOWI4ODAzMjAtZDVmOC00NDg3LTkxN2MtYmMwZThjYzcwZDZmIiwic2NvcGUiOlsib3BlbmlkIiwiYnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTguRGlzcGxheUFsbEJ1c2luZXNzTG9ncyIsInVhYS51c2VyIl0sImNsaWVudF9pZCI6InNiLWFmYy1kZXYhYjU4NzR8YnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTgiLCJjaWQiOiJzYi1hZmMtZGV2IWI1ODc0fGJ1c2luZXNzbG9nZ2luZy1zYi1wcm9kIWIzNTk4IiwiYXpwIjoic2ItYWZjLWRldiFiNTg3NHxidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OCIsImdyYW50X3R5cGUiOiJwYXNzd29yZCIsInVzZXJfaWQiOiI5Yjg4MDMyMC1kNWY4LTQ0ODctOTE3Yy1iYzBlOGNjNzBkNmYiLCJvcmlnaW4iOiJzYXAuY3VzdG9tIiwidXNlcl9uYW1lIjoidGVzdHVzZXJAc2FwLmNvbSIsImVtYWlsIjoidGVzdHVzZXJAc2FwLmNvbSIsImF1dGhfdGltZSI6MTcwODA3Nzc5NiwicmV2X3NpZyI6Ijc0Y2MyZmJmIiwiaWF0IjoxNzA4MDc3Nzk2LCJleHAiOjE3MDgxMjA5OTYsImlzcyI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoiNWVjYzc0MTMtMmI3ZS00MTRhLTk0OTYtYWQ0YTYxZjZjY2NmIiwiYXVkIjpbInVhYSIsInNiLWFmYy1kZXYhYjU4NzR8YnVzaW5lc3Nsb2dnaW5nLXNiLXByb2QhYjM1OTgiLCJvcGVuaWQiLCJidXNpbmVzc2xvZ2dpbmctc2ItcHJvZCFiMzU5OCJdfQ.mgKzqg5kVuFiCtWQiC9oWwT8Ng0exL9ldkK0eAaLZKZERm2774CjwFoOPicuwGlzVBrU6adjztW-SdVnGA6GBzCRHUX7ce7okk20QVEKeHoZQFHvlZHJlHW93GP4K8kZ4R3vQPYgCIvNhRUwU7uz_TKdnJc68ffNnpFw_iu8LPjAX42_226dcLZbiWO4z3l0nr_mytCIm6ww6Y2GNZEJGxhwz-dU0JhtGQJkVohmy0zfKUtGs8X4Hc3AGXL65kL9Fh1fZPS5trYlU5VlFbf6d6i4WVPKuq969JZQM_-NXTCwiCdlYdsvG5zwzROOFmpc8hJPW1_3oczvbRTAC-DZDg" `; -exports[`uaa tests without context uaaDecode 1`] = ` +exports[`uaa tests without context decode --json 1`] = ` +{ + "body": { + "aud": [ + "uaa", + "sb-afc-dev!t5874", + "afc-dev!t5874", + ], + "authorities": [ + "uaa.resource", + "afc-dev!t5874.mtdeployment", + "afc-dev!t5874.mtcallback", + ], + "azp": "sb-afc-dev!t5874", + "cid": "sb-afc-dev!t5874", + "client_id": "sb-afc-dev!t5874", + "exp": 1621557559, + "ext_attr": { + "enhancer": "XSUAA", + "subaccountid": "7b20408e-3fe0-4ade-aa2e-ad97baac72e8", + "zdn": "skyfin", + }, + "grant_type": "client_credentials", + "iat": 1621514359, + "iss": "http://skyfin.localhost:8080/uaa/oauth/token", + "jti": "549abeeeacc649f68af589cafe33a2c6", + "rev_sig": "ab594f43", + "scope": [ + "uaa.resource", + "afc-dev!t5874.mtdeployment", + "afc-dev!t5874.mtcallback", + ], + "sub": "sb-afc-dev!t5874", + "zid": "7b20408e-3fe0-4ade-aa2e-ad97baac72e8", + }, + "header": { + "alg": "RS256", + "jku": "https://skyfin.authentication.sap.hana.ondemand.com/token_keys", + "kid": "key-id-1", + "typ": "JWT", + }, +} +`; + +exports[`uaa tests without context decode default 1`] = ` "JWT Header: {"alg":"RS256","jku":"https://skyfin.authentication.sap.hana.ondemand.com/token_keys","kid":"key-id-1","typ":"JWT"} @@ -412,7 +478,7 @@ JWT Body: }" `; -exports[`uaa tests xsuaa tokens paas client --decode 1`] = ` +exports[`uaa tests xsuaa app tokens paas client --decode --json 1`] = ` [ "https://identityzone.authentication/oauth/token", { @@ -426,7 +492,65 @@ exports[`uaa tests xsuaa tokens paas client --decode 1`] = ` ] `; -exports[`uaa tests xsuaa tokens paas client --decode 2`] = ` +exports[`uaa tests xsuaa app tokens paas client --decode --json 2`] = ` +{ + "body": { + "aud": [ + "uaa", + "sb-afc-dev!t5874", + "afc-dev!t5874", + ], + "authorities": [ + "uaa.resource", + "afc-dev!t5874.mtdeployment", + "afc-dev!t5874.mtcallback", + ], + "azp": "sb-afc-dev!t5874", + "cid": "sb-afc-dev!t5874", + "client_id": "sb-afc-dev!t5874", + "exp": 1621557559, + "ext_attr": { + "enhancer": "XSUAA", + "subaccountid": "7b20408e-3fe0-4ade-aa2e-ad97baac72e8", + "zdn": "skyfin", + }, + "grant_type": "client_credentials", + "iat": 1621514359, + "iss": "http://skyfin.localhost:8080/uaa/oauth/token", + "jti": "549abeeeacc649f68af589cafe33a2c6", + "rev_sig": "ab594f43", + "scope": [ + "uaa.resource", + "afc-dev!t5874.mtdeployment", + "afc-dev!t5874.mtcallback", + ], + "sub": "sb-afc-dev!t5874", + "zid": "7b20408e-3fe0-4ade-aa2e-ad97baac72e8", + }, + "header": { + "alg": "RS256", + "jku": "https://skyfin.authentication.sap.hana.ondemand.com/token_keys", + "kid": "key-id-1", + "typ": "JWT", + }, +} +`; + +exports[`uaa tests xsuaa app tokens paas client --decode 1`] = ` +[ + "https://identityzone.authentication/oauth/token", + { + "body": "grant_type=client_credentials&client_id=clientid&client_secret=clientsecret", + "headers": { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded", + }, + "method": "POST", + }, +] +`; + +exports[`uaa tests xsuaa app tokens paas client --decode 2`] = ` "JWT Header: {"alg":"RS256","jku":"https://skyfin.authentication.sap.hana.ondemand.com/token_keys","kid":"key-id-1","typ":"JWT"} @@ -466,7 +590,7 @@ JWT Body: }" `; -exports[`uaa tests xsuaa tokens paas client default 1`] = ` +exports[`uaa tests xsuaa app tokens paas client --json 1`] = ` [ "https://identityzone.authentication/oauth/token", { @@ -480,12 +604,90 @@ exports[`uaa tests xsuaa tokens paas client default 1`] = ` ] `; -exports[`uaa tests xsuaa tokens paas client default 2`] = ` +exports[`uaa tests xsuaa app tokens paas client --json 2`] = ` +{ + "token": "eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLmF1dGhlbnRpY2F0aW9uLnNhcC5oYW5hLm9uZGVtYW5kLmNvbS90b2tlbl9rZXlzIiwia2lkIjoia2V5LWlkLTEiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiI1NDlhYmVlZWFjYzY0OWY2OGFmNTg5Y2FmZTMzYTJjNiIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI3YjIwNDA4ZS0zZmUwLTRhZGUtYWEyZS1hZDk3YmFhYzcyZTgiLCJ6ZG4iOiJza3lmaW4ifSwic3ViIjoic2ItYWZjLWRldiF0NTg3NCIsImF1dGhvcml0aWVzIjpbInVhYS5yZXNvdXJjZSIsImFmYy1kZXYhdDU4NzQubXRkZXBsb3ltZW50IiwiYWZjLWRldiF0NTg3NC5tdGNhbGxiYWNrIl0sInNjb3BlIjpbInVhYS5yZXNvdXJjZSIsImFmYy1kZXYhdDU4NzQubXRkZXBsb3ltZW50IiwiYWZjLWRldiF0NTg3NC5tdGNhbGxiYWNrIl0sImNsaWVudF9pZCI6InNiLWFmYy1kZXYhdDU4NzQiLCJjaWQiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiYXpwIjoic2ItYWZjLWRldiF0NTg3NCIsImdyYW50X3R5cGUiOiJjbGllbnRfY3JlZGVudGlhbHMiLCJyZXZfc2lnIjoiYWI1OTRmNDMiLCJpYXQiOjE2MjE1MTQzNTksImV4cCI6MTYyMTU1NzU1OSwiaXNzIjoiaHR0cDovL3NreWZpbi5sb2NhbGhvc3Q6ODA4MC91YWEvb2F1dGgvdG9rZW4iLCJ6aWQiOiI3YjIwNDA4ZS0zZmUwLTRhZGUtYWEyZS1hZDk3YmFhYzcyZTgiLCJhdWQiOlsidWFhIiwic2ItYWZjLWRldiF0NTg3NCIsImFmYy1kZXYhdDU4NzQiXX0.u5LbQ7T01RNOwovupuLqi2xv9Sq8QPizY1k9MB4iNTnE6PrEacVaYhZFjBGuqRU6RDjIdfB1drzSGm1MwtrRAYkwWthu9YAfgHVanujXpjkD6NOE6J4sMfmJoy7e9BewJwPZ6l8k6G_Jqnm-9vURMlzjXRXqr1UyAVxlcqc4ZMikVc-25_XvYJKgp_qnbX1kBUwxECeTWtIB80SbroCgbGMwKCck58JyLr2RrZ4ZEPApeE-rWXFGDPtpmECzPRRl2aptA2Nur3fdl5g8Sqih5i_sSmIWMeoeViMVAgbbTZ-graNzcWB8yHri8UNZVihcl5cRAXH9Gvw4kNcYhSxP-Q", +} +`; + +exports[`uaa tests xsuaa app tokens paas client default 1`] = ` +[ + "https://identityzone.authentication/oauth/token", + { + "body": "grant_type=client_credentials&client_id=clientid&client_secret=clientsecret", + "headers": { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded", + }, + "method": "POST", + }, +] +`; + +exports[`uaa tests xsuaa app tokens paas client default 2`] = ` "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLmF1dGhlbnRpY2F0aW9uLnNhcC5oYW5hLm9uZGVtYW5kLmNvbS90b2tlbl9rZXlzIiwia2lkIjoia2V5LWlkLTEiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiI1NDlhYmVlZWFjYzY0OWY2OGFmNTg5Y2FmZTMzYTJjNiIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI3YjIwNDA4ZS0zZmUwLTRhZGUtYWEyZS1hZDk3YmFhYzcyZTgiLCJ6ZG4iOiJza3lmaW4ifSwic3ViIjoic2ItYWZjLWRldiF0NTg3NCIsImF1dGhvcml0aWVzIjpbInVhYS5yZXNvdXJjZSIsImFmYy1kZXYhdDU4NzQubXRkZXBsb3ltZW50IiwiYWZjLWRldiF0NTg3NC5tdGNhbGxiYWNrIl0sInNjb3BlIjpbInVhYS5yZXNvdXJjZSIsImFmYy1kZXYhdDU4NzQubXRkZXBsb3ltZW50IiwiYWZjLWRldiF0NTg3NC5tdGNhbGxiYWNrIl0sImNsaWVudF9pZCI6InNiLWFmYy1kZXYhdDU4NzQiLCJjaWQiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiYXpwIjoic2ItYWZjLWRldiF0NTg3NCIsImdyYW50X3R5cGUiOiJjbGllbnRfY3JlZGVudGlhbHMiLCJyZXZfc2lnIjoiYWI1OTRmNDMiLCJpYXQiOjE2MjE1MTQzNTksImV4cCI6MTYyMTU1NzU1OSwiaXNzIjoiaHR0cDovL3NreWZpbi5sb2NhbGhvc3Q6ODA4MC91YWEvb2F1dGgvdG9rZW4iLCJ6aWQiOiI3YjIwNDA4ZS0zZmUwLTRhZGUtYWEyZS1hZDk3YmFhYzcyZTgiLCJhdWQiOlsidWFhIiwic2ItYWZjLWRldiF0NTg3NCIsImFmYy1kZXYhdDU4NzQiXX0.u5LbQ7T01RNOwovupuLqi2xv9Sq8QPizY1k9MB4iNTnE6PrEacVaYhZFjBGuqRU6RDjIdfB1drzSGm1MwtrRAYkwWthu9YAfgHVanujXpjkD6NOE6J4sMfmJoy7e9BewJwPZ6l8k6G_Jqnm-9vURMlzjXRXqr1UyAVxlcqc4ZMikVc-25_XvYJKgp_qnbX1kBUwxECeTWtIB80SbroCgbGMwKCck58JyLr2RrZ4ZEPApeE-rWXFGDPtpmECzPRRl2aptA2Nur3fdl5g8Sqih5i_sSmIWMeoeViMVAgbbTZ-graNzcWB8yHri8UNZVihcl5cRAXH9Gvw4kNcYhSxP-Q" `; -exports[`uaa tests xsuaa tokens saas client --decode 1`] = ` +exports[`uaa tests xsuaa app tokens saas client --decode --json 1`] = ` +[ + "https://subdomain.authentication/oauth/token", + { + "body": "grant_type=client_credentials&client_id=clientid&client_secret=clientsecret", + "headers": { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded", + }, + "method": "POST", + }, +] +`; + +exports[`uaa tests xsuaa app tokens saas client --decode --json 2`] = ` +{ + "body": { + "aud": [ + "uaa", + "sb-afc-dev!t5874", + "afc-dev!t5874", + ], + "authorities": [ + "uaa.resource", + "afc-dev!t5874.mtdeployment", + "afc-dev!t5874.mtcallback", + ], + "azp": "sb-afc-dev!t5874", + "cid": "sb-afc-dev!t5874", + "client_id": "sb-afc-dev!t5874", + "exp": 1621558526, + "ext_attr": { + "enhancer": "XSUAA", + "subaccountid": "5ecc7413-2b7e-414a-9496-ad4a61f6cccf", + "zdn": "skyfin-company", + }, + "grant_type": "client_credentials", + "iat": 1621515326, + "iss": "https://skyfin-company.authentication.sap.hana.ondemand.com/oauth/token", + "jti": "99446f6c3f9e45b593aae4004890f97a", + "rev_sig": "4d73148e", + "scope": [ + "uaa.resource", + "afc-dev!t5874.mtdeployment", + "afc-dev!t5874.mtcallback", + ], + "sub": "sb-afc-dev!t5874", + "zid": "5ecc7413-2b7e-414a-9496-ad4a61f6cccf", + }, + "header": { + "alg": "RS256", + "jku": "https://skyfin-company.authentication.sap.hana.ondemand.com/token_keys", + "kid": "default-jwt-key--1246513990", + "typ": "JWT", + }, +} +`; + +exports[`uaa tests xsuaa app tokens saas client --decode 1`] = ` [ "https://subdomain.authentication/oauth/token", { @@ -499,7 +701,7 @@ exports[`uaa tests xsuaa tokens saas client --decode 1`] = ` ] `; -exports[`uaa tests xsuaa tokens saas client --decode 2`] = ` +exports[`uaa tests xsuaa app tokens saas client --decode 2`] = ` "JWT Header: {"alg":"RS256","jku":"https://skyfin-company.authentication.sap.hana.ondemand.com/token_keys","kid":"default-jwt-key--1246513990","typ":"JWT"} @@ -539,7 +741,27 @@ JWT Body: }" `; -exports[`uaa tests xsuaa tokens saas client default 1`] = ` +exports[`uaa tests xsuaa app tokens saas client --json 1`] = ` +[ + "https://subdomain.authentication/oauth/token", + { + "body": "grant_type=client_credentials&client_id=clientid&client_secret=clientsecret", + "headers": { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded", + }, + "method": "POST", + }, +] +`; + +exports[`uaa tests xsuaa app tokens saas client --json 2`] = ` +{ + "token": "eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiI5OTQ0NmY2YzNmOWU0NWI1OTNhYWU0MDA0ODkwZjk3YSIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSJ9LCJzdWIiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiYXV0aG9yaXRpZXMiOlsidWFhLnJlc291cmNlIiwiYWZjLWRldiF0NTg3NC5tdGRlcGxveW1lbnQiLCJhZmMtZGV2IXQ1ODc0Lm10Y2FsbGJhY2siXSwic2NvcGUiOlsidWFhLnJlc291cmNlIiwiYWZjLWRldiF0NTg3NC5tdGRlcGxveW1lbnQiLCJhZmMtZGV2IXQ1ODc0Lm10Y2FsbGJhY2siXSwiY2xpZW50X2lkIjoic2ItYWZjLWRldiF0NTg3NCIsImNpZCI6InNiLWFmYy1kZXYhdDU4NzQiLCJhenAiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiZ3JhbnRfdHlwZSI6ImNsaWVudF9jcmVkZW50aWFscyIsInJldl9zaWciOiI0ZDczMTQ4ZSIsImlhdCI6MTYyMTUxNTMyNiwiZXhwIjoxNjIxNTU4NTI2LCJpc3MiOiJodHRwczovL3NreWZpbi1jb21wYW55LmF1dGhlbnRpY2F0aW9uLnNhcC5oYW5hLm9uZGVtYW5kLmNvbS9vYXV0aC90b2tlbiIsInppZCI6IjVlY2M3NDEzLTJiN2UtNDE0YS05NDk2LWFkNGE2MWY2Y2NjZiIsImF1ZCI6WyJ1YWEiLCJzYi1hZmMtZGV2IXQ1ODc0IiwiYWZjLWRldiF0NTg3NCJdfQ.fp3nMFh0NvqGqMNXPyeY9SCQBVvXbi2MgV6p3nQ9X8YXUjT758E0q405FY3dWxo5pqwAk75MHdr-A_PpxM4X99CGsjKe5Jm_-BlVjLs0bYOMbfo-pSTKb9iPBY_8ACsA1dn8XTDBH8ZRLtaz00v0Hc1a6dbpsABiXp_H1HYs8Q93XghtqBJegs5YK8vxLsvPiWS8fZKm577QYtIpx6e4p9ThPIxY3c5BPPARRKhrwWlSYeRxwcWd3uhDeC3O_PSomAeUV21KJym4_tLB4Pw35rbnNhVyCy1SklL7FMXPkhbC6vmlF7_ID17yhY8hsaLIVrpTrVksgKmjNXqkOguaQw", +} +`; + +exports[`uaa tests xsuaa app tokens saas client default 1`] = ` [ "https://subdomain.authentication/oauth/token", { @@ -553,12 +775,12 @@ exports[`uaa tests xsuaa tokens saas client default 1`] = ` ] `; -exports[`uaa tests xsuaa tokens saas client default 2`] = ` +exports[`uaa tests xsuaa app tokens saas client default 2`] = ` "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiI5OTQ0NmY2YzNmOWU0NWI1OTNhYWU0MDA0ODkwZjk3YSIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSJ9LCJzdWIiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiYXV0aG9yaXRpZXMiOlsidWFhLnJlc291cmNlIiwiYWZjLWRldiF0NTg3NC5tdGRlcGxveW1lbnQiLCJhZmMtZGV2IXQ1ODc0Lm10Y2FsbGJhY2siXSwic2NvcGUiOlsidWFhLnJlc291cmNlIiwiYWZjLWRldiF0NTg3NC5tdGRlcGxveW1lbnQiLCJhZmMtZGV2IXQ1ODc0Lm10Y2FsbGJhY2siXSwiY2xpZW50X2lkIjoic2ItYWZjLWRldiF0NTg3NCIsImNpZCI6InNiLWFmYy1kZXYhdDU4NzQiLCJhenAiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiZ3JhbnRfdHlwZSI6ImNsaWVudF9jcmVkZW50aWFscyIsInJldl9zaWciOiI0ZDczMTQ4ZSIsImlhdCI6MTYyMTUxNTMyNiwiZXhwIjoxNjIxNTU4NTI2LCJpc3MiOiJodHRwczovL3NreWZpbi1jb21wYW55LmF1dGhlbnRpY2F0aW9uLnNhcC5oYW5hLm9uZGVtYW5kLmNvbS9vYXV0aC90b2tlbiIsInppZCI6IjVlY2M3NDEzLTJiN2UtNDE0YS05NDk2LWFkNGE2MWY2Y2NjZiIsImF1ZCI6WyJ1YWEiLCJzYi1hZmMtZGV2IXQ1ODc0IiwiYWZjLWRldiF0NTg3NCJdfQ.fp3nMFh0NvqGqMNXPyeY9SCQBVvXbi2MgV6p3nQ9X8YXUjT758E0q405FY3dWxo5pqwAk75MHdr-A_PpxM4X99CGsjKe5Jm_-BlVjLs0bYOMbfo-pSTKb9iPBY_8ACsA1dn8XTDBH8ZRLtaz00v0Hc1a6dbpsABiXp_H1HYs8Q93XghtqBJegs5YK8vxLsvPiWS8fZKm577QYtIpx6e4p9ThPIxY3c5BPPARRKhrwWlSYeRxwcWd3uhDeC3O_PSomAeUV21KJym4_tLB4Pw35rbnNhVyCy1SklL7FMXPkhbC6vmlF7_ID17yhY8hsaLIVrpTrVksgKmjNXqkOguaQw" `; -exports[`uaa tests xsuaa tokens saas passcode --decode --userinfo 1`] = ` +exports[`uaa tests xsuaa app tokens saas passcode --decode --userinfo 1`] = ` [ [ "https://subdomain.authentication/oauth/token", @@ -585,7 +807,7 @@ exports[`uaa tests xsuaa tokens saas passcode --decode --userinfo 1`] = ` ] `; -exports[`uaa tests xsuaa tokens saas passcode --decode --userinfo 2`] = ` +exports[`uaa tests xsuaa app tokens saas passcode --decode --userinfo 2`] = ` "JWT Header: {"alg":"RS256","jku":"https://skyfin-company.authentication.sap.hana.ondemand.com/token_keys","kid":"default-jwt-key--1246513990","typ":"JWT"} @@ -651,7 +873,7 @@ User Info: }" `; -exports[`uaa tests xsuaa tokens saas passcode --decode 1`] = ` +exports[`uaa tests xsuaa app tokens saas passcode --decode 1`] = ` [ [ "https://subdomain.authentication/oauth/token", @@ -667,7 +889,7 @@ exports[`uaa tests xsuaa tokens saas passcode --decode 1`] = ` ] `; -exports[`uaa tests xsuaa tokens saas passcode --decode 2`] = ` +exports[`uaa tests xsuaa app tokens saas passcode --decode 2`] = ` "JWT Header: {"alg":"RS256","jku":"https://skyfin-company.authentication.sap.hana.ondemand.com/token_keys","kid":"default-jwt-key--1246513990","typ":"JWT"} @@ -728,7 +950,29 @@ JWT Body: }" `; -exports[`uaa tests xsuaa tokens saas passcode --userinfo 1`] = ` +exports[`uaa tests xsuaa app tokens saas passcode --json 1`] = ` +[ + [ + "https://subdomain.authentication/oauth/token", + { + "body": "grant_type=password&client_id=clientid&client_secret=clientsecret&passcode=passcode90", + "headers": { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded", + }, + "method": "POST", + }, + ], +] +`; + +exports[`uaa tests xsuaa app tokens saas passcode --json 2`] = ` +{ + "token": "eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiI1NmJmMGYyODBiNzc0MTdiOTMxOTE3MTNmYWUwZGI2NSIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSJ9LCJ4cy5zeXN0ZW0uYXR0cmlidXRlcyI6eyJ4cy5yb2xlY29sbGVjdGlvbnMiOlsiQUZDX0FMTCJdfSwiZ2l2ZW5fbmFtZSI6IlJpY2hhcmQiLCJ4cy51c2VyLmF0dHJpYnV0ZXMiOnt9LCJmYW1pbHlfbmFtZSI6IkxpbmRuZXIiLCJzdWIiOiJhOGEzN2FiNy0wMDU2LTRkNGItYjNkNy1mNzBlYWQ5MmM4MjkiLCJzY29wZSI6WyJhZmMtZGV2IXQ1ODc0LlByb3ZpZGVyIiwiYWZjLWRldiF0NTg3NC5Db25zdW1lciIsImFmYy1kZXYhdDU4NzQuQUZDX1JlcG9ydGluZyIsImFmYy1kZXYhdDU4NzQuQUZDX1VzZXIiLCJvcGVuaWQiLCJhZmMtZGV2IXQ1ODc0LkV4dGVuZENEU2RlbGV0ZSIsImFmYy1kZXYhdDU4NzQuS0VZVVNFUiIsImFmYy1kZXYhdDU4NzQuRXh0ZW5kQ0RTIiwiYWZjLWRldiF0NTg3NC5BRkNfQXBwcm92ZSIsImFmYy1kZXYhdDU4NzQuQUZDX1Byb2Nlc3MiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db25maWciLCJhZmMtZGV2IXQ1ODc0LkFGQ19TeXN0ZW1BZG1pbiIsInVhYS51c2VyIiwiYWZjLWRldiF0NTg3NC5BRkNfRGVmaW5lIiwiYWZjLWRldiF0NTg3NC5BRkNfVXNlck1hbmFnZW1lbnQiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db21wbGlhbmNlIl0sImNsaWVudF9pZCI6InNiLWFmYy1kZXYhdDU4NzQiLCJjaWQiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiYXpwIjoic2ItYWZjLWRldiF0NTg3NCIsImdyYW50X3R5cGUiOiJwYXNzd29yZCIsInVzZXJfaWQiOiJhOGEzN2FiNy0wMDU2LTRkNGItYjNkNy1mNzBlYWQ5MmM4MjkiLCJvcmlnaW4iOiJzYXAuZGVmYXVsdCIsInVzZXJfbmFtZSI6InJpY2hhcmQubGluZG5lckBzYXAuY29tIiwiZW1haWwiOiJyaWNoYXJkLmxpbmRuZXJAc2FwLmNvbSIsInJldl9zaWciOiI1NzRmMDc1IiwiaWF0IjoxNjIxNTE2NTkzLCJleHAiOjE2MjE1NTk3OTMsImlzcyI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoiNWVjYzc0MTMtMmI3ZS00MTRhLTk0OTYtYWQ0YTYxZjZjY2NmIiwiYXVkIjpbInVhYSIsIm9wZW5pZCIsInNiLWFmYy1kZXYhdDU4NzQiLCJhZmMtZGV2IXQ1ODc0Il19.o-hXO2NWSaG3PQRfVdOVL93LoY2SJZ-grl2WLuY2UA94D09Obvg32EB-0yNwtfdEJb-eR2vkrwSh64n0J1u8b7JCPl_9ddQysXb_NsoUvxQXmi9kpTKwD6nQTwFc6mYz8dn4UeERkAbMWFHhF16iDRwmPT5v9l_57u-YRSUjW9azgB5Lf8X9NBzk0N94f_FWtZNnNNe_eK0uTkx8QP2T3w2fLtsSX2HMg4W5DCRaf-67XezHPOMYfcSz0rIb18dBSl6h9_nirl-Tjm8RcINytZLsQNA_iuZ18vvjJloTvmrdDMgh7EI70R3oCoaGovvagKg7WwXs3QFTqj6xj6ilNg", +} +`; + +exports[`uaa tests xsuaa app tokens saas passcode --userinfo 1`] = ` [ [ "https://subdomain.authentication/oauth/token", @@ -755,7 +999,7 @@ exports[`uaa tests xsuaa tokens saas passcode --userinfo 1`] = ` ] `; -exports[`uaa tests xsuaa tokens saas passcode --userinfo 2`] = ` +exports[`uaa tests xsuaa app tokens saas passcode --userinfo 2`] = ` "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiI1NmJmMGYyODBiNzc0MTdiOTMxOTE3MTNmYWUwZGI2NSIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSJ9LCJ4cy5zeXN0ZW0uYXR0cmlidXRlcyI6eyJ4cy5yb2xlY29sbGVjdGlvbnMiOlsiQUZDX0FMTCJdfSwiZ2l2ZW5fbmFtZSI6IlJpY2hhcmQiLCJ4cy51c2VyLmF0dHJpYnV0ZXMiOnt9LCJmYW1pbHlfbmFtZSI6IkxpbmRuZXIiLCJzdWIiOiJhOGEzN2FiNy0wMDU2LTRkNGItYjNkNy1mNzBlYWQ5MmM4MjkiLCJzY29wZSI6WyJhZmMtZGV2IXQ1ODc0LlByb3ZpZGVyIiwiYWZjLWRldiF0NTg3NC5Db25zdW1lciIsImFmYy1kZXYhdDU4NzQuQUZDX1JlcG9ydGluZyIsImFmYy1kZXYhdDU4NzQuQUZDX1VzZXIiLCJvcGVuaWQiLCJhZmMtZGV2IXQ1ODc0LkV4dGVuZENEU2RlbGV0ZSIsImFmYy1kZXYhdDU4NzQuS0VZVVNFUiIsImFmYy1kZXYhdDU4NzQuRXh0ZW5kQ0RTIiwiYWZjLWRldiF0NTg3NC5BRkNfQXBwcm92ZSIsImFmYy1kZXYhdDU4NzQuQUZDX1Byb2Nlc3MiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db25maWciLCJhZmMtZGV2IXQ1ODc0LkFGQ19TeXN0ZW1BZG1pbiIsInVhYS51c2VyIiwiYWZjLWRldiF0NTg3NC5BRkNfRGVmaW5lIiwiYWZjLWRldiF0NTg3NC5BRkNfVXNlck1hbmFnZW1lbnQiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db21wbGlhbmNlIl0sImNsaWVudF9pZCI6InNiLWFmYy1kZXYhdDU4NzQiLCJjaWQiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiYXpwIjoic2ItYWZjLWRldiF0NTg3NCIsImdyYW50X3R5cGUiOiJwYXNzd29yZCIsInVzZXJfaWQiOiJhOGEzN2FiNy0wMDU2LTRkNGItYjNkNy1mNzBlYWQ5MmM4MjkiLCJvcmlnaW4iOiJzYXAuZGVmYXVsdCIsInVzZXJfbmFtZSI6InJpY2hhcmQubGluZG5lckBzYXAuY29tIiwiZW1haWwiOiJyaWNoYXJkLmxpbmRuZXJAc2FwLmNvbSIsInJldl9zaWciOiI1NzRmMDc1IiwiaWF0IjoxNjIxNTE2NTkzLCJleHAiOjE2MjE1NTk3OTMsImlzcyI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoiNWVjYzc0MTMtMmI3ZS00MTRhLTk0OTYtYWQ0YTYxZjZjY2NmIiwiYXVkIjpbInVhYSIsIm9wZW5pZCIsInNiLWFmYy1kZXYhdDU4NzQiLCJhZmMtZGV2IXQ1ODc0Il19.o-hXO2NWSaG3PQRfVdOVL93LoY2SJZ-grl2WLuY2UA94D09Obvg32EB-0yNwtfdEJb-eR2vkrwSh64n0J1u8b7JCPl_9ddQysXb_NsoUvxQXmi9kpTKwD6nQTwFc6mYz8dn4UeERkAbMWFHhF16iDRwmPT5v9l_57u-YRSUjW9azgB5Lf8X9NBzk0N94f_FWtZNnNNe_eK0uTkx8QP2T3w2fLtsSX2HMg4W5DCRaf-67XezHPOMYfcSz0rIb18dBSl6h9_nirl-Tjm8RcINytZLsQNA_iuZ18vvjJloTvmrdDMgh7EI70R3oCoaGovvagKg7WwXs3QFTqj6xj6ilNg @@ -765,7 +1009,7 @@ User Info: }" `; -exports[`uaa tests xsuaa tokens saas passcode default 1`] = ` +exports[`uaa tests xsuaa app tokens saas passcode default 1`] = ` [ [ "https://subdomain.authentication/oauth/token", @@ -781,12 +1025,12 @@ exports[`uaa tests xsuaa tokens saas passcode default 1`] = ` ] `; -exports[`uaa tests xsuaa tokens saas passcode default 2`] = ` +exports[`uaa tests xsuaa app tokens saas passcode default 2`] = ` "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiI1NmJmMGYyODBiNzc0MTdiOTMxOTE3MTNmYWUwZGI2NSIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSJ9LCJ4cy5zeXN0ZW0uYXR0cmlidXRlcyI6eyJ4cy5yb2xlY29sbGVjdGlvbnMiOlsiQUZDX0FMTCJdfSwiZ2l2ZW5fbmFtZSI6IlJpY2hhcmQiLCJ4cy51c2VyLmF0dHJpYnV0ZXMiOnt9LCJmYW1pbHlfbmFtZSI6IkxpbmRuZXIiLCJzdWIiOiJhOGEzN2FiNy0wMDU2LTRkNGItYjNkNy1mNzBlYWQ5MmM4MjkiLCJzY29wZSI6WyJhZmMtZGV2IXQ1ODc0LlByb3ZpZGVyIiwiYWZjLWRldiF0NTg3NC5Db25zdW1lciIsImFmYy1kZXYhdDU4NzQuQUZDX1JlcG9ydGluZyIsImFmYy1kZXYhdDU4NzQuQUZDX1VzZXIiLCJvcGVuaWQiLCJhZmMtZGV2IXQ1ODc0LkV4dGVuZENEU2RlbGV0ZSIsImFmYy1kZXYhdDU4NzQuS0VZVVNFUiIsImFmYy1kZXYhdDU4NzQuRXh0ZW5kQ0RTIiwiYWZjLWRldiF0NTg3NC5BRkNfQXBwcm92ZSIsImFmYy1kZXYhdDU4NzQuQUZDX1Byb2Nlc3MiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db25maWciLCJhZmMtZGV2IXQ1ODc0LkFGQ19TeXN0ZW1BZG1pbiIsInVhYS51c2VyIiwiYWZjLWRldiF0NTg3NC5BRkNfRGVmaW5lIiwiYWZjLWRldiF0NTg3NC5BRkNfVXNlck1hbmFnZW1lbnQiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db21wbGlhbmNlIl0sImNsaWVudF9pZCI6InNiLWFmYy1kZXYhdDU4NzQiLCJjaWQiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiYXpwIjoic2ItYWZjLWRldiF0NTg3NCIsImdyYW50X3R5cGUiOiJwYXNzd29yZCIsInVzZXJfaWQiOiJhOGEzN2FiNy0wMDU2LTRkNGItYjNkNy1mNzBlYWQ5MmM4MjkiLCJvcmlnaW4iOiJzYXAuZGVmYXVsdCIsInVzZXJfbmFtZSI6InJpY2hhcmQubGluZG5lckBzYXAuY29tIiwiZW1haWwiOiJyaWNoYXJkLmxpbmRuZXJAc2FwLmNvbSIsInJldl9zaWciOiI1NzRmMDc1IiwiaWF0IjoxNjIxNTE2NTkzLCJleHAiOjE2MjE1NTk3OTMsImlzcyI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoiNWVjYzc0MTMtMmI3ZS00MTRhLTk0OTYtYWQ0YTYxZjZjY2NmIiwiYXVkIjpbInVhYSIsIm9wZW5pZCIsInNiLWFmYy1kZXYhdDU4NzQiLCJhZmMtZGV2IXQ1ODc0Il19.o-hXO2NWSaG3PQRfVdOVL93LoY2SJZ-grl2WLuY2UA94D09Obvg32EB-0yNwtfdEJb-eR2vkrwSh64n0J1u8b7JCPl_9ddQysXb_NsoUvxQXmi9kpTKwD6nQTwFc6mYz8dn4UeERkAbMWFHhF16iDRwmPT5v9l_57u-YRSUjW9azgB5Lf8X9NBzk0N94f_FWtZNnNNe_eK0uTkx8QP2T3w2fLtsSX2HMg4W5DCRaf-67XezHPOMYfcSz0rIb18dBSl6h9_nirl-Tjm8RcINytZLsQNA_iuZ18vvjJloTvmrdDMgh7EI70R3oCoaGovvagKg7WwXs3QFTqj6xj6ilNg" `; -exports[`uaa tests xsuaa tokens saas user --decode --userinfo 1`] = ` +exports[`uaa tests xsuaa app tokens saas user --decode --userinfo 1`] = ` [ [ "https://subdomain.authentication/oauth/token", @@ -813,7 +1057,7 @@ exports[`uaa tests xsuaa tokens saas user --decode --userinfo 1`] = ` ] `; -exports[`uaa tests xsuaa tokens saas user --decode --userinfo 2`] = ` +exports[`uaa tests xsuaa app tokens saas user --decode --userinfo 2`] = ` "JWT Header: {"alg":"RS256","jku":"https://skyfin-company.authentication.sap.hana.ondemand.com/token_keys","kid":"default-jwt-key--1246513990","typ":"JWT","jid":"f+hBaWmvGMYTf+7I1Sh5e4JoKXc7NPWl+leaGFSKHEI="} @@ -892,7 +1136,7 @@ User Info: }" `; -exports[`uaa tests xsuaa tokens saas user --decode 1`] = ` +exports[`uaa tests xsuaa app tokens saas user --decode 1`] = ` [ [ "https://subdomain.authentication/oauth/token", @@ -908,7 +1152,7 @@ exports[`uaa tests xsuaa tokens saas user --decode 1`] = ` ] `; -exports[`uaa tests xsuaa tokens saas user --decode 2`] = ` +exports[`uaa tests xsuaa app tokens saas user --decode 2`] = ` "JWT Header: {"alg":"RS256","jku":"https://skyfin-company.authentication.sap.hana.ondemand.com/token_keys","kid":"default-jwt-key--1246513990","typ":"JWT","jid":"f+hBaWmvGMYTf+7I1Sh5e4JoKXc7NPWl+leaGFSKHEI="} @@ -982,7 +1226,29 @@ JWT Body: }" `; -exports[`uaa tests xsuaa tokens saas user --userinfo 1`] = ` +exports[`uaa tests xsuaa app tokens saas user --json 1`] = ` +[ + [ + "https://subdomain.authentication/oauth/token", + { + "body": "grant_type=password&client_id=clientid&client_secret=clientsecret&username=username&password=password90&login_hint=%7B%22origin%22%3A%22sap.custom%22%7D", + "headers": { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded", + }, + "method": "POST", + }, + ], +] +`; + +exports[`uaa tests xsuaa app tokens saas user --json 2`] = ` +{ + "token": "eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QiLCJqaWQiOiAiZitoQmFXbXZHTVlUZis3STFTaDVlNEpvS1hjN05QV2wrbGVhR0ZTS0hFST0ifQ.eyJqdGkiOiI1NTNiYjVkYmM1NzE0Y2FkOTAwY2I4MGFlZmNjODI4NCIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSIsIm9pZGNJc3N1ZXIiOiJodHRwczovL2F3ZHNwOGVmNC5hY2NvdW50czQwMC5vbmRlbWFuZC5jb20ifSwidXNlcl91dWlkIjoiYWJiOWRkOWItYjAxMi00ZGY3LWJjY2YtNDFlZDg2NzZjYWIzIiwieHMudXNlci5hdHRyaWJ1dGVzIjp7fSwiY25mIjp7Ing1dCNTMjU2IjoiaVdWRDExOWRidnlhNW9LSW9UVWxXQ2lTOHF0SVRZSGFhVlUzN1o3aDBMMCJ9LCJ4cy5zeXN0ZW0uYXR0cmlidXRlcyI6eyJ4cy5yb2xlY29sbGVjdGlvbnMiOlsiQUZDX0FMTCJdfSwiZ2l2ZW5fbmFtZSI6IkRlZmF1bHQiLCJmYW1pbHlfbmFtZSI6IlRlc3RVc2VyIiwic3ViIjoiOWI4ODAzMjAtZDVmOC00NDg3LTkxN2MtYmMwZThjYzcwZDZmIiwic2NvcGUiOlsiYWZjLWRldiF0NTg3NC5Qcm92aWRlciIsImFmYy1kZXYhdDU4NzQuQ29uc3VtZXIiLCJhZmMtZGV2IXQ1ODc0LkFGQ19SZXBvcnRpbmciLCJhZmMtZGV2IXQ1ODc0LkFGQ19Vc2VyIiwib3BlbmlkIiwiYWZjLWRldiF0NTg3NC5FeHRlbmRDRFNkZWxldGUiLCJhZmMtZGV2IXQ1ODc0LkFGQ19SZXBvcnRpbmdUYXNrVmlldyIsImFmYy1kZXYhdDU4NzQuS0VZVVNFUiIsImFmYy1kZXYhdDU4NzQuRXh0ZW5kQ0RTIiwiYWZjLWRldiF0NTg3NC5BRkNfQVBJX0FjY2VzcyIsImFmYy1kZXYhdDU4NzQuQUZDX1JlcG9ydGluZ09yZ1VuaXRWaWV3IiwiYWZjLWRldiF0NTg3NC5BRkNfQXJjaGl2aW5nIiwiYWZjLWRldiF0NTg3NC5BRkNfQXBwcm92ZSIsImFmYy1kZXYhdDU4NzQuQUZDX1Byb2Nlc3MiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db25maWciLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db21wYW55Q29kZUdyb3Vwc0FwcCIsImFmYy1kZXYhdDU4NzQuQUZDX1N5c3RlbUFkbWluIiwidXNlcl9hdHRyaWJ1dGVzIiwiYWZjLWRldiF0NTg3NC5BRkNfTWlncmF0aW9uIiwidWFhLnVzZXIiLCJhZmMtZGV2IXQ1ODc0LkFGQ19EZWZpbmUiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Vc2VyTWFuYWdlbWVudCIsImFmYy1kZXYhdDU4NzQuQUZDX0NvbXBsaWFuY2UiXSwiY2xpZW50X2lkIjoic2ItYWZjLWRldiF0NTg3NCIsImNpZCI6InNiLWFmYy1kZXYhdDU4NzQiLCJhenAiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjliODgwMzIwLWQ1ZjgtNDQ4Ny05MTdjLWJjMGU4Y2M3MGQ2ZiIsIm9yaWdpbiI6InNhcC5jdXN0b20iLCJ1c2VyX25hbWUiOiJ0ZXN0dXNlckBzYXAuY29tIiwiZW1haWwiOiJ0ZXN0dXNlckBzYXAuY29tIiwiYXV0aF90aW1lIjoxNzA4MDAzNDYzLCJyZXZfc2lnIjoiNDQwOGRiNGYiLCJpYXQiOjE3MDgwMDM0NjMsImV4cCI6MTcwODAwNzA2MywiaXNzIjoiaHR0cHM6Ly9za3lmaW4tY29tcGFueS5hdXRoZW50aWNhdGlvbi5zYXAuaGFuYS5vbmRlbWFuZC5jb20vb2F1dGgvdG9rZW4iLCJ6aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJhdWQiOlsidWFhIiwib3BlbmlkIiwic2ItYWZjLWRldiF0NTg3NCIsImFmYy1kZXYhdDU4NzQiXX0.PavhBjPw79BPwsq02hGXHqxzSKdFRjwvmwqJFKMNH2e1h6CqEeCzbUpK0depFsEwUr8iqo-C3Mo8Kdb07vj4sVOfltyyKrynsMv9MkTRX8MN8Je9tmLtTR3NJ92emGrN367ivT8rpuq_oFMlDjnbNVldYitP1azXhDALM64Um60InWE1zHX7fIdS00Du7CFmTQm4YKJ2gSD4u1MrwjzABdNuInyhU9Alr6koXSuzRLvpb4ALIxwH1pSnVS3BWzRDJ2yPCn02vha7W9MPtIbvSwgtecK0NscMXbJ4GFBcPbzLyW4W8T_n9jlKW3czL9yA5skbS5rfAHwo9YsecDI7hg", +} +`; + +exports[`uaa tests xsuaa app tokens saas user --userinfo 1`] = ` [ [ "https://subdomain.authentication/oauth/token", @@ -1009,7 +1275,7 @@ exports[`uaa tests xsuaa tokens saas user --userinfo 1`] = ` ] `; -exports[`uaa tests xsuaa tokens saas user --userinfo 2`] = ` +exports[`uaa tests xsuaa app tokens saas user --userinfo 2`] = ` "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QiLCJqaWQiOiAiZitoQmFXbXZHTVlUZis3STFTaDVlNEpvS1hjN05QV2wrbGVhR0ZTS0hFST0ifQ.eyJqdGkiOiI1NTNiYjVkYmM1NzE0Y2FkOTAwY2I4MGFlZmNjODI4NCIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSIsIm9pZGNJc3N1ZXIiOiJodHRwczovL2F3ZHNwOGVmNC5hY2NvdW50czQwMC5vbmRlbWFuZC5jb20ifSwidXNlcl91dWlkIjoiYWJiOWRkOWItYjAxMi00ZGY3LWJjY2YtNDFlZDg2NzZjYWIzIiwieHMudXNlci5hdHRyaWJ1dGVzIjp7fSwiY25mIjp7Ing1dCNTMjU2IjoiaVdWRDExOWRidnlhNW9LSW9UVWxXQ2lTOHF0SVRZSGFhVlUzN1o3aDBMMCJ9LCJ4cy5zeXN0ZW0uYXR0cmlidXRlcyI6eyJ4cy5yb2xlY29sbGVjdGlvbnMiOlsiQUZDX0FMTCJdfSwiZ2l2ZW5fbmFtZSI6IkRlZmF1bHQiLCJmYW1pbHlfbmFtZSI6IlRlc3RVc2VyIiwic3ViIjoiOWI4ODAzMjAtZDVmOC00NDg3LTkxN2MtYmMwZThjYzcwZDZmIiwic2NvcGUiOlsiYWZjLWRldiF0NTg3NC5Qcm92aWRlciIsImFmYy1kZXYhdDU4NzQuQ29uc3VtZXIiLCJhZmMtZGV2IXQ1ODc0LkFGQ19SZXBvcnRpbmciLCJhZmMtZGV2IXQ1ODc0LkFGQ19Vc2VyIiwib3BlbmlkIiwiYWZjLWRldiF0NTg3NC5FeHRlbmRDRFNkZWxldGUiLCJhZmMtZGV2IXQ1ODc0LkFGQ19SZXBvcnRpbmdUYXNrVmlldyIsImFmYy1kZXYhdDU4NzQuS0VZVVNFUiIsImFmYy1kZXYhdDU4NzQuRXh0ZW5kQ0RTIiwiYWZjLWRldiF0NTg3NC5BRkNfQVBJX0FjY2VzcyIsImFmYy1kZXYhdDU4NzQuQUZDX1JlcG9ydGluZ09yZ1VuaXRWaWV3IiwiYWZjLWRldiF0NTg3NC5BRkNfQXJjaGl2aW5nIiwiYWZjLWRldiF0NTg3NC5BRkNfQXBwcm92ZSIsImFmYy1kZXYhdDU4NzQuQUZDX1Byb2Nlc3MiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db25maWciLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db21wYW55Q29kZUdyb3Vwc0FwcCIsImFmYy1kZXYhdDU4NzQuQUZDX1N5c3RlbUFkbWluIiwidXNlcl9hdHRyaWJ1dGVzIiwiYWZjLWRldiF0NTg3NC5BRkNfTWlncmF0aW9uIiwidWFhLnVzZXIiLCJhZmMtZGV2IXQ1ODc0LkFGQ19EZWZpbmUiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Vc2VyTWFuYWdlbWVudCIsImFmYy1kZXYhdDU4NzQuQUZDX0NvbXBsaWFuY2UiXSwiY2xpZW50X2lkIjoic2ItYWZjLWRldiF0NTg3NCIsImNpZCI6InNiLWFmYy1kZXYhdDU4NzQiLCJhenAiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjliODgwMzIwLWQ1ZjgtNDQ4Ny05MTdjLWJjMGU4Y2M3MGQ2ZiIsIm9yaWdpbiI6InNhcC5jdXN0b20iLCJ1c2VyX25hbWUiOiJ0ZXN0dXNlckBzYXAuY29tIiwiZW1haWwiOiJ0ZXN0dXNlckBzYXAuY29tIiwiYXV0aF90aW1lIjoxNzA4MDAzNDYzLCJyZXZfc2lnIjoiNDQwOGRiNGYiLCJpYXQiOjE3MDgwMDM0NjMsImV4cCI6MTcwODAwNzA2MywiaXNzIjoiaHR0cHM6Ly9za3lmaW4tY29tcGFueS5hdXRoZW50aWNhdGlvbi5zYXAuaGFuYS5vbmRlbWFuZC5jb20vb2F1dGgvdG9rZW4iLCJ6aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJhdWQiOlsidWFhIiwib3BlbmlkIiwic2ItYWZjLWRldiF0NTg3NCIsImFmYy1kZXYhdDU4NzQiXX0.PavhBjPw79BPwsq02hGXHqxzSKdFRjwvmwqJFKMNH2e1h6CqEeCzbUpK0depFsEwUr8iqo-C3Mo8Kdb07vj4sVOfltyyKrynsMv9MkTRX8MN8Je9tmLtTR3NJ92emGrN367ivT8rpuq_oFMlDjnbNVldYitP1azXhDALM64Um60InWE1zHX7fIdS00Du7CFmTQm4YKJ2gSD4u1MrwjzABdNuInyhU9Alr6koXSuzRLvpb4ALIxwH1pSnVS3BWzRDJ2yPCn02vha7W9MPtIbvSwgtecK0NscMXbJ4GFBcPbzLyW4W8T_n9jlKW3czL9yA5skbS5rfAHwo9YsecDI7hg @@ -1019,7 +1285,7 @@ User Info: }" `; -exports[`uaa tests xsuaa tokens saas user default 1`] = ` +exports[`uaa tests xsuaa app tokens saas user default 1`] = ` [ [ "https://subdomain.authentication/oauth/token", @@ -1035,7 +1301,7 @@ exports[`uaa tests xsuaa tokens saas user default 1`] = ` ] `; -exports[`uaa tests xsuaa tokens saas user default 2`] = ` +exports[`uaa tests xsuaa app tokens saas user default 2`] = ` "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vc2t5ZmluLWNvbXBhbnkuYXV0aGVudGljYXRpb24uc2FwLmhhbmEub25kZW1hbmQuY29tL3Rva2VuX2tleXMiLCJraWQiOiJkZWZhdWx0LWp3dC1rZXktLTEyNDY1MTM5OTAiLCJ0eXAiOiJKV1QiLCJqaWQiOiAiZitoQmFXbXZHTVlUZis3STFTaDVlNEpvS1hjN05QV2wrbGVhR0ZTS0hFST0ifQ.eyJqdGkiOiI1NTNiYjVkYmM1NzE0Y2FkOTAwY2I4MGFlZmNjODI4NCIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJ6ZG4iOiJza3lmaW4tY29tcGFueSIsIm9pZGNJc3N1ZXIiOiJodHRwczovL2F3ZHNwOGVmNC5hY2NvdW50czQwMC5vbmRlbWFuZC5jb20ifSwidXNlcl91dWlkIjoiYWJiOWRkOWItYjAxMi00ZGY3LWJjY2YtNDFlZDg2NzZjYWIzIiwieHMudXNlci5hdHRyaWJ1dGVzIjp7fSwiY25mIjp7Ing1dCNTMjU2IjoiaVdWRDExOWRidnlhNW9LSW9UVWxXQ2lTOHF0SVRZSGFhVlUzN1o3aDBMMCJ9LCJ4cy5zeXN0ZW0uYXR0cmlidXRlcyI6eyJ4cy5yb2xlY29sbGVjdGlvbnMiOlsiQUZDX0FMTCJdfSwiZ2l2ZW5fbmFtZSI6IkRlZmF1bHQiLCJmYW1pbHlfbmFtZSI6IlRlc3RVc2VyIiwic3ViIjoiOWI4ODAzMjAtZDVmOC00NDg3LTkxN2MtYmMwZThjYzcwZDZmIiwic2NvcGUiOlsiYWZjLWRldiF0NTg3NC5Qcm92aWRlciIsImFmYy1kZXYhdDU4NzQuQ29uc3VtZXIiLCJhZmMtZGV2IXQ1ODc0LkFGQ19SZXBvcnRpbmciLCJhZmMtZGV2IXQ1ODc0LkFGQ19Vc2VyIiwib3BlbmlkIiwiYWZjLWRldiF0NTg3NC5FeHRlbmRDRFNkZWxldGUiLCJhZmMtZGV2IXQ1ODc0LkFGQ19SZXBvcnRpbmdUYXNrVmlldyIsImFmYy1kZXYhdDU4NzQuS0VZVVNFUiIsImFmYy1kZXYhdDU4NzQuRXh0ZW5kQ0RTIiwiYWZjLWRldiF0NTg3NC5BRkNfQVBJX0FjY2VzcyIsImFmYy1kZXYhdDU4NzQuQUZDX1JlcG9ydGluZ09yZ1VuaXRWaWV3IiwiYWZjLWRldiF0NTg3NC5BRkNfQXJjaGl2aW5nIiwiYWZjLWRldiF0NTg3NC5BRkNfQXBwcm92ZSIsImFmYy1kZXYhdDU4NzQuQUZDX1Byb2Nlc3MiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db25maWciLCJhZmMtZGV2IXQ1ODc0LkFGQ19Db21wYW55Q29kZUdyb3Vwc0FwcCIsImFmYy1kZXYhdDU4NzQuQUZDX1N5c3RlbUFkbWluIiwidXNlcl9hdHRyaWJ1dGVzIiwiYWZjLWRldiF0NTg3NC5BRkNfTWlncmF0aW9uIiwidWFhLnVzZXIiLCJhZmMtZGV2IXQ1ODc0LkFGQ19EZWZpbmUiLCJhZmMtZGV2IXQ1ODc0LkFGQ19Vc2VyTWFuYWdlbWVudCIsImFmYy1kZXYhdDU4NzQuQUZDX0NvbXBsaWFuY2UiXSwiY2xpZW50X2lkIjoic2ItYWZjLWRldiF0NTg3NCIsImNpZCI6InNiLWFmYy1kZXYhdDU4NzQiLCJhenAiOiJzYi1hZmMtZGV2IXQ1ODc0IiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjliODgwMzIwLWQ1ZjgtNDQ4Ny05MTdjLWJjMGU4Y2M3MGQ2ZiIsIm9yaWdpbiI6InNhcC5jdXN0b20iLCJ1c2VyX25hbWUiOiJ0ZXN0dXNlckBzYXAuY29tIiwiZW1haWwiOiJ0ZXN0dXNlckBzYXAuY29tIiwiYXV0aF90aW1lIjoxNzA4MDAzNDYzLCJyZXZfc2lnIjoiNDQwOGRiNGYiLCJpYXQiOjE3MDgwMDM0NjMsImV4cCI6MTcwODAwNzA2MywiaXNzIjoiaHR0cHM6Ly9za3lmaW4tY29tcGFueS5hdXRoZW50aWNhdGlvbi5zYXAuaGFuYS5vbmRlbWFuZC5jb20vb2F1dGgvdG9rZW4iLCJ6aWQiOiI1ZWNjNzQxMy0yYjdlLTQxNGEtOTQ5Ni1hZDRhNjFmNmNjY2YiLCJhdWQiOlsidWFhIiwib3BlbmlkIiwic2ItYWZjLWRldiF0NTg3NCIsImFmYy1kZXYhdDU4NzQiXX0.PavhBjPw79BPwsq02hGXHqxzSKdFRjwvmwqJFKMNH2e1h6CqEeCzbUpK0depFsEwUr8iqo-C3Mo8Kdb07vj4sVOfltyyKrynsMv9MkTRX8MN8Je9tmLtTR3NJ92emGrN367ivT8rpuq_oFMlDjnbNVldYitP1azXhDALM64Um60InWE1zHX7fIdS00Du7CFmTQm4YKJ2gSD4u1MrwjzABdNuInyhU9Alr6koXSuzRLvpb4ALIxwH1pSnVS3BWzRDJ2yPCn02vha7W9MPtIbvSwgtecK0NscMXbJ4GFBcPbzLyW4W8T_n9jlKW3czL9yA5skbS5rfAHwo9YsecDI7hg" `; diff --git a/test/userAuthentication.test.js b/test/userAuthentication.test.js index af9f648..e160dce 100644 --- a/test/userAuthentication.test.js +++ b/test/userAuthentication.test.js @@ -67,34 +67,42 @@ const contextMock = { describe("uaa tests", () => { describe("without context", () => { - test("uaaDecode", async () => { - const result = await uaa.uaaDecode([PAAS_CLIENT_TOKEN], []); + test.each([ + ["decode default", PAAS_CLIENT_TOKEN, [PAAS_CLIENT_TOKEN], [false]], + ["decode --json", PAAS_CLIENT_TOKEN, [PAAS_CLIENT_TOKEN], [true]], + ])("%s", async (_, token, passArgs, passFlags) => { + const result = await uaa.uaaDecode(passArgs, passFlags); expect(sharedStaticMock.isJWT).toHaveBeenCalledTimes(1); - expect(sharedStaticMock.isJWT).toHaveBeenCalledWith(PAAS_CLIENT_TOKEN); + expect(sharedStaticMock.isJWT).toHaveBeenCalledWith(token); expect(result).toMatchSnapshot(); }); }); - describe("xsuaa tokens", () => { + describe("xsuaa app tokens", () => { test.each([ ["paas client default", PAAS_CLIENT_TOKEN, [], [false, false]], ["paas client --decode", PAAS_CLIENT_TOKEN, [], [true, false]], + ["paas client --json", PAAS_CLIENT_TOKEN, [], [false, true]], + ["paas client --decode --json", PAAS_CLIENT_TOKEN, [], [true, true]], ["saas client default", SAAS_CLIENT_TOKEN, [SUBDOMAIN], [false, false]], ["saas client --decode", SAAS_CLIENT_TOKEN, [SUBDOMAIN], [true, false]], + ["saas client --json", SAAS_CLIENT_TOKEN, [SUBDOMAIN], [false, true]], + ["saas client --decode --json", SAAS_CLIENT_TOKEN, [SUBDOMAIN], [true, true]], ])("%s", async (_, token, passArgs, passFlags) => { fetchMock.mockResolvedValueOnce({ ok: true, json: async () => ({ access_token: token, expires_in: Infinity }), }); const result = await uaa.uaaClient(contextMock, passArgs, passFlags); - expect(fetchMock.mock.calls[0]).toMatchSnapshot(); expect(fetchMock).toHaveBeenCalledTimes(1); + expect(fetchMock.mock.calls[0]).toMatchSnapshot(); expect(result).toMatchSnapshot(); }); test.each([ ["saas passcode default", SAAS_PASSCODE_TOKEN, [PASSCODE, SUBDOMAIN], [false, false, false], 1], ["saas passcode --decode", SAAS_PASSCODE_TOKEN, [PASSCODE, SUBDOMAIN], [true, false, false], 1], + ["saas passcode --json", SAAS_PASSCODE_TOKEN, [PASSCODE, SUBDOMAIN], [false, true, false], 1], ["saas passcode --userinfo", SAAS_PASSCODE_TOKEN, [PASSCODE, SUBDOMAIN], [false, false, true], 2], ["saas passcode --decode --userinfo", SAAS_PASSCODE_TOKEN, [PASSCODE, SUBDOMAIN], [true, false, true], 2], ])("%s", async (_, token, passArgs, passFlags, fetchCalls) => { @@ -109,14 +117,15 @@ describe("uaa tests", () => { }); } const result = await uaa.uaaPasscode(contextMock, passArgs, passFlags); - expect(fetchMock.mock.calls).toMatchSnapshot(); expect(fetchMock).toHaveBeenCalledTimes(fetchCalls); + expect(fetchMock.mock.calls).toMatchSnapshot(); expect(result).toMatchSnapshot(); }); test.each([ ["saas user default", SAAS_USER_TOKEN, [USERNAME, PASSWORD, SUBDOMAIN], [false, false, false], 1], ["saas user --decode", SAAS_USER_TOKEN, [USERNAME, PASSWORD, SUBDOMAIN], [true, false, false], 1], + ["saas user --json", SAAS_USER_TOKEN, [USERNAME, PASSWORD, SUBDOMAIN], [false, true, false], 1], ["saas user --userinfo", SAAS_USER_TOKEN, [USERNAME, PASSWORD, SUBDOMAIN], [false, false, true], 2], ["saas user --decode --userinfo", SAAS_USER_TOKEN, [USERNAME, PASSWORD, SUBDOMAIN], [true, false, true], 2], ])("%s", async (_, token, passArgs, passFlags, fetchCalls) => { @@ -131,8 +140,8 @@ describe("uaa tests", () => { }); } const result = await uaa.uaaUser(contextMock, passArgs, passFlags); - expect(fetchMock.mock.calls).toMatchSnapshot(); expect(fetchMock).toHaveBeenCalledTimes(fetchCalls); + expect(fetchMock.mock.calls).toMatchSnapshot(); expect(result).toMatchSnapshot(); }); }); @@ -141,6 +150,7 @@ describe("uaa tests", () => { test.each([ ["saas service client default", SAAS_SERVICE_CLIENT_TOKEN, [SERVICE, SUBDOMAIN], [false, false]], ["saas service client --decode", SAAS_SERVICE_CLIENT_TOKEN, [SERVICE, SUBDOMAIN], [true, false]], + ["saas service client --json", SAAS_SERVICE_CLIENT_TOKEN, [SERVICE, SUBDOMAIN], [false, true]], ])("%s", async (_, token, passArgs, passFlags) => { sharedStaticMock.isDashedWord.mockReturnValue(true); contextMock.getUaaInfo.mockReturnValueOnce({ @@ -170,6 +180,13 @@ describe("uaa tests", () => { [true, false, false], 0, ], + [ + "saas service passcode --json", + SAAS_SERVICE_PASSCODE_TOKEN, + [SERVICE, PASSCODE, SUBDOMAIN], + [false, true, false], + 0, + ], [ "saas service passcode --userinfo", SAAS_SERVICE_PASSCODE_TOKEN, @@ -199,8 +216,8 @@ describe("uaa tests", () => { }); } const result = await uaa.uaaServicePasscode(contextMock, passArgs, passFlags); - expect(fetchMock.mock.calls).toMatchSnapshot(); expect(fetchMock).toHaveBeenCalledTimes(fetchCalls); + expect(fetchMock.mock.calls).toMatchSnapshot(); expect(result).toMatchSnapshot(); }); @@ -219,6 +236,13 @@ describe("uaa tests", () => { [true, false, false], 0, ], + [ + "saas service user --json", + SAAS_SERVICE_USER_TOKEN, + [SERVICE, USERNAME, PASSWORD, SUBDOMAIN], + [false, true, false], + 0, + ], [ "saas service user --userinfo", SAAS_SERVICE_USER_TOKEN, @@ -248,8 +272,8 @@ describe("uaa tests", () => { }); } const result = await uaa.uaaServiceUser(contextMock, passArgs, passFlags); - expect(fetchMock.mock.calls).toMatchSnapshot(); expect(fetchMock).toHaveBeenCalledTimes(fetchCalls); + expect(fetchMock.mock.calls).toMatchSnapshot(); expect(result).toMatchSnapshot(); }); });