smart_app_launch_test_kit 1.0.1 → 1.0.2
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.
- checksums.yaml +4 -4
- data/execution_scripts/README.md +16 -0
- data/execution_scripts/client_vs_server/access_data_and_continue_client.rb +37 -0
- data/execution_scripts/client_vs_server/smart_v22_backend_services_with_commands.yaml +69 -0
- data/execution_scripts/client_vs_server/smart_v22_backend_services_with_commands_client_expected.json +1 -0
- data/execution_scripts/client_vs_server/smart_v22_backend_services_with_commands_server_expected.json +478 -0
- data/execution_scripts/client_vs_server/smart_v22_backend_services_with_commands_server_no_tls_expected.json +479 -0
- data/execution_scripts/client_vs_server/smart_v22_confidential_symmetric_with_commands.yaml +122 -0
- data/execution_scripts/client_vs_server/smart_v22_confidential_symmetric_with_commands_client_expected.json +1 -0
- data/execution_scripts/client_vs_server/smart_v22_confidential_symmetric_with_commands_client_no_tls_expected.json +1 -0
- data/execution_scripts/client_vs_server/smart_v22_confidential_symmetric_with_commands_server_expected.json +1 -0
- data/execution_scripts/client_vs_server/smart_v22_confidential_symmetric_with_commands_server_no_tls_expected.json +1 -0
- data/execution_scripts/client_vs_server/smart_v22_public_with_commands.yaml +123 -0
- data/execution_scripts/client_vs_server/smart_v22_public_with_commands_client_expected.json +1 -0
- data/execution_scripts/client_vs_server/smart_v22_public_with_commands_client_no_tls_expected.json +1 -0
- data/execution_scripts/client_vs_server/smart_v22_public_with_commands_server_expected.json +1 -0
- data/execution_scripts/client_vs_server/smart_v22_public_with_commands_server_no_tls_expected.json +1 -0
- data/execution_scripts/client_vs_server/visit_and_wait_to_return_to_inferno.rb +17 -0
- data/execution_scripts/reference_server/base_ref_server_authorize.rb +24 -0
- data/execution_scripts/reference_server/base_ref_server_ehr_launch.rb +24 -0
- data/execution_scripts/reference_server/ref_server_authorize_85_all_scopes.rb +3 -0
- data/execution_scripts/reference_server/ref_server_authorize_launched_all_scopes.rb +3 -0
- data/execution_scripts/reference_server/ref_server_ehr_launch_85.rb +3 -0
- data/execution_scripts/reference_server/smart_v1_vs_reference_server_with_commands.yaml +60 -0
- data/execution_scripts/reference_server/smart_v1_vs_reference_server_with_commands_expected.json +1 -0
- data/execution_scripts/reference_server/smart_v22_vs_reference_server_with_commands.yaml +93 -0
- data/execution_scripts/reference_server/smart_v22_vs_reference_server_with_commands_expected.json +1 -0
- data/execution_scripts/reference_server/smart_v22_vs_reference_server_with_commands_same_host_expected.json +4166 -0
- data/execution_scripts/reference_server/smart_v2_vs_reference_server_with_commands.yaml +81 -0
- data/execution_scripts/reference_server/smart_v2_vs_reference_server_with_commands_expected.json +1 -0
- data/lib/smart_app_launch/app_launch_test.rb +4 -0
- data/lib/smart_app_launch/app_redirect_test.rb +2 -1
- data/lib/smart_app_launch/client_suite/access_alca_interaction_test.rb +5 -1
- data/lib/smart_app_launch/client_suite/access_alcs_interaction_test.rb +5 -1
- data/lib/smart_app_launch/client_suite/access_alp_interaction_test.rb +6 -2
- data/lib/smart_app_launch/client_suite/access_bsca_interaction_test.rb +4 -1
- data/lib/smart_app_launch/client_suite/authentication_verification.rb +1 -1
- data/lib/smart_app_launch/client_suite/client_descriptions.rb +4 -3
- data/lib/smart_app_launch/cors_metadata_request_test.rb +11 -4
- data/lib/smart_app_launch/cors_openid_fhir_user_claim_test.rb +8 -4
- data/lib/smart_app_launch/cors_token_exchange_test.rb +8 -4
- data/lib/smart_app_launch/cors_well_known_endpoint_test.rb +8 -4
- data/lib/smart_app_launch/version.rb +2 -2
- metadata +34 -6
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "b1e2e706-b291-4547-adf0-8b7851d42fef",
|
|
4
|
+
"created_at": "2026-04-03T12:30:57.028-04:00",
|
|
5
|
+
"inputs": [
|
|
6
|
+
{
|
|
7
|
+
"name": "url",
|
|
8
|
+
"value": "http://localhost:4567/custom/smart_client_stu2_2/fhir",
|
|
9
|
+
"type": "text"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "backend_services_smart_auth_info",
|
|
13
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"name\":\"backend_services_smart_auth_info\"}",
|
|
14
|
+
"type": "auth_info"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"optional": false,
|
|
18
|
+
"outputs": [
|
|
19
|
+
{
|
|
20
|
+
"name": "well_known_introspection_url",
|
|
21
|
+
"type": "text",
|
|
22
|
+
"value": "http://localhost:4567/custom/smart_client_stu2_2/auth/introspect"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "well_known_configuration",
|
|
26
|
+
"type": "text",
|
|
27
|
+
"value": "{\"token_endpoint_auth_signing_alg_values_supported\":[\"RS384\",\"ES384\"],\"capabilities\":[\"client-confidential-asymmetric\",\"launch-ehr\",\"launch-standalone\",\"authorize-post\",\"client-public\",\"client-confidential-symmetric\",\"permission-offline\",\"permission-online\",\"permission-patient\",\"permission-user\",\"permission-v1\",\"permission-v2\",\"context-ehr-patient\",\"context-ehr-encounter\",\"context-standalone-patient\",\"context-standalone-encounter\",\"context-banner\",\"context-style\"],\"code_challenge_methods_supported\":[\"S256\"],\"token_endpoint_auth_methods_supported\":[\"private_key_jwt\",\"client_secret_basic\",\"client_secret_post\"],\"issuer\":\"http://localhost:4567/custom/smart_client_stu2_2/fhir\",\"grant_types_supported\":[\"client_credentials\",\"authorization_code\"],\"scopes_supported\":[\"system/*.read\",\"user/*.read\",\"patient/*.read\"],\"authorization_endpoint\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"token_endpoint\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"introspection_endpoint\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/introspect\"}"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "smart_authorization_url",
|
|
31
|
+
"type": "text",
|
|
32
|
+
"value": "http://localhost:4567/custom/smart_client_stu2_2/auth/authorization"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "well_known_management_url",
|
|
36
|
+
"type": "text",
|
|
37
|
+
"value": ""
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "well_known_registration_url",
|
|
41
|
+
"type": "text",
|
|
42
|
+
"value": ""
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "well_known_revocation_url",
|
|
46
|
+
"type": "text",
|
|
47
|
+
"value": ""
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "smart_token_url",
|
|
51
|
+
"type": "text",
|
|
52
|
+
"value": "http://localhost:4567/custom/smart_client_stu2_2/auth/token"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "backend_services_smart_auth_info",
|
|
56
|
+
"type": "text",
|
|
57
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"token_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"auth_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"name\":\"backend_services_smart_auth_info\"}"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"requests": [
|
|
61
|
+
{
|
|
62
|
+
"id": "fc08dedc-f24f-4533-93a1-9821401ebd6b",
|
|
63
|
+
"direction": "outgoing",
|
|
64
|
+
"index": 853,
|
|
65
|
+
"result_id": "b1e2e706-b291-4547-adf0-8b7851d42fef",
|
|
66
|
+
"status": 200,
|
|
67
|
+
"timestamp": "2026-04-03T12:30:57.031-04:00",
|
|
68
|
+
"url": "http://localhost:4567/custom/smart_client_stu2_2/fhir/.well-known/smart-configuration",
|
|
69
|
+
"verb": "get"
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"result": "pass",
|
|
73
|
+
"test_id": "smart_stu2_2-smart_backend_services-smart_discovery_stu2_2-well_known_endpoint",
|
|
74
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
75
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
76
|
+
"updated_at": "2026-04-03T12:30:57.028-04:00"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "5671515b-08c0-4997-9a5a-e11fe0684b48",
|
|
80
|
+
"created_at": "2026-04-03T12:30:57.036-04:00",
|
|
81
|
+
"inputs": [
|
|
82
|
+
{
|
|
83
|
+
"name": "well_known_configuration",
|
|
84
|
+
"value": "{\"token_endpoint_auth_signing_alg_values_supported\":[\"RS384\",\"ES384\"],\"capabilities\":[\"client-confidential-asymmetric\",\"launch-ehr\",\"launch-standalone\",\"authorize-post\",\"client-public\",\"client-confidential-symmetric\",\"permission-offline\",\"permission-online\",\"permission-patient\",\"permission-user\",\"permission-v1\",\"permission-v2\",\"context-ehr-patient\",\"context-ehr-encounter\",\"context-standalone-patient\",\"context-standalone-encounter\",\"context-banner\",\"context-style\"],\"code_challenge_methods_supported\":[\"S256\"],\"token_endpoint_auth_methods_supported\":[\"private_key_jwt\",\"client_secret_basic\",\"client_secret_post\"],\"issuer\":\"http://localhost:4567/custom/smart_client_stu2_2/fhir\",\"grant_types_supported\":[\"client_credentials\",\"authorization_code\"],\"scopes_supported\":[\"system/*.read\",\"user/*.read\",\"patient/*.read\"],\"authorization_endpoint\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"token_endpoint\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"introspection_endpoint\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/introspect\"}",
|
|
85
|
+
"type": "text"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"messages": [
|
|
89
|
+
{
|
|
90
|
+
"message": "Well-known `issuer` is omitted when server capabilites does not include `sso-openid-connect`",
|
|
91
|
+
"type": "warning"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"optional": false,
|
|
95
|
+
"outputs": [],
|
|
96
|
+
"requests": [],
|
|
97
|
+
"result": "pass",
|
|
98
|
+
"test_id": "smart_stu2_2-smart_backend_services-smart_discovery_stu2_2-well_known_capabilities_stu2",
|
|
99
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
100
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
101
|
+
"updated_at": "2026-04-03T12:30:57.036-04:00"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "23aade05-b9e5-49c7-bf4e-a8f8e415b82f",
|
|
105
|
+
"created_at": "2026-04-03T12:30:57.042-04:00",
|
|
106
|
+
"inputs": [
|
|
107
|
+
{
|
|
108
|
+
"name": "url",
|
|
109
|
+
"value": "http://localhost:4567/custom/smart_client_stu2_2/fhir",
|
|
110
|
+
"type": "text"
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"messages": [
|
|
114
|
+
{
|
|
115
|
+
"message": "No CORS headers required: Inferno and the target server are on the same host.",
|
|
116
|
+
"type": "info"
|
|
117
|
+
}
|
|
118
|
+
],
|
|
119
|
+
"optional": true,
|
|
120
|
+
"outputs": [],
|
|
121
|
+
"requests": [
|
|
122
|
+
{
|
|
123
|
+
"id": "8440e3cf-bf34-4a91-82d0-500a64a6d85d",
|
|
124
|
+
"direction": "outgoing",
|
|
125
|
+
"index": 854,
|
|
126
|
+
"result_id": "23aade05-b9e5-49c7-bf4e-a8f8e415b82f",
|
|
127
|
+
"status": 200,
|
|
128
|
+
"timestamp": "2026-04-03T12:30:57.044-04:00",
|
|
129
|
+
"url": "http://localhost:4567/custom/smart_client_stu2_2/fhir/.well-known/smart-configuration",
|
|
130
|
+
"verb": "get"
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"result": "pass",
|
|
134
|
+
"test_id": "smart_stu2_2-smart_backend_services-smart_discovery_stu2_2-smart_cors_well_known_endpoint",
|
|
135
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
136
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
137
|
+
"updated_at": "2026-04-03T12:30:57.042-04:00"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "55c879d5-cf6d-464e-af46-773f5e22ad7f",
|
|
141
|
+
"created_at": "2026-04-03T12:30:57.061-04:00",
|
|
142
|
+
"inputs": [
|
|
143
|
+
{
|
|
144
|
+
"name": "url",
|
|
145
|
+
"value": "http://localhost:4567/custom/smart_client_stu2_2/fhir",
|
|
146
|
+
"type": "text"
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
"optional": true,
|
|
150
|
+
"outputs": [],
|
|
151
|
+
"requests": [
|
|
152
|
+
{
|
|
153
|
+
"id": "f321cdbd-67b9-4afe-8111-7bfbf83b6941",
|
|
154
|
+
"direction": "outgoing",
|
|
155
|
+
"index": 855,
|
|
156
|
+
"result_id": "55c879d5-cf6d-464e-af46-773f5e22ad7f",
|
|
157
|
+
"status": 500,
|
|
158
|
+
"timestamp": "2026-04-03T12:30:57.062-04:00",
|
|
159
|
+
"url": "http://localhost:4567/custom/smart_client_stu2_2/fhir/metadata",
|
|
160
|
+
"verb": "get"
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"result": "fail",
|
|
164
|
+
"result_message": "Unexpected response status: expected 200, but received 500",
|
|
165
|
+
"test_id": "smart_stu2_2-smart_backend_services-smart_discovery_stu2_2-smart_cors_metadata_request",
|
|
166
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
167
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
168
|
+
"updated_at": "2026-04-03T12:30:57.061-04:00"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "623757d1-642b-41c0-94af-e37059d26ea0",
|
|
172
|
+
"created_at": "2026-04-03T12:30:57.066-04:00",
|
|
173
|
+
"inputs": [
|
|
174
|
+
{
|
|
175
|
+
"name": "url",
|
|
176
|
+
"label": "FHIR Endpoint",
|
|
177
|
+
"description": "URL of the FHIR endpoint used by SMART applications",
|
|
178
|
+
"value": "http://localhost:4567/custom/smart_client_stu2_2/fhir",
|
|
179
|
+
"type": "text"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"name": "backend_services_smart_auth_info",
|
|
183
|
+
"label": null,
|
|
184
|
+
"description": null,
|
|
185
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"name\":\"backend_services_smart_auth_info\"}",
|
|
186
|
+
"type": "auth_info"
|
|
187
|
+
}
|
|
188
|
+
],
|
|
189
|
+
"optional": false,
|
|
190
|
+
"outputs": [],
|
|
191
|
+
"requests": [],
|
|
192
|
+
"result": "pass",
|
|
193
|
+
"test_group_id": "smart_stu2_2-smart_backend_services-smart_discovery_stu2_2",
|
|
194
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
195
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
196
|
+
"updated_at": "2026-04-03T12:30:57.066-04:00"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"id": "c85f6156-5fc7-435b-a1e7-84192b7bca09",
|
|
200
|
+
"created_at": "2026-04-03T12:30:57.073-04:00",
|
|
201
|
+
"inputs": [
|
|
202
|
+
{
|
|
203
|
+
"name": "url",
|
|
204
|
+
"value": "http://localhost:4567/custom/smart_client_stu2_2/fhir",
|
|
205
|
+
"type": "text"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"name": "backend_services_smart_auth_info",
|
|
209
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"token_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"auth_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"name\":\"backend_services_smart_auth_info\"}",
|
|
210
|
+
"type": "auth_info"
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"messages": [
|
|
214
|
+
{
|
|
215
|
+
"message": "http://localhost:4567/custom/smart_client_stu2_2/auth/token correctly denied SSL 2.0 connection as required.",
|
|
216
|
+
"type": "info"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"message": "http://localhost:4567/custom/smart_client_stu2_2/auth/token correctly denied SSL 3.0 connection as required.",
|
|
220
|
+
"type": "info"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"message": "http://localhost:4567/custom/smart_client_stu2_2/auth/token correctly denied TLS 1.0 connection as required.",
|
|
224
|
+
"type": "info"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"message": "http://localhost:4567/custom/smart_client_stu2_2/auth/token correctly denied TLS 1.1 connection as required.",
|
|
228
|
+
"type": "info"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"message": "http://localhost:4567/custom/smart_client_stu2_2/auth/token denied TLS 1.2 connection.",
|
|
232
|
+
"type": "info"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"message": "http://localhost:4567/custom/smart_client_stu2_2/auth/token denied TLS 1.3 connection.",
|
|
236
|
+
"type": "info"
|
|
237
|
+
}
|
|
238
|
+
],
|
|
239
|
+
"optional": false,
|
|
240
|
+
"outputs": [],
|
|
241
|
+
"requests": [],
|
|
242
|
+
"result": "fail",
|
|
243
|
+
"result_message": "Server did not support any allowed TLS versions.",
|
|
244
|
+
"test_id": "smart_stu2_2-smart_backend_services-backend_services_authorization-smart_backend_services_token_tls_version",
|
|
245
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
246
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
247
|
+
"updated_at": "2026-04-03T12:30:57.073-04:00"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"id": "d74c9257-3074-46fc-acf4-fd03e3f7ffdf",
|
|
251
|
+
"created_at": "2026-04-03T12:30:57.081-04:00",
|
|
252
|
+
"inputs": [
|
|
253
|
+
{
|
|
254
|
+
"name": "backend_services_smart_auth_info",
|
|
255
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"token_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"auth_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"name\":\"backend_services_smart_auth_info\"}",
|
|
256
|
+
"type": "auth_info"
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
"optional": false,
|
|
260
|
+
"outputs": [],
|
|
261
|
+
"requests": [
|
|
262
|
+
{
|
|
263
|
+
"id": "76172d46-5092-4ab0-a8f7-0e3be3ae603d",
|
|
264
|
+
"direction": "outgoing",
|
|
265
|
+
"index": 856,
|
|
266
|
+
"result_id": "d74c9257-3074-46fc-acf4-fd03e3f7ffdf",
|
|
267
|
+
"status": 500,
|
|
268
|
+
"timestamp": "2026-04-03T12:30:57.081-04:00",
|
|
269
|
+
"url": "http://localhost:4567/custom/smart_client_stu2_2/auth/token",
|
|
270
|
+
"verb": "post"
|
|
271
|
+
}
|
|
272
|
+
],
|
|
273
|
+
"result": "fail",
|
|
274
|
+
"result_message": "Unexpected response status: expected 400, but received 500",
|
|
275
|
+
"test_id": "smart_stu2_2-smart_backend_services-backend_services_authorization-smart_backend_services_invalid_grant_type",
|
|
276
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
277
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
278
|
+
"updated_at": "2026-04-03T12:30:57.081-04:00"
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"id": "ad74f654-421f-4bda-9ba2-47638b6df3d4",
|
|
282
|
+
"created_at": "2026-04-03T12:30:57.094-04:00",
|
|
283
|
+
"inputs": [
|
|
284
|
+
{
|
|
285
|
+
"name": "backend_services_smart_auth_info",
|
|
286
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"token_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"auth_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"name\":\"backend_services_smart_auth_info\"}",
|
|
287
|
+
"type": "auth_info"
|
|
288
|
+
}
|
|
289
|
+
],
|
|
290
|
+
"optional": false,
|
|
291
|
+
"outputs": [],
|
|
292
|
+
"requests": [
|
|
293
|
+
{
|
|
294
|
+
"id": "eb9a2d9c-2f9b-46e4-ad6e-e3c23bac3235",
|
|
295
|
+
"direction": "outgoing",
|
|
296
|
+
"index": 858,
|
|
297
|
+
"result_id": "ad74f654-421f-4bda-9ba2-47638b6df3d4",
|
|
298
|
+
"status": 200,
|
|
299
|
+
"timestamp": "2026-04-03T12:30:57.117-04:00",
|
|
300
|
+
"url": "http://localhost:4567/custom/smart_client_stu2_2/auth/token",
|
|
301
|
+
"verb": "post"
|
|
302
|
+
}
|
|
303
|
+
],
|
|
304
|
+
"result": "fail",
|
|
305
|
+
"result_message": "Unexpected response status: expected 400, 401, but received 200",
|
|
306
|
+
"test_id": "smart_stu2_2-smart_backend_services-backend_services_authorization-smart_backend_services_invalid_client_assertion",
|
|
307
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
308
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
309
|
+
"updated_at": "2026-04-03T12:30:57.094-04:00"
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"id": "bc8ad628-d07e-4ff0-8854-a28ff4898d2a",
|
|
313
|
+
"created_at": "2026-04-03T12:30:57.133-04:00",
|
|
314
|
+
"inputs": [
|
|
315
|
+
{
|
|
316
|
+
"name": "backend_services_smart_auth_info",
|
|
317
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"token_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"auth_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"name\":\"backend_services_smart_auth_info\"}",
|
|
318
|
+
"type": "auth_info"
|
|
319
|
+
}
|
|
320
|
+
],
|
|
321
|
+
"optional": false,
|
|
322
|
+
"outputs": [],
|
|
323
|
+
"requests": [
|
|
324
|
+
{
|
|
325
|
+
"id": "a63b4de7-2dfe-49ad-963a-10e5df0c8534",
|
|
326
|
+
"direction": "outgoing",
|
|
327
|
+
"index": 860,
|
|
328
|
+
"result_id": "bc8ad628-d07e-4ff0-8854-a28ff4898d2a",
|
|
329
|
+
"status": 200,
|
|
330
|
+
"timestamp": "2026-04-03T12:30:57.135-04:00",
|
|
331
|
+
"url": "http://localhost:4567/custom/smart_client_stu2_2/auth/token",
|
|
332
|
+
"verb": "post"
|
|
333
|
+
}
|
|
334
|
+
],
|
|
335
|
+
"result": "fail",
|
|
336
|
+
"result_message": "Unexpected response status: expected 400, 401, but received 200",
|
|
337
|
+
"test_id": "smart_stu2_2-smart_backend_services-backend_services_authorization-smart_backend_services_invalid_jwt",
|
|
338
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
339
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
340
|
+
"updated_at": "2026-04-03T12:30:57.133-04:00"
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"id": "51939a9c-64c3-4eae-a5d8-41c6cb69cb09",
|
|
344
|
+
"created_at": "2026-04-03T12:30:57.159-04:00",
|
|
345
|
+
"inputs": [
|
|
346
|
+
{
|
|
347
|
+
"name": "backend_services_smart_auth_info",
|
|
348
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"token_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"auth_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"name\":\"backend_services_smart_auth_info\"}",
|
|
349
|
+
"type": "auth_info"
|
|
350
|
+
}
|
|
351
|
+
],
|
|
352
|
+
"optional": false,
|
|
353
|
+
"outputs": [
|
|
354
|
+
{
|
|
355
|
+
"name": "authentication_response",
|
|
356
|
+
"type": "text",
|
|
357
|
+
"value": "{\"access_token\":\"eyJjbGllbnRfaWQiOiJzbWFydF9jbGllbnRfdGVzdF9kZW1vIiwiZXhwaXJhdGlvbiI6MTc3NTIzNzQ1Nywibm9uY2UiOiI1NDVlNDlmM2U2ZjgxMjQzIn0\",\"token_type\":\"Bearer\",\"expires_in\":3600,\"scope\":\"system/*.rs\"}"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"name": "backend_services_smart_auth_info",
|
|
361
|
+
"type": "text",
|
|
362
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"token_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"auth_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"issue_time\":\"2026-04-03T12:30:57-04:00\",\"name\":\"backend_services_smart_auth_info\"}"
|
|
363
|
+
}
|
|
364
|
+
],
|
|
365
|
+
"requests": [
|
|
366
|
+
{
|
|
367
|
+
"id": "2ae0eeb3-4359-4357-9f9f-07c94a788589",
|
|
368
|
+
"direction": "outgoing",
|
|
369
|
+
"index": 862,
|
|
370
|
+
"result_id": "51939a9c-64c3-4eae-a5d8-41c6cb69cb09",
|
|
371
|
+
"status": 200,
|
|
372
|
+
"timestamp": "2026-04-03T12:30:57.159-04:00",
|
|
373
|
+
"url": "http://localhost:4567/custom/smart_client_stu2_2/auth/token",
|
|
374
|
+
"verb": "post"
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
"result": "pass",
|
|
378
|
+
"test_id": "smart_stu2_2-smart_backend_services-backend_services_authorization-smart_backend_services_auth_request_success",
|
|
379
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
380
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
381
|
+
"updated_at": "2026-04-03T12:30:57.159-04:00"
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
"id": "f18affc0-1d3a-4904-a666-af533cc10d29",
|
|
385
|
+
"created_at": "2026-04-03T12:30:57.168-04:00",
|
|
386
|
+
"inputs": [
|
|
387
|
+
{
|
|
388
|
+
"name": "authentication_response",
|
|
389
|
+
"value": "{\"access_token\":\"eyJjbGllbnRfaWQiOiJzbWFydF9jbGllbnRfdGVzdF9kZW1vIiwiZXhwaXJhdGlvbiI6MTc3NTIzNzQ1Nywibm9uY2UiOiI1NDVlNDlmM2U2ZjgxMjQzIn0\",\"token_type\":\"Bearer\",\"expires_in\":3600,\"scope\":\"system/*.rs\"}",
|
|
390
|
+
"type": "text"
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"name": "backend_services_smart_auth_info",
|
|
394
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"token_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"auth_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"issue_time\":\"2026-04-03T12:30:57-04:00\",\"name\":\"backend_services_smart_auth_info\"}",
|
|
395
|
+
"type": "auth_info"
|
|
396
|
+
}
|
|
397
|
+
],
|
|
398
|
+
"optional": false,
|
|
399
|
+
"outputs": [
|
|
400
|
+
{
|
|
401
|
+
"name": "bearer_token",
|
|
402
|
+
"type": "text",
|
|
403
|
+
"value": "eyJjbGllbnRfaWQiOiJzbWFydF9jbGllbnRfdGVzdF9kZW1vIiwiZXhwaXJhdGlvbiI6MTc3NTIzNzQ1Nywibm9uY2UiOiI1NDVlNDlmM2U2ZjgxMjQzIn0"
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"name": "backend_services_smart_auth_info",
|
|
407
|
+
"type": "text",
|
|
408
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"token_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"auth_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"access_token\":\"eyJjbGllbnRfaWQiOiJzbWFydF9jbGllbnRfdGVzdF9kZW1vIiwiZXhwaXJhdGlvbiI6MTc3NTIzNzQ1Nywibm9uY2UiOiI1NDVlNDlmM2U2ZjgxMjQzIn0\",\"issue_time\":\"2026-04-03T12:30:57-04:00\",\"expires_in\":3600,\"name\":\"backend_services_smart_auth_info\"}"
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"name": "backend_services_received_scopes",
|
|
412
|
+
"type": "text",
|
|
413
|
+
"value": "system/*.rs"
|
|
414
|
+
}
|
|
415
|
+
],
|
|
416
|
+
"requests": [],
|
|
417
|
+
"result": "pass",
|
|
418
|
+
"test_id": "smart_stu2_2-smart_backend_services-backend_services_authorization-smart_backend_services_auth_response_body",
|
|
419
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
420
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
421
|
+
"updated_at": "2026-04-03T12:30:57.168-04:00"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"id": "20599988-2744-4ad6-ae30-436957709ed2",
|
|
425
|
+
"created_at": "2026-04-03T12:30:57.179-04:00",
|
|
426
|
+
"inputs": [
|
|
427
|
+
{
|
|
428
|
+
"name": "url",
|
|
429
|
+
"label": null,
|
|
430
|
+
"description": null,
|
|
431
|
+
"value": "http://localhost:4567/custom/smart_client_stu2_2/fhir",
|
|
432
|
+
"type": "text"
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"name": "backend_services_smart_auth_info",
|
|
436
|
+
"label": "Backend Services Credentials",
|
|
437
|
+
"description": null,
|
|
438
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"token_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/token\",\"auth_url\":\"http://localhost:4567/custom/smart_client_stu2_2/auth/authorization\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"name\":\"backend_services_smart_auth_info\"}",
|
|
439
|
+
"type": "auth_info"
|
|
440
|
+
}
|
|
441
|
+
],
|
|
442
|
+
"optional": false,
|
|
443
|
+
"outputs": [],
|
|
444
|
+
"requests": [],
|
|
445
|
+
"result": "fail",
|
|
446
|
+
"test_group_id": "smart_stu2_2-smart_backend_services-backend_services_authorization",
|
|
447
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
448
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
449
|
+
"updated_at": "2026-04-03T12:30:57.179-04:00"
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"id": "76e734bc-183c-46a7-8a8e-e26284890e7a",
|
|
453
|
+
"created_at": "2026-04-03T12:30:57.181-04:00",
|
|
454
|
+
"inputs": [
|
|
455
|
+
{
|
|
456
|
+
"name": "url",
|
|
457
|
+
"label": "FHIR Endpoint",
|
|
458
|
+
"description": "URL of the FHIR endpoint used by SMART applications",
|
|
459
|
+
"value": "http://localhost:4567/custom/smart_client_stu2_2/fhir",
|
|
460
|
+
"type": "text"
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
"name": "backend_services_smart_auth_info",
|
|
464
|
+
"label": "Backend Services Credentials",
|
|
465
|
+
"description": null,
|
|
466
|
+
"value": "{\"auth_type\":\"backend_services\",\"use_discovery\":\"true\",\"requested_scopes\":\"system/*.rs\",\"client_id\":\"smart_client_test_demo\",\"pkce_support\":\"enabled\",\"pkce_code_challenge_method\":\"S256\",\"auth_request_method\":\"GET\",\"encryption_algorithm\":\"ES384\",\"name\":\"backend_services_smart_auth_info\"}",
|
|
467
|
+
"type": "auth_info"
|
|
468
|
+
}
|
|
469
|
+
],
|
|
470
|
+
"optional": false,
|
|
471
|
+
"outputs": [],
|
|
472
|
+
"requests": [],
|
|
473
|
+
"result": "fail",
|
|
474
|
+
"test_group_id": "smart_stu2_2-smart_backend_services",
|
|
475
|
+
"test_run_id": "667e7b0a-a3fc-43f6-997e-1273109c4229",
|
|
476
|
+
"test_session_id": "bqd5CYxzQ0Z",
|
|
477
|
+
"updated_at": "2026-04-03T12:30:57.181-04:00"
|
|
478
|
+
}
|
|
479
|
+
]
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
sessions:
|
|
2
|
+
- suite: smart_client_stu2_2
|
|
3
|
+
name: client
|
|
4
|
+
preset: smart_run_client_against_server_v2_2
|
|
5
|
+
suite_options:
|
|
6
|
+
SMART Client Type: 'SMART App Launch Confidential Symmetric Client'
|
|
7
|
+
- suite: smart_stu2_2
|
|
8
|
+
name: server
|
|
9
|
+
preset: 'Demo: Run Against the SMART Client Suite (Confidential Symmetric)'
|
|
10
|
+
|
|
11
|
+
comparison_config:
|
|
12
|
+
normalized_strings:
|
|
13
|
+
- replacement: <INFERNO_HOST>
|
|
14
|
+
patterns:
|
|
15
|
+
- http://localhost:4567/inferno # local inferno core ruby
|
|
16
|
+
- http://localhost:4567 # local ruby
|
|
17
|
+
- http://localhost # local docker
|
|
18
|
+
- https://inferno.healthit.gov/suites # prod
|
|
19
|
+
- https://inferno-qa.healthit.gov/suites # qa
|
|
20
|
+
- replacement: <REFERENCE_SERVER_URL>
|
|
21
|
+
patterns:
|
|
22
|
+
- https://inferno.healthit.gov/reference-server # prod reference server
|
|
23
|
+
- https://inferno-qa.healthit.gov/reference-server # qa reference server
|
|
24
|
+
- replacement: code_challenge=<CODE_CHALLENGE>
|
|
25
|
+
pattern: /code_challenge=[A-Za-z0-9+\/=_-]{43}/
|
|
26
|
+
- replacement: launch=<LAUNCH_KEY>
|
|
27
|
+
pattern: /launch=[a-f0-9]{64}/
|
|
28
|
+
- replacement: <UUID>
|
|
29
|
+
pattern: /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i
|
|
30
|
+
sessions:
|
|
31
|
+
server:
|
|
32
|
+
alternate_expected_files:
|
|
33
|
+
- file: smart_v22_confidential_symmetric_with_commands_server_no_tls_expected.json
|
|
34
|
+
when:
|
|
35
|
+
- field: inputs.url
|
|
36
|
+
matches: ^http://
|
|
37
|
+
client:
|
|
38
|
+
alternate_expected_files:
|
|
39
|
+
- file: smart_v22_confidential_symmetric_with_commands_client_no_tls_expected.json
|
|
40
|
+
when:
|
|
41
|
+
- field: inputs.smart_launch_urls
|
|
42
|
+
matches: ^http://
|
|
43
|
+
|
|
44
|
+
steps:
|
|
45
|
+
- state_description: Session Created
|
|
46
|
+
session: client
|
|
47
|
+
status: created
|
|
48
|
+
start_run:
|
|
49
|
+
session: client
|
|
50
|
+
runnable: suite
|
|
51
|
+
action_description: Run the client suite
|
|
52
|
+
|
|
53
|
+
- state_description: Wait at Client test 5.02 Access a secured FHIR endpoint using SMART App Launch
|
|
54
|
+
session: client
|
|
55
|
+
status: waiting
|
|
56
|
+
last_completed: 5.02
|
|
57
|
+
start_run:
|
|
58
|
+
session: server
|
|
59
|
+
runnable: 1
|
|
60
|
+
next_poll_session: server
|
|
61
|
+
action_description: Run server group 1 Standalone Launch
|
|
62
|
+
|
|
63
|
+
- state_description: Wait at Server test 1.2.02 OAuth server redirects client browser to app redirect URI
|
|
64
|
+
session: server
|
|
65
|
+
status: waiting
|
|
66
|
+
last_completed: 1.2.02
|
|
67
|
+
command: bundle exec ruby execution_scripts/client_vs_server/visit_and_wait_to_return_to_inferno.rb '{server.wait_outputs.authorization_url}'
|
|
68
|
+
action_description: Click the authorization link
|
|
69
|
+
|
|
70
|
+
- state_description: Finished Server group 1 Standalone Launch
|
|
71
|
+
session: server
|
|
72
|
+
status: done
|
|
73
|
+
last_completed: 1
|
|
74
|
+
start_run:
|
|
75
|
+
session: server
|
|
76
|
+
runnable: 2
|
|
77
|
+
action_description: Run server group 2 EHR Launch
|
|
78
|
+
|
|
79
|
+
- state_description: Wait at Server test 2.2.01 EHR server redirects client browser to Inferno app launch URI
|
|
80
|
+
session: server
|
|
81
|
+
status: waiting
|
|
82
|
+
last_completed: 2.2.01
|
|
83
|
+
command: bundle exec ruby execution_scripts/client_vs_server/visit_and_wait_to_return_to_inferno.rb '{client.wait_outputs.launch_urls}'
|
|
84
|
+
action_description: Perform an EHR launch using the simulated launch url
|
|
85
|
+
|
|
86
|
+
- state_description: Wait at Server test 2.2.04 OAuth server redirects client browser to app redirect URI
|
|
87
|
+
session: server
|
|
88
|
+
status: waiting
|
|
89
|
+
last_completed: 2.2.04
|
|
90
|
+
command: bundle exec ruby execution_scripts/client_vs_server/visit_and_wait_to_return_to_inferno.rb '{server.wait_outputs.authorization_url}'
|
|
91
|
+
action_description: Click the authorization link
|
|
92
|
+
|
|
93
|
+
- state_description: Finished Server group 2 EHR Launch
|
|
94
|
+
session: server
|
|
95
|
+
status: done
|
|
96
|
+
last_completed: 2
|
|
97
|
+
start_run:
|
|
98
|
+
session: server
|
|
99
|
+
runnable: 4
|
|
100
|
+
action_description: Run server group 4 Token Introspection
|
|
101
|
+
|
|
102
|
+
- state_description: Wait at Server test 4.1.2.02 OAuth server redirects client browser to app redirect URI
|
|
103
|
+
session: server
|
|
104
|
+
status: waiting
|
|
105
|
+
last_completed: 4.1.2.02
|
|
106
|
+
command: bundle exec ruby execution_scripts/client_vs_server/visit_and_wait_to_return_to_inferno.rb '{server.wait_outputs.authorization_url}'
|
|
107
|
+
action_description: Click the authorization link
|
|
108
|
+
|
|
109
|
+
- state_description: Finished Server group 4 Token Introspection
|
|
110
|
+
session: server
|
|
111
|
+
status: done
|
|
112
|
+
last_completed: 4
|
|
113
|
+
command: bundle exec ruby execution_scripts/client_vs_server/visit_and_wait_to_return_to_inferno.rb '{client.wait_outputs.continuation_url}'
|
|
114
|
+
next_poll_session: client
|
|
115
|
+
action_description: Continue the Client tests
|
|
116
|
+
|
|
117
|
+
- state_description: Finished Client Suite
|
|
118
|
+
session: client
|
|
119
|
+
status: done
|
|
120
|
+
last_completed: suite
|
|
121
|
+
action: END_SCRIPT
|
|
122
|
+
action_description: Finished Script
|