usps-imis-api 0.9.7 → 0.9.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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +20 -2
  5. data/Readme.md +12 -2
  6. data/lib/usps/imis/api.rb +16 -12
  7. data/lib/usps/imis/business_object.rb +17 -8
  8. data/lib/usps/imis/data.rb +4 -0
  9. data/lib/usps/imis/error.rb +2 -0
  10. data/lib/usps/imis/mapper.rb +23 -0
  11. data/lib/usps/imis/panels/base_panel.rb +10 -0
  12. data/lib/usps/imis/query.rb +50 -18
  13. data/lib/usps/imis/requests.rb +7 -3
  14. data/lib/usps/imis/version.rb +1 -1
  15. data/spec/fixtures/vcr_cassettes/.keep +0 -0
  16. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_authorize/automatically_refreshes_an_expired_token.yml +67 -0
  17. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_imis_id_for/gets_the_iMIS_ID.yml +131 -0
  18. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_imis_id_for/with_a_query_error/wraps_errors.yml +67 -0
  19. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_inspect/does_not_show_the_token_instance_variable.yml +67 -0
  20. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_inspect/is_configured_to_exclude_the_token_instance_variable.yml +67 -0
  21. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_on/chains_with_on_to_a_single_block.yml +256 -0
  22. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_on/nests_on_and_with.yml +256 -0
  23. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_on/returns_a_BusinessObject_without_a_block.yml +67 -0
  24. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_on/sends_an_update_from_put.yml +256 -0
  25. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_put/sends_an_update.yml +256 -0
  26. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_put/when_receiving_a_response_error/wraps_the_error.yml +67 -0
  27. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_query/collects_all_query_results.yml +67 -0
  28. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_with/blocks_calling_imis_id_.yml +67 -0
  29. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_with/blocks_calling_imis_id_for.yml +67 -0
  30. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_with/sends_an_update_from_put.yml +256 -0
  31. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_with/sends_an_update_from_update.yml +256 -0
  32. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/_with/uses_a_panel_correctly.yml +145 -0
  33. data/spec/fixtures/vcr_cassettes/Usps_Imis_Api/stores_the_initial_imis_id.yml +67 -0
  34. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/_put_field/submits_the_correct_update_request.yml +627 -0
  35. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_filter_fields/formats_fields_correctly.yml +67 -0
  36. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_get/delegation_to_get_fields/delegates_to_get_fields.yml +67 -0
  37. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_get/returns_multiple_values.yml +67 -0
  38. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_get_field/returns_a_string_value.yml +67 -0
  39. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_get_field/returns_an_integer_value.yml +67 -0
  40. data/spec/fixtures/vcr_cassettes/Usps_Imis_BusinessObject/with_stubbed_data/_get_fields/returns_multiple_values.yml +67 -0
  41. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_fetch/fetches_a_mapped_field.yml +158 -0
  42. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_fetch/raises_for_unmapped_updates.yml +67 -0
  43. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_fetch/supports_Hash_access_syntax.yml +158 -0
  44. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_fetch/supports_Hash_access_syntax_on_the_Api_directly.yml +158 -0
  45. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_update/raises_for_unmapped_updates.yml +67 -0
  46. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/_update/sends_a_mapped_update.yml +256 -0
  47. data/spec/fixtures/vcr_cassettes/Usps_Imis_Mapper/initialize_with_imis_id/stores_the_initial_imis_id.yml +67 -0
  48. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_BasePanel/requires_business_object_to_be_defined.yml +67 -0
  49. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_BasePanel/requires_payload_data_to_be_defined.yml +67 -0
  50. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/api_example/_get/loads_a_specific_object.yml +146 -0
  51. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/api_example/_get/returns_specific_fields.yml +146 -0
  52. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/api_example/_get_field/returns_a_specific_field.yml +146 -0
  53. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/api_example/_get_fields/returns_specific_fields.yml +146 -0
  54. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/api_example/interacts_with_records_correctly.yml +495 -0
  55. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Education/initialization_with_ID/can_initialize_with_an_iMIS_ID.yml +67 -0
  56. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Vsc/_get/loads_a_specific_object.yml +145 -0
  57. data/spec/fixtures/vcr_cassettes/Usps_Imis_Panels_Vsc/handles_new_records_correctly.yml +319 -0
  58. data/spec/lib/usps/imis/api_spec.rb +4 -14
  59. data/spec/lib/usps/imis/business_object_spec.rb +63 -50
  60. data/spec/lib/usps/imis/data_spec.rb +9 -0
  61. data/spec/lib/usps/imis/mapper_spec.rb +1 -1
  62. data/spec/lib/usps/imis/panels/base_panel_spec.rb +1 -1
  63. data/spec/lib/usps/imis/panels/education_spec.rb +1 -1
  64. data/spec/lib/usps/imis/panels/vsc_spec.rb +1 -1
  65. data/spec/spec_helper.rb +40 -0
  66. 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