usps-imis-api 1.0.0.pre.rc.8 → 1.0.0.pre.rc.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +20 -2
  4. data/Readme.md +2 -0
  5. data/lib/usps/imis/api.rb +11 -12
  6. data/lib/usps/imis/business_object.rb +7 -8
  7. data/lib/usps/imis/data.rb +4 -0
  8. data/lib/usps/imis/error.rb +1 -1
  9. data/lib/usps/imis/query.rb +50 -18
  10. data/lib/usps/imis/requests.rb +7 -3
  11. data/lib/usps/imis/version.rb +1 -1
  12. data/spec/fixtures/vcr_cassettes/.keep +0 -0
  13. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_authorize/automatically_refreshes_an_expired_token.yml +67 -0
  14. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_imis_id_for/gets_the_iMIS_ID.yml +131 -0
  15. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_imis_id_for/with_a_query_error/wraps_errors.yml +67 -0
  16. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_inspect/does_not_show_the_token_instance_variable.yml +67 -0
  17. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_inspect/is_configured_to_exclude_the_token_instance_variable.yml +67 -0
  18. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_on/chains_with_on_to_a_single_block.yml +256 -0
  19. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_on/nests_on_and_with.yml +256 -0
  20. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_on/returns_a_BusinessObject_without_a_block.yml +67 -0
  21. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_on/sends_an_update_from_put.yml +256 -0
  22. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_put/sends_an_update.yml +256 -0
  23. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_put/when_receiving_a_response_error/wraps_the_error.yml +67 -0
  24. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_query/collects_all_query_results.yml +67 -0
  25. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_with/blocks_calling_imis_id_.yml +67 -0
  26. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_with/blocks_calling_imis_id_for.yml +67 -0
  27. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_with/sends_an_update_from_put.yml +256 -0
  28. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_with/sends_an_update_from_update.yml +256 -0
  29. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_with/uses_a_panel_correctly.yml +145 -0
  30. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/stores_the_initial_imis_id.yml +67 -0
  31. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/_put_field/submits_the_correct_update_request.yml +627 -0
  32. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_filter_fields/formats_fields_correctly.yml +67 -0
  33. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_get/delegation_to_get_fields/delegates_to_get_fields.yml +67 -0
  34. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_get/returns_multiple_values.yml +67 -0
  35. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_get_field/returns_a_string_value.yml +67 -0
  36. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_get_field/returns_an_integer_value.yml +67 -0
  37. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_get_fields/returns_multiple_values.yml +67 -0
  38. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_fetch/fetches_a_mapped_field.yml +158 -0
  39. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_fetch/raises_for_unmapped_updates.yml +67 -0
  40. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_fetch/supports_Hash_access_syntax.yml +158 -0
  41. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_fetch/supports_Hash_access_syntax_on_the_Api_directly.yml +158 -0
  42. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_update/raises_for_unmapped_updates.yml +67 -0
  43. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_update/sends_a_mapped_update.yml +256 -0
  44. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/initialize_with_imis_id/stores_the_initial_imis_id.yml +67 -0
  45. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_BasePanel/requires_business_object_to_be_defined.yml +67 -0
  46. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_BasePanel/requires_payload_data_to_be_defined.yml +67 -0
  47. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/api_example/_get/loads_a_specific_object.yml +146 -0
  48. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/api_example/_get/returns_specific_fields.yml +146 -0
  49. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/api_example/_get_field/returns_a_specific_field.yml +146 -0
  50. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/api_example/_get_fields/returns_specific_fields.yml +146 -0
  51. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/api_example/interacts_with_records_correctly.yml +495 -0
  52. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/initialization_with_ID/can_initialize_with_an_iMIS_ID.yml +67 -0
  53. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Vsc/_get/loads_a_specific_object.yml +145 -0
  54. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Vsc/handles_new_records_correctly.yml +319 -0
  55. data/spec/lib/usps/imis/api_spec.rb +4 -14
  56. data/spec/lib/usps/imis/business_object_spec.rb +1 -1
  57. data/spec/lib/usps/imis/data_spec.rb +9 -0
  58. data/spec/lib/usps/imis/mapper_spec.rb +1 -1
  59. data/spec/lib/usps/imis/panels/base_panel_spec.rb +1 -1
  60. data/spec/lib/usps/imis/panels/education_spec.rb +1 -1
  61. data/spec/lib/usps/imis/panels/vsc_spec.rb +1 -1
  62. data/spec/spec_helper.rb +40 -0
  63. metadata +44 -1
@@ -0,0 +1,67 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://abcdev.imiscloud.com/Token
6
+ body:
7
+ encoding: US-ASCII
8
+ string: grant_type=password&username=<USERNAME>&password=<PASSWORD>
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ Host:
17
+ - abcdev.imiscloud.com
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Date:
24
+ - Sun, 26 Oct 2025 01:24:41 GMT
25
+ Content-Type:
26
+ - application/json; charset=UTF-8
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Connection:
30
+ - keep-alive
31
+ Server:
32
+ - cloudflare
33
+ Cf-Ray:
34
+ - 994627d0fff0f603-ORD
35
+ Cf-Cache-Status:
36
+ - DYNAMIC
37
+ Access-Control-Allow-Origin:
38
+ - "*"
39
+ Cache-Control:
40
+ - no-cache
41
+ Expires:
42
+ - "-1"
43
+ Strict-Transport-Security:
44
+ - max-age=31536000
45
+ Vary:
46
+ - Accept-Encoding,Accept-Encoding
47
+ Pragma:
48
+ - no-cache
49
+ Access-Control-Expose-Headers:
50
+ - Request-Context
51
+ Request-Context:
52
+ - appId=cid-v1:9c05b5dd-9acf-4a59-aabb-1775785c005f
53
+ X-Aspnet-Version:
54
+ - 4.0.30319
55
+ X-Content-Type-Options:
56
+ - nosniff
57
+ - nosniff
58
+ Set-Cookie:
59
+ - __cf_bm=LKaRqTXH8espldaEt4wzcAjzOscrgSCFMtoNjebE6WA-1761441881-1.0.1.1-qgd1ncMdIFNBb6QNv0YPLIPuWjxKAgK168xuaDkf0er.qlv0aWNSqjD0CcmyIOKv2Gajw.MUaOaUoshqEzSgj5CkchyvBXCsSAuzuXM0CyQ;
60
+ path=/; expires=Sun, 26-Oct-25 01:54:41 GMT; domain=.abcdev.imiscloud.com;
61
+ HttpOnly; Secure; SameSite=None
62
+ body:
63
+ encoding: ASCII-8BIT
64
+ string: '{"access_token":"<ACCESS_TOKEN>","token_type":"bearer","expires_in":3599,"userName":"J.S.FIANDER@GMAIL.COM",".issued":"Sun,
65
+ 26 Oct 2025 01:24:41 GMT",".expires":"Sun, 26 Oct 2025 02:24:41 GMT"}'
66
+ recorded_at: Sun, 26 Oct 2025 01:24:41 GMT
67
+ recorded_with: VCR 6.3.1
@@ -0,0 +1,145 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://abcdev.imiscloud.com/Token
6
+ body:
7
+ encoding: US-ASCII
8
+ string: grant_type=password&username=<USERNAME>&password=<PASSWORD>
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ Host:
17
+ - abcdev.imiscloud.com
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Date:
24
+ - Sun, 26 Oct 2025 01:24:32 GMT
25
+ Content-Type:
26
+ - application/json; charset=UTF-8
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Connection:
30
+ - keep-alive
31
+ Server:
32
+ - cloudflare
33
+ Cf-Ray:
34
+ - 99462793aca5c8d4-ORD
35
+ Cf-Cache-Status:
36
+ - DYNAMIC
37
+ Access-Control-Allow-Origin:
38
+ - "*"
39
+ Cache-Control:
40
+ - no-cache
41
+ Expires:
42
+ - "-1"
43
+ Strict-Transport-Security:
44
+ - max-age=31536000
45
+ Vary:
46
+ - Accept-Encoding,Accept-Encoding
47
+ Pragma:
48
+ - no-cache
49
+ Access-Control-Expose-Headers:
50
+ - Request-Context
51
+ Request-Context:
52
+ - appId=cid-v1:9c05b5dd-9acf-4a59-aabb-1775785c005f
53
+ X-Aspnet-Version:
54
+ - 4.0.30319
55
+ X-Content-Type-Options:
56
+ - nosniff
57
+ - nosniff
58
+ Set-Cookie:
59
+ - __cf_bm=E_MVP5oOnFiYznE8Yt6DFmHkaFy65GaS6oRgLZphHyk-1761441872-1.0.1.1-ZjiE5Vl9zgcimNFW2.1hFZsvHuMf5CySMKBm0UG9zhLNwpKlBXtkXGI5Ebpg0MMw0upFJjfaupZejTXfsCob6jhWwfIX7EFQCGN5rkrBZug;
60
+ path=/; expires=Sun, 26-Oct-25 01:54:32 GMT; domain=.abcdev.imiscloud.com;
61
+ HttpOnly; Secure; SameSite=None
62
+ body:
63
+ encoding: ASCII-8BIT
64
+ string: '{"access_token":"<ACCESS_TOKEN>","token_type":"bearer","expires_in":3599,"userName":"J.S.FIANDER@GMAIL.COM",".issued":"Sun,
65
+ 26 Oct 2025 01:24:31 GMT",".expires":"Sun, 26 Oct 2025 02:24:31 GMT"}'
66
+ recorded_at: Sun, 26 Oct 2025 01:24:31 GMT
67
+ - request:
68
+ method: get
69
+ uri: https://abcdev.imiscloud.com/api/ABC_ASC_Vessel_Safety_Checks/~6374%7C1433
70
+ body:
71
+ encoding: US-ASCII
72
+ string: ''
73
+ headers:
74
+ Accept-Encoding:
75
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
76
+ Accept:
77
+ - "*/*"
78
+ User-Agent:
79
+ - Ruby
80
+ Host:
81
+ - abcdev.imiscloud.com
82
+ Authorization:
83
+ - Bearer <BEARER_TOKEN>
84
+ response:
85
+ status:
86
+ code: 200
87
+ message: OK
88
+ headers:
89
+ Date:
90
+ - Sun, 26 Oct 2025 01:24:32 GMT
91
+ Content-Type:
92
+ - application/json; charset=utf-8
93
+ Transfer-Encoding:
94
+ - chunked
95
+ Connection:
96
+ - keep-alive
97
+ Server:
98
+ - cloudflare
99
+ Cf-Ray:
100
+ - 99462794999de808-ORD
101
+ Cf-Cache-Status:
102
+ - DYNAMIC
103
+ Cache-Control:
104
+ - no-cache
105
+ Expires:
106
+ - "-1"
107
+ Strict-Transport-Security:
108
+ - max-age=31536000
109
+ Vary:
110
+ - Accept-Encoding,Accept-Encoding
111
+ Pragma:
112
+ - no-cache
113
+ Access-Control-Expose-Headers:
114
+ - Request-Context
115
+ Request-Context:
116
+ - appId=cid-v1:9c05b5dd-9acf-4a59-aabb-1775785c005f
117
+ X-Aspnet-Version:
118
+ - 4.0.30319
119
+ X-Content-Type-Options:
120
+ - nosniff
121
+ - nosniff
122
+ Set-Cookie:
123
+ - __cf_bm=wlHHc979_CjtTrLZY9i.fRLotIRy.q5OGIGwRlhO9o8-1761441872-1.0.1.1-fW4.srb8RlPHuYowlMSr0AzhGJF3UBJoHqPE4XWgb9o1Ivk9bx4LxK8hSunPkytdUViCCKTZyzhBcpxayvJb4ixaDCOEDyfSKQ2GBxnpTko;
124
+ path=/; expires=Sun, 26-Oct-25 01:54:32 GMT; domain=.abcdev.imiscloud.com;
125
+ HttpOnly; Secure; SameSite=None
126
+ body:
127
+ encoding: ASCII-8BIT
128
+ string: '{"$type":"Asi.Soa.Core.DataContracts.GenericEntityData, Asi.Contracts","EntityTypeName":"ABC_ASC_Vessel_Safety_Checks","PrimaryParentEntityTypeName":"Party","Identity":{"$type":"Asi.Soa.Core.DataContracts.IdentityData,
129
+ Asi.Contracts","EntityTypeName":"ABC_ASC_Vessel_Safety_Checks","IdentityElements":{"$type":"System.Collections.ObjectModel.Collection`1[[System.String,
130
+ mscorlib]], mscorlib","$values":["6374","1433"]}},"PrimaryParentIdentity":{"$type":"Asi.Soa.Core.DataContracts.IdentityData,
131
+ Asi.Contracts","EntityTypeName":"Party","IdentityElements":{"$type":"System.Collections.ObjectModel.Collection`1[[System.String,
132
+ mscorlib]], mscorlib","$values":["6374"]}},"Properties":{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyDataCollection,
133
+ Asi.Contracts","$values":[{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
134
+ Asi.Contracts","Name":"ID","Value":"6374"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
135
+ Asi.Contracts","Name":"Ordinal","Value":{"$type":"System.Int32","$value":1433}},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
136
+ Asi.Contracts","Name":"Source_System","Value":"Legacy Sys"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
137
+ Asi.Contracts","Name":"ABC_ECertificate","Value":"E136924"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
138
+ Asi.Contracts","Name":"Activity_Type","Value":"VSC"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
139
+ Asi.Contracts","Name":"Description","Value":"Vessel Safety Checks"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
140
+ Asi.Contracts","Name":"Effective_Date","Value":"2023-01-01T00:00:00"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
141
+ Asi.Contracts","Name":"Quantity","Value":{"$type":"System.Int32","$value":40}},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
142
+ Asi.Contracts","Name":"Thru_Date","Value":"2023-12-31T00:00:00"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
143
+ Asi.Contracts","Name":"Transaction_Date","Value":"2023-01-01T00:00:00"}]}}'
144
+ recorded_at: Sun, 26 Oct 2025 01:24:32 GMT
145
+ recorded_with: VCR 6.3.1
@@ -0,0 +1,319 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://abcdev.imiscloud.com/Token
6
+ body:
7
+ encoding: US-ASCII
8
+ string: grant_type=password&username=<USERNAME>&password=<PASSWORD>
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ Host:
17
+ - abcdev.imiscloud.com
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Date:
24
+ - Sun, 26 Oct 2025 01:24:31 GMT
25
+ Content-Type:
26
+ - application/json; charset=UTF-8
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Connection:
30
+ - keep-alive
31
+ Server:
32
+ - cloudflare
33
+ Cf-Ray:
34
+ - 9946278e9d03c6f4-ORD
35
+ Cf-Cache-Status:
36
+ - DYNAMIC
37
+ Access-Control-Allow-Origin:
38
+ - "*"
39
+ Cache-Control:
40
+ - no-cache
41
+ Expires:
42
+ - "-1"
43
+ Strict-Transport-Security:
44
+ - max-age=31536000
45
+ Vary:
46
+ - Accept-Encoding,Accept-Encoding
47
+ Pragma:
48
+ - no-cache
49
+ Access-Control-Expose-Headers:
50
+ - Request-Context
51
+ Request-Context:
52
+ - appId=cid-v1:9c05b5dd-9acf-4a59-aabb-1775785c005f
53
+ X-Aspnet-Version:
54
+ - 4.0.30319
55
+ X-Content-Type-Options:
56
+ - nosniff
57
+ - nosniff
58
+ Set-Cookie:
59
+ - __cf_bm=ahHuIpCjV.DLV3vl_3lVPpx3oGdauv7xQvClHGMFskA-1761441871-1.0.1.1-EiOJBOg553hLGqnFHxR_EQFE6cBDSDb4fVEMaqhGtSkeL027QZV2s6BuC9jwxloBjtv_5T6VZLFClMCndFc0z0QqlqNt4Q093T_Z4qPPafY;
60
+ path=/; expires=Sun, 26-Oct-25 01:54:31 GMT; domain=.abcdev.imiscloud.com;
61
+ HttpOnly; Secure; SameSite=None
62
+ body:
63
+ encoding: ASCII-8BIT
64
+ string: '{"access_token":"<ACCESS_TOKEN>","token_type":"bearer","expires_in":3599,"userName":"J.S.FIANDER@GMAIL.COM",".issued":"Sun,
65
+ 26 Oct 2025 01:24:31 GMT",".expires":"Sun, 26 Oct 2025 02:24:31 GMT"}'
66
+ recorded_at: Sun, 26 Oct 2025 01:24:31 GMT
67
+ - request:
68
+ method: post
69
+ uri: https://abcdev.imiscloud.com/api/ABC_ASC_Vessel_Safety_Checks/
70
+ body:
71
+ encoding: UTF-8
72
+ string: '{"$type":"Asi.Soa.Core.DataContracts.GenericEntityData, Asi.Contracts","EntityTypeName":"ABC_ASC_Vessel_Safety_Checks","PrimaryParentEntityTypeName":"Party","Identity":{"$type":"Asi.Soa.Core.DataContracts.IdentityData,
73
+ Asi.Contracts","EntityTypeName":"ABC_ASC_Vessel_Safety_Checks","IdentityElements":{"$type":"System.Collections.ObjectModel.Collection`1[[System.String,
74
+ mscorlib]], mscorlib","$values":["6374"]}},"PrimaryParentIdentity":{"$type":"Asi.Soa.Core.DataContracts.IdentityData,
75
+ Asi.Contracts","EntityTypeName":"Party","IdentityElements":{"$type":"System.Collections.ObjectModel.Collection`1[[System.String,
76
+ mscorlib]], mscorlib","$values":["6374"]}},"Properties":{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyDataCollection,
77
+ Asi.Contracts","$values":[{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
78
+ Asi.Contracts","Name":"ID","Value":"6374"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
79
+ Asi.Contracts","Name":"Source_System","Value":"Manual ITCom Entry"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
80
+ Asi.Contracts","Name":"ABC_ECertificate","Value":"E136924"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
81
+ Asi.Contracts","Name":"Activity_Type","Value":"VSC"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
82
+ Asi.Contracts","Name":"Description","Value":"Vessel Safety Checks"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
83
+ Asi.Contracts","Name":"Effective_Date","Value":"2024-12-01T00:00:00"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
84
+ Asi.Contracts","Name":"Quantity","Value":{"$type":"System.Int32","$value":42}},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
85
+ Asi.Contracts","Name":"Thru_Date","Value":"2024-12-31T00:00:00"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
86
+ Asi.Contracts","Name":"Transaction_Date","Value":"2025-10-25T21:09:31"}]}}'
87
+ headers:
88
+ Accept-Encoding:
89
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
90
+ Accept:
91
+ - "*/*"
92
+ User-Agent:
93
+ - Ruby
94
+ Host:
95
+ - abcdev.imiscloud.com
96
+ Authorization:
97
+ - Bearer <BEARER_TOKEN>
98
+ response:
99
+ status:
100
+ code: 201
101
+ message: Created
102
+ headers:
103
+ Date:
104
+ - Sun, 26 Oct 2025 01:24:31 GMT
105
+ Content-Type:
106
+ - application/json; charset=utf-8
107
+ Content-Length:
108
+ - '2017'
109
+ Connection:
110
+ - keep-alive
111
+ Server:
112
+ - cloudflare
113
+ Location:
114
+ - https://abcdev.imiscloud.com/imisservice/api/ABC_ASC_Vessel_Safety_Checks
115
+ Cf-Ray:
116
+ - 9946278fac7910b6-ORD
117
+ Cf-Cache-Status:
118
+ - DYNAMIC
119
+ Cache-Control:
120
+ - no-cache
121
+ Expires:
122
+ - "-1"
123
+ Strict-Transport-Security:
124
+ - max-age=31536000
125
+ Pragma:
126
+ - no-cache
127
+ Access-Control-Expose-Headers:
128
+ - Request-Context
129
+ Request-Context:
130
+ - appId=cid-v1:9c05b5dd-9acf-4a59-aabb-1775785c005f
131
+ X-Aspnet-Version:
132
+ - 4.0.30319
133
+ X-Content-Type-Options:
134
+ - nosniff
135
+ - nosniff
136
+ Set-Cookie:
137
+ - __cf_bm=bvLSFqd.CevW_cOHDAEwhiTCRxtot4E8hNNcpGvZANg-1761441871-1.0.1.1-ADePhGHtdrSBhqmMERwpWIIwPiFCqkl9uiZKwDjORPxVEgFEJWyPUWJ1cqfFztvkskSQAMS.OTYUm.hdbAKxFEMs8L82vcoS5tx3gG08O.Q;
138
+ path=/; expires=Sun, 26-Oct-25 01:54:31 GMT; domain=.abcdev.imiscloud.com;
139
+ HttpOnly; Secure; SameSite=None
140
+ Vary:
141
+ - Accept-Encoding
142
+ body:
143
+ encoding: UTF-8
144
+ string: '{"$type":"Asi.Soa.Core.DataContracts.GenericEntityData, Asi.Contracts","EntityTypeName":"ABC_ASC_Vessel_Safety_Checks","PrimaryParentEntityTypeName":"Party","Identity":{"$type":"Asi.Soa.Core.DataContracts.IdentityData,
145
+ Asi.Contracts","EntityTypeName":"ABC_ASC_Vessel_Safety_Checks","IdentityElements":{"$type":"System.Collections.ObjectModel.Collection`1[[System.String,
146
+ mscorlib]], mscorlib","$values":["6374","18598"]}},"PrimaryParentIdentity":{"$type":"Asi.Soa.Core.DataContracts.IdentityData,
147
+ Asi.Contracts","EntityTypeName":"Party","IdentityElements":{"$type":"System.Collections.ObjectModel.Collection`1[[System.String,
148
+ mscorlib]], mscorlib","$values":["6374"]}},"Properties":{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyDataCollection,
149
+ Asi.Contracts","$values":[{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
150
+ Asi.Contracts","Name":"ID","Value":"6374"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
151
+ Asi.Contracts","Name":"Ordinal","Value":{"$type":"System.Int32","$value":18598}},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
152
+ Asi.Contracts","Name":"Source_System","Value":"Manual ITCom Entry"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
153
+ Asi.Contracts","Name":"ABC_ECertificate","Value":"E136924"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
154
+ Asi.Contracts","Name":"Activity_Type","Value":"VSC"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
155
+ Asi.Contracts","Name":"Description","Value":"Vessel Safety Checks"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
156
+ Asi.Contracts","Name":"Effective_Date","Value":"2024-12-01T00:00:00"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
157
+ Asi.Contracts","Name":"Quantity","Value":{"$type":"System.Int32","$value":42}},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
158
+ Asi.Contracts","Name":"Thru_Date","Value":"2024-12-31T00:00:00"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
159
+ Asi.Contracts","Name":"Transaction_Date","Value":"2025-10-25T21:09:31"}]}}'
160
+ recorded_at: Sun, 26 Oct 2025 01:24:31 GMT
161
+ - request:
162
+ method: put
163
+ uri: https://abcdev.imiscloud.com/api/ABC_ASC_Vessel_Safety_Checks/~6374%7C18598
164
+ body:
165
+ encoding: UTF-8
166
+ string: '{"$type":"Asi.Soa.Core.DataContracts.GenericEntityData, Asi.Contracts","EntityTypeName":"ABC_ASC_Vessel_Safety_Checks","PrimaryParentEntityTypeName":"Party","Identity":{"$type":"Asi.Soa.Core.DataContracts.IdentityData,
167
+ Asi.Contracts","EntityTypeName":"ABC_ASC_Vessel_Safety_Checks","IdentityElements":{"$type":"System.Collections.ObjectModel.Collection`1[[System.String,
168
+ mscorlib]], mscorlib","$values":["6374","18598"]}},"PrimaryParentIdentity":{"$type":"Asi.Soa.Core.DataContracts.IdentityData,
169
+ Asi.Contracts","EntityTypeName":"Party","IdentityElements":{"$type":"System.Collections.ObjectModel.Collection`1[[System.String,
170
+ mscorlib]], mscorlib","$values":["6374"]}},"Properties":{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyDataCollection,
171
+ Asi.Contracts","$values":[{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
172
+ Asi.Contracts","Name":"ID","Value":"6374"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
173
+ Asi.Contracts","Name":"Ordinal","Value":{"$type":"System.Int32","$value":18598}},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
174
+ Asi.Contracts","Name":"Source_System","Value":"Manual ITCom Entry"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
175
+ Asi.Contracts","Name":"ABC_ECertificate","Value":"E136924"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
176
+ Asi.Contracts","Name":"Activity_Type","Value":"VSC"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
177
+ Asi.Contracts","Name":"Description","Value":"Vessel Safety Checks"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
178
+ Asi.Contracts","Name":"Effective_Date","Value":"2024-12-01T00:00:00"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
179
+ Asi.Contracts","Name":"Quantity","Value":{"$type":"System.Int32","$value":43}},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
180
+ Asi.Contracts","Name":"Thru_Date","Value":"2024-12-31T00:00:00"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
181
+ Asi.Contracts","Name":"Transaction_Date","Value":"2025-10-25T21:09:31"}]}}'
182
+ headers:
183
+ Accept-Encoding:
184
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
185
+ Accept:
186
+ - "*/*"
187
+ User-Agent:
188
+ - Ruby
189
+ Host:
190
+ - abcdev.imiscloud.com
191
+ Authorization:
192
+ - Bearer <BEARER_TOKEN>
193
+ response:
194
+ status:
195
+ code: 200
196
+ message: OK
197
+ headers:
198
+ Date:
199
+ - Sun, 26 Oct 2025 01:24:31 GMT
200
+ Content-Type:
201
+ - application/json; charset=utf-8
202
+ Transfer-Encoding:
203
+ - chunked
204
+ Connection:
205
+ - keep-alive
206
+ Server:
207
+ - cloudflare
208
+ Cf-Ray:
209
+ - 994627911e8feb58-ORD
210
+ Cf-Cache-Status:
211
+ - DYNAMIC
212
+ Cache-Control:
213
+ - no-cache
214
+ Expires:
215
+ - "-1"
216
+ Strict-Transport-Security:
217
+ - max-age=31536000
218
+ Vary:
219
+ - Accept-Encoding,Accept-Encoding
220
+ Pragma:
221
+ - no-cache
222
+ Access-Control-Expose-Headers:
223
+ - Request-Context
224
+ Request-Context:
225
+ - appId=cid-v1:9c05b5dd-9acf-4a59-aabb-1775785c005f
226
+ X-Aspnet-Version:
227
+ - 4.0.30319
228
+ X-Content-Type-Options:
229
+ - nosniff
230
+ - nosniff
231
+ Set-Cookie:
232
+ - __cf_bm=1G.wO4.teFb2yfwSEi0db9AhFtVc67W5BbL7.tYQlV4-1761441871-1.0.1.1-PRSynMRAhpOnLQS1.yT6W9BZXkNrnM3vEF0P66HG5in18LPVkP8aqg3qLuO.vVmMBBBoOlqQbxgj0ZS6NFfJkHWq1HksSvAtOIikLCgnBEo;
233
+ path=/; expires=Sun, 26-Oct-25 01:54:31 GMT; domain=.abcdev.imiscloud.com;
234
+ HttpOnly; Secure; SameSite=None
235
+ body:
236
+ encoding: ASCII-8BIT
237
+ string: '{"$type":"Asi.Soa.Core.DataContracts.GenericEntityData, Asi.Contracts","EntityTypeName":"ABC_ASC_Vessel_Safety_Checks","PrimaryParentEntityTypeName":"Party","Identity":{"$type":"Asi.Soa.Core.DataContracts.IdentityData,
238
+ Asi.Contracts","EntityTypeName":"ABC_ASC_Vessel_Safety_Checks","IdentityElements":{"$type":"System.Collections.ObjectModel.Collection`1[[System.String,
239
+ mscorlib]], mscorlib","$values":["6374","18598"]}},"PrimaryParentIdentity":{"$type":"Asi.Soa.Core.DataContracts.IdentityData,
240
+ Asi.Contracts","EntityTypeName":"Party","IdentityElements":{"$type":"System.Collections.ObjectModel.Collection`1[[System.String,
241
+ mscorlib]], mscorlib","$values":["6374"]}},"Properties":{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyDataCollection,
242
+ Asi.Contracts","$values":[{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
243
+ Asi.Contracts","Name":"ID","Value":"6374"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
244
+ Asi.Contracts","Name":"Ordinal","Value":{"$type":"System.Int32","$value":18598}},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
245
+ Asi.Contracts","Name":"Source_System","Value":"Manual ITCom Entry"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
246
+ Asi.Contracts","Name":"ABC_ECertificate","Value":"E136924"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
247
+ Asi.Contracts","Name":"Activity_Type","Value":"VSC"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
248
+ Asi.Contracts","Name":"Description","Value":"Vessel Safety Checks"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
249
+ Asi.Contracts","Name":"Effective_Date","Value":"2024-12-01T00:00:00"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
250
+ Asi.Contracts","Name":"Quantity","Value":{"$type":"System.Int32","$value":43}},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
251
+ Asi.Contracts","Name":"Thru_Date","Value":"2024-12-31T00:00:00"},{"$type":"Asi.Soa.Core.DataContracts.GenericPropertyData,
252
+ Asi.Contracts","Name":"Transaction_Date","Value":"2025-10-25T21:09:31"}]}}'
253
+ recorded_at: Sun, 26 Oct 2025 01:24:31 GMT
254
+ - request:
255
+ method: delete
256
+ uri: https://abcdev.imiscloud.com/api/ABC_ASC_Vessel_Safety_Checks/~6374%7C18598
257
+ body:
258
+ encoding: US-ASCII
259
+ string: ''
260
+ headers:
261
+ Accept-Encoding:
262
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
263
+ Accept:
264
+ - "*/*"
265
+ User-Agent:
266
+ - Ruby
267
+ Host:
268
+ - abcdev.imiscloud.com
269
+ Authorization:
270
+ - Bearer <BEARER_TOKEN>
271
+ response:
272
+ status:
273
+ code: 200
274
+ message: OK
275
+ headers:
276
+ Date:
277
+ - Sun, 26 Oct 2025 01:24:31 GMT
278
+ Content-Length:
279
+ - '0'
280
+ Connection:
281
+ - keep-alive
282
+ Server:
283
+ - cloudflare
284
+ Cf-Ray:
285
+ - 994627924df4f13a-ORD
286
+ Cf-Cache-Status:
287
+ - DYNAMIC
288
+ Cache-Control:
289
+ - no-cache
290
+ Expires:
291
+ - "-1"
292
+ Strict-Transport-Security:
293
+ - max-age=31536000
294
+ Pragma:
295
+ - no-cache
296
+ Access-Control-Expose-Headers:
297
+ - Request-Context
298
+ Content-Security-Policy:
299
+ - frame-ancestors 'self'
300
+ Request-Context:
301
+ - appId=cid-v1:9c05b5dd-9acf-4a59-aabb-1775785c005f
302
+ X-Aspnet-Version:
303
+ - 4.0.30319
304
+ X-Content-Type-Options:
305
+ - nosniff
306
+ - nosniff
307
+ X-Frame-Options:
308
+ - sameorigin
309
+ Set-Cookie:
310
+ - __cf_bm=7vymW9RAiQKrALomQg2NfDJZ22lP6z9t0XP9kWqt7VQ-1761441871-1.0.1.1-KhHS.NUEt47DLqrPCJAyje3Po4JKuGNz3_1Chc6SOW2.oeW0K0Ney6rrlvvTQ2BXhwGW5ltUbBiw0sGCuYef_sjuD5wGu18q_VgxBYWdysE;
311
+ path=/; expires=Sun, 26-Oct-25 01:54:31 GMT; domain=.abcdev.imiscloud.com;
312
+ HttpOnly; Secure; SameSite=None
313
+ Vary:
314
+ - Accept-Encoding
315
+ body:
316
+ encoding: UTF-8
317
+ string: ''
318
+ recorded_at: Sun, 26 Oct 2025 01:24:31 GMT
319
+ recorded_with: VCR 6.3.1
@@ -2,23 +2,13 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe Usps::Imis::Api do
5
+ describe Usps::Imis::Api, :vcr do
6
6
  let(:api) { described_class.new }
7
7
 
8
- describe '#initialize' do
9
- it 'skips authentication' do
10
- # rubocop:disable RSpec/AnyInstance
11
- expect_any_instance_of(described_class).not_to receive(:authenticate)
12
- # rubocop:enable RSpec/AnyInstance
8
+ it 'stores the initial imis_id' do
9
+ api = described_class.new(imis_id: 42)
13
10
 
14
- described_class.new(skip_authentication: true)
15
- end
16
-
17
- it 'stores the initial imis_id' do
18
- api = described_class.new(imis_id: 42)
19
-
20
- expect(api.imis_id).to eq(42)
21
- end
11
+ expect(api.imis_id).to eq(42)
22
12
  end
23
13
 
24
14
  describe '#imis_id_for' do
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe Usps::Imis::BusinessObject do
5
+ describe Usps::Imis::BusinessObject, :vcr do
6
6
  describe '#put_field' do
7
7
  let(:business_object) { api.on('ABC_ASC_Individual_Demog') }
8
8
  let(:api) { Usps::Imis::Api.new.with(31092) }
@@ -36,6 +36,15 @@ describe Usps::Imis::Data do
36
36
  end
37
37
  end
38
38
 
39
+ describe '#[]=' do
40
+ it 'does not support setting values' do
41
+ expect { described_class.new[:something] = :another }.to raise_error(
42
+ Usps::Imis::Errors::ApiError,
43
+ '`Data` does not support setting values. If you need to modify it, call `.raw` on it.'
44
+ )
45
+ end
46
+ end
47
+
39
48
  describe '#inspect' do
40
49
  it 'generates the correct inspect string' do
41
50
  expect(data.inspect).to eq('#<Usps::Imis::Data entity="ABC_ASC_Individual_Demog" imis_id=31092>')
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe Usps::Imis::Mapper do
5
+ describe Usps::Imis::Mapper, :vcr do
6
6
  let(:api) { described_class.new.api }
7
7
 
8
8
  describe 'initialize with imis_id' do
@@ -16,7 +16,7 @@ module Usps
16
16
  end
17
17
  end
18
18
 
19
- describe Usps::Imis::Panels::BasePanel do
19
+ describe Usps::Imis::Panels::BasePanel, :vcr do
20
20
  it 'requires #business_object to be defined' do
21
21
  expect { Usps::Imis::Panels::InvalidPanel.new.get(1) }.to raise_error(
22
22
  Usps::Imis::Errors::PanelUnimplementedError,
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe Usps::Imis::Panels::Education do
5
+ describe Usps::Imis::Panels::Education, :vcr do
6
6
  describe 'api example' do
7
7
  let(:education) { described_class.new }
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe Usps::Imis::Panels::Vsc do
5
+ describe Usps::Imis::Panels::Vsc, :vcr do
6
6
  let(:vsc) { described_class.new }
7
7
 
8
8
  let(:details) do