my_john_deere_api 1.2.1 → 1.2.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/lib/my_john_deere_api/version.rb +1 -1
- data/test/lib/my_john_deere_api/client_test.rb +23 -4
- data/test/lib/my_john_deere_api/request/collection/assets_test.rb +1 -1
- data/test/lib/my_john_deere_api/request/create/asset_test.rb +1 -1
- data/test/support/helper.rb +0 -6
- data/test/support/vcr/catalog.yml +11 -12
- data/test/support/vcr/delete_asset.yml +10 -10
- data/test/support/vcr/get_access_token.yml +4 -4
- data/test/support/vcr/get_asset.yml +16 -16
- data/test/support/vcr/get_asset_locations.yml +29 -25
- data/test/support/vcr/get_assets.yml +23 -23
- data/test/support/vcr/get_contribution_definition.yml +10 -10
- data/test/support/vcr/get_contribution_definitions.yml +10 -10
- data/test/support/vcr/get_contribution_product.yml +10 -10
- data/test/support/vcr/get_contribution_products.yml +10 -10
- data/test/support/vcr/get_field.yml +15 -15
- data/test/support/vcr/get_fields.yml +15 -15
- data/test/support/vcr/get_flags.yml +5 -5
- data/test/support/vcr/get_organization.yml +9 -9
- data/test/support/vcr/get_organizations.yml +15 -15
- data/test/support/vcr/get_request_token.yml +9 -9
- data/test/support/vcr/post_asset_locations.yml +37 -33
- data/test/support/vcr/post_assets.yml +21 -21
- data/test/support/vcr/put_asset.yml +14 -14
- data/test/support/vcr/warning.txt +8 -4
- data/test/support/vcr_setup.rb +86 -32
- metadata +2 -3
- data/test/support/vcr/url.yml +0 -46
@@ -16,22 +16,22 @@ http_interactions:
|
|
16
16
|
Authorization:
|
17
17
|
- OAuth oauth_consumer_key="johndeere-0000000000000000000000000000000000000000",
|
18
18
|
oauth_nonce="000000000000000000000000000000000000000000", oauth_signature="0000000000000000000000000000",
|
19
|
-
oauth_signature_method="HMAC-SHA1", oauth_timestamp="
|
19
|
+
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1581334172", oauth_version="1.0"
|
20
20
|
response:
|
21
21
|
status:
|
22
22
|
code: 200
|
23
23
|
message: OK
|
24
24
|
headers:
|
25
25
|
Date:
|
26
|
-
-
|
26
|
+
- Mon, 10 Feb 2020 17:29:24 GMT
|
27
27
|
Content-Type:
|
28
28
|
- application/vnd.deere.axiom.v3+json;charset=UTF-8
|
29
29
|
X-Deere-Handling-Server:
|
30
|
-
- ip-10-214-
|
30
|
+
- ip-10-214-44-215
|
31
31
|
X-Frame-Options:
|
32
32
|
- SAMEORIGIN
|
33
33
|
X-Deere-Elapsed-Ms:
|
34
|
-
- '
|
34
|
+
- '10'
|
35
35
|
Cache-Control:
|
36
36
|
- no-store
|
37
37
|
Content-Language:
|
@@ -42,7 +42,7 @@ http_interactions:
|
|
42
42
|
encoding: ASCII-8BIT
|
43
43
|
string: '{"@type":"ApiCatalog","links":[{"@type":"Link","rel":"oauthRequestToken","uri":"https://sandboxapi.deere.com/platform/oauth/request_token"},{"@type":"Link","rel":"oauthAuthorizeRequestToken","uri":"https://my.deere.com/consentToUseOfData?oauth_token={token}"},{"@type":"Link","rel":"oauthAccessToken","uri":"https://sandboxapi.deere.com/platform/oauth/access_token"},{"@type":"Link","rel":"agencies","uri":"https://sandboxapi.deere.com/platform/agencies"}]}'
|
44
44
|
http_version:
|
45
|
-
recorded_at:
|
45
|
+
recorded_at: Mon, 10 Feb 2020 17:29:25 GMT
|
46
46
|
- request:
|
47
47
|
method: get
|
48
48
|
uri: https://sandboxapi.deere.com/platform/organizations
|
@@ -59,7 +59,7 @@ http_interactions:
|
|
59
59
|
Authorization:
|
60
60
|
- OAuth oauth_consumer_key="johndeere-0000000000000000000000000000000000000000",
|
61
61
|
oauth_nonce="000000000000000000000000000000000000000000", oauth_signature="0000000000000000000000000000",
|
62
|
-
oauth_signature_method="HMAC-SHA1", oauth_timestamp="
|
62
|
+
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1581334172", oauth_token="00000000-0000-0000-0000-000000000000",
|
63
63
|
oauth_version="1.0"
|
64
64
|
response:
|
65
65
|
status:
|
@@ -67,15 +67,15 @@ http_interactions:
|
|
67
67
|
message: OK
|
68
68
|
headers:
|
69
69
|
Date:
|
70
|
-
-
|
70
|
+
- Mon, 10 Feb 2020 17:29:25 GMT
|
71
71
|
Content-Type:
|
72
72
|
- application/vnd.deere.axiom.v3+json;charset=UTF-8
|
73
73
|
X-Deere-Handling-Server:
|
74
|
-
- ip-10-214-45-
|
74
|
+
- ip-10-214-45-104
|
75
75
|
X-Frame-Options:
|
76
76
|
- SAMEORIGIN
|
77
77
|
X-Deere-Elapsed-Ms:
|
78
|
-
- '
|
78
|
+
- '40'
|
79
79
|
Cache-Control:
|
80
80
|
- no-store
|
81
81
|
Content-Language:
|
@@ -96,7 +96,7 @@ http_interactions:
|
|
96
96
|
Name","type":"customer","member":true,"id":"000000","links":[{"@type":"Link","rel":"self","uri":"https://sandboxapi.deere.com/platform/organizations/000000"},{"@type":"Link","rel":"machines","uri":"https://sandboxapi.deere.com/platform/organizations/000000/machines"},{"@type":"Link","rel":"wdtCapableMachines","uri":"https://sandboxapi.deere.com/platform/organizations/000000/machines?capability=wdt"},{"@type":"Link","rel":"files","uri":"https://sandboxapi.deere.com/platform/organizations/000000/files"},{"@type":"Link","rel":"transferableFiles","uri":"https://sandboxapi.deere.com/platform/organizations/000000/files?transferable=true"},{"@type":"Link","rel":"uploadFile","uri":"https://sandboxapi.deere.com/platform/organizations/000000/files"},{"@type":"Link","rel":"sendFileToMachine","uri":"https://sandboxapi.deere.com/platform/organizations/000000/fileTransfers"},{"@type":"Link","rel":"addMachine","uri":"https://sandboxapi.deere.com/platform/organizations/000000/machines"},{"@type":"Link","rel":"addField","uri":"https://sandboxapi.deere.com/platform/organizations/000000/fields"},{"@type":"Link","rel":"assets","uri":"https://sandboxapi.deere.com/platform/organizations/000000/assets"},{"@type":"Link","rel":"fields","uri":"https://sandboxapi.deere.com/platform/organizations/000000/fields"},{"@type":"Link","rel":"farms","uri":"https://sandboxapi.deere.com/platform/organizations/000000/farms"},{"@type":"Link","rel":"boundaries","uri":"https://sandboxapi.deere.com/platform/organizations/000000/boundaries"},{"@type":"Link","rel":"clients","uri":"https://sandboxapi.deere.com/platform/organizations/000000/clients"},{"@type":"Link","rel":"flags","uri":"https://sandboxapi.deere.com/platform/organizations/000000/flags"},{"@type":"Link","rel":"flagCategory","uri":"https://sandboxapi.deere.com/platform/organizations/000000/flagCategories"},{"@type":"Link","rel":"controllers","uri":"https://sandboxapi.deere.com/platform/organizations/000000/orgController"}]},{"@type":"Organization","name":"Organization
|
97
97
|
Name","type":"customer","member":true,"id":"000000","links":[{"@type":"Link","rel":"self","uri":"https://sandboxapi.deere.com/platform/organizations/000000"},{"@type":"Link","rel":"machines","uri":"https://sandboxapi.deere.com/platform/organizations/000000/machines"},{"@type":"Link","rel":"wdtCapableMachines","uri":"https://sandboxapi.deere.com/platform/organizations/000000/machines?capability=wdt"},{"@type":"Link","rel":"files","uri":"https://sandboxapi.deere.com/platform/organizations/000000/files"},{"@type":"Link","rel":"transferableFiles","uri":"https://sandboxapi.deere.com/platform/organizations/000000/files?transferable=true"},{"@type":"Link","rel":"uploadFile","uri":"https://sandboxapi.deere.com/platform/organizations/000000/files"},{"@type":"Link","rel":"sendFileToMachine","uri":"https://sandboxapi.deere.com/platform/organizations/000000/fileTransfers"},{"@type":"Link","rel":"addMachine","uri":"https://sandboxapi.deere.com/platform/organizations/000000/machines"},{"@type":"Link","rel":"addField","uri":"https://sandboxapi.deere.com/platform/organizations/000000/fields"},{"@type":"Link","rel":"assets","uri":"https://sandboxapi.deere.com/platform/organizations/000000/assets"},{"@type":"Link","rel":"fields","uri":"https://sandboxapi.deere.com/platform/organizations/000000/fields"},{"@type":"Link","rel":"farms","uri":"https://sandboxapi.deere.com/platform/organizations/000000/farms"},{"@type":"Link","rel":"boundaries","uri":"https://sandboxapi.deere.com/platform/organizations/000000/boundaries"},{"@type":"Link","rel":"clients","uri":"https://sandboxapi.deere.com/platform/organizations/000000/clients"},{"@type":"Link","rel":"flags","uri":"https://sandboxapi.deere.com/platform/organizations/000000/flags"},{"@type":"Link","rel":"flagCategory","uri":"https://sandboxapi.deere.com/platform/organizations/000000/flagCategories"},{"@type":"Link","rel":"controllers","uri":"https://sandboxapi.deere.com/platform/organizations/000000/orgController"}]}]}'
|
98
98
|
http_version:
|
99
|
-
recorded_at:
|
99
|
+
recorded_at: Mon, 10 Feb 2020 17:29:25 GMT
|
100
100
|
- request:
|
101
101
|
method: post
|
102
102
|
uri: https://sandboxapi.deere.com/platform/organizations/000000/assets
|
@@ -117,7 +117,7 @@ http_interactions:
|
|
117
117
|
Authorization:
|
118
118
|
- OAuth oauth_body_hash="hObY6LROUn9S1WS8S28eTTfqmWk%3D", oauth_consumer_key="johndeere-0000000000000000000000000000000000000000",
|
119
119
|
oauth_nonce="000000000000000000000000000000000000000000", oauth_signature="0000000000000000000000000000",
|
120
|
-
oauth_signature_method="HMAC-SHA1", oauth_timestamp="
|
120
|
+
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1581334172", oauth_token="00000000-0000-0000-0000-000000000000",
|
121
121
|
oauth_version="1.0"
|
122
122
|
response:
|
123
123
|
status:
|
@@ -125,24 +125,24 @@ http_interactions:
|
|
125
125
|
message: Created
|
126
126
|
headers:
|
127
127
|
Date:
|
128
|
-
-
|
128
|
+
- Mon, 10 Feb 2020 17:29:25 GMT
|
129
129
|
Content-Type:
|
130
130
|
- application/vnd.deere.axiom.v3+json
|
131
131
|
X-Deere-Handling-Server:
|
132
|
-
- ip-10-214-45-
|
132
|
+
- ip-10-214-45-213
|
133
133
|
X-Frame-Options:
|
134
134
|
- SAMEORIGIN
|
135
135
|
Location:
|
136
136
|
- https://sandboxapi.deere.com/platform/assets/00000000-0000-0000-0000-000000000000
|
137
137
|
X-Deere-Elapsed-Ms:
|
138
|
-
- '
|
138
|
+
- '121'
|
139
139
|
Transfer-Encoding:
|
140
140
|
- chunked
|
141
141
|
body:
|
142
142
|
encoding: ASCII-8BIT
|
143
143
|
string: ''
|
144
144
|
http_version:
|
145
|
-
recorded_at:
|
145
|
+
recorded_at: Mon, 10 Feb 2020 17:29:26 GMT
|
146
146
|
- request:
|
147
147
|
method: get
|
148
148
|
uri: https://sandboxapi.deere.com/platform/assets/00000000-0000-0000-0000-000000000000
|
@@ -161,7 +161,7 @@ http_interactions:
|
|
161
161
|
Authorization:
|
162
162
|
- OAuth oauth_consumer_key="johndeere-0000000000000000000000000000000000000000",
|
163
163
|
oauth_nonce="000000000000000000000000000000000000000000", oauth_signature="0000000000000000000000000000",
|
164
|
-
oauth_signature_method="HMAC-SHA1", oauth_timestamp="
|
164
|
+
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1581334172", oauth_token="00000000-0000-0000-0000-000000000000",
|
165
165
|
oauth_version="1.0"
|
166
166
|
response:
|
167
167
|
status:
|
@@ -169,15 +169,15 @@ http_interactions:
|
|
169
169
|
message: OK
|
170
170
|
headers:
|
171
171
|
Date:
|
172
|
-
-
|
172
|
+
- Mon, 10 Feb 2020 17:29:26 GMT
|
173
173
|
Content-Type:
|
174
174
|
- application/vnd.deere.axiom.v3+json;charset=UTF-8
|
175
175
|
X-Deere-Handling-Server:
|
176
|
-
- ip-10-214-
|
176
|
+
- ip-10-214-44-36
|
177
177
|
X-Frame-Options:
|
178
178
|
- SAMEORIGIN
|
179
179
|
X-Deere-Elapsed-Ms:
|
180
|
-
- '
|
180
|
+
- '69'
|
181
181
|
Cache-Control:
|
182
182
|
- no-store
|
183
183
|
Content-Language:
|
@@ -186,7 +186,7 @@ http_interactions:
|
|
186
186
|
- chunked
|
187
187
|
body:
|
188
188
|
encoding: ASCII-8BIT
|
189
|
-
string: '{"@type":"ContributedAsset","title":"Asset Title","assetCategory":"DEVICE","assetType":"SENSOR","assetSubType":"ENVIRONMENTAL","lastModifiedDate":"2020-02-
|
189
|
+
string: '{"@type":"ContributedAsset","title":"Asset Title","assetCategory":"DEVICE","assetType":"SENSOR","assetSubType":"ENVIRONMENTAL","lastModifiedDate":"2020-02-10T11:29:32.000Z","id":"00000000-0000-0000-0000-000000000000","links":[{"@type":"Link","rel":"self","uri":"https://sandboxapi.deere.com/platform/assets/00000000-0000-0000-0000-000000000000"},{"@type":"Link","rel":"contributionDefinition","uri":"https://sandboxapi.deere.com/platform/contributionDefinitions/00000000-0000-0000-0000-000000000000"},{"@type":"Link","rel":"organization","uri":"https://sandboxapi.deere.com/platform/organizations/000000"},{"@type":"Link","rel":"locations","uri":"https://sandboxapi.deere.com/platform/assets/00000000-0000-0000-0000-000000000000/locations"},{"@type":"Link","rel":"lastKnownLocation","uri":"https://sandboxapi.deere.com/platform/assets/00000000-0000-0000-0000-000000000000/locations?lastKnown=true"}]}'
|
190
190
|
http_version:
|
191
|
-
recorded_at:
|
191
|
+
recorded_at: Mon, 10 Feb 2020 17:29:26 GMT
|
192
192
|
recorded_with: VCR 5.0.0
|
@@ -16,22 +16,22 @@ http_interactions:
|
|
16
16
|
Authorization:
|
17
17
|
- OAuth oauth_consumer_key="johndeere-0000000000000000000000000000000000000000",
|
18
18
|
oauth_nonce="000000000000000000000000000000000000000000", oauth_signature="0000000000000000000000000000",
|
19
|
-
oauth_signature_method="HMAC-SHA1", oauth_timestamp="
|
19
|
+
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1581334172", oauth_version="1.0"
|
20
20
|
response:
|
21
21
|
status:
|
22
22
|
code: 200
|
23
23
|
message: OK
|
24
24
|
headers:
|
25
25
|
Date:
|
26
|
-
-
|
26
|
+
- Mon, 10 Feb 2020 17:29:29 GMT
|
27
27
|
Content-Type:
|
28
28
|
- application/vnd.deere.axiom.v3+json;charset=UTF-8
|
29
29
|
X-Deere-Handling-Server:
|
30
|
-
- ip-10-214-45-
|
30
|
+
- ip-10-214-45-99
|
31
31
|
X-Frame-Options:
|
32
32
|
- SAMEORIGIN
|
33
33
|
X-Deere-Elapsed-Ms:
|
34
|
-
- '
|
34
|
+
- '10'
|
35
35
|
Cache-Control:
|
36
36
|
- no-store
|
37
37
|
Content-Language:
|
@@ -42,14 +42,14 @@ http_interactions:
|
|
42
42
|
encoding: ASCII-8BIT
|
43
43
|
string: '{"@type":"ApiCatalog","links":[{"@type":"Link","rel":"oauthRequestToken","uri":"https://sandboxapi.deere.com/platform/oauth/request_token"},{"@type":"Link","rel":"oauthAuthorizeRequestToken","uri":"https://my.deere.com/consentToUseOfData?oauth_token={token}"},{"@type":"Link","rel":"oauthAccessToken","uri":"https://sandboxapi.deere.com/platform/oauth/access_token"},{"@type":"Link","rel":"agencies","uri":"https://sandboxapi.deere.com/platform/agencies"}]}'
|
44
44
|
http_version:
|
45
|
-
recorded_at:
|
45
|
+
recorded_at: Mon, 10 Feb 2020 17:29:29 GMT
|
46
46
|
- request:
|
47
47
|
method: put
|
48
48
|
uri: https://sandboxapi.deere.com/platform/assets/00000000-0000-0000-0000-000000000000
|
49
49
|
body:
|
50
50
|
encoding: UTF-8
|
51
|
-
string: '{"assetCategory":"DEVICE","assetType":"SENSOR","assetSubType":"ENVIRONMENTAL","
|
52
|
-
REALLY like turtles!"}'
|
51
|
+
string: '{"assetCategory":"DEVICE","assetType":"SENSOR","assetSubType":"ENVIRONMENTAL","title":"i
|
52
|
+
REALLY like turtles!","links":[{"@type":"Link","rel":"contributionDefinition","uri":"https://sandboxapi.deere.com/contributionDefinitions/00000000-0000-0000-0000-000000000000"}]}'
|
53
53
|
headers:
|
54
54
|
Accept:
|
55
55
|
- application/vnd.deere.axiom.v3+json
|
@@ -60,11 +60,11 @@ http_interactions:
|
|
60
60
|
User-Agent:
|
61
61
|
- OAuth gem v0.5.4
|
62
62
|
Content-Length:
|
63
|
-
- '
|
63
|
+
- '267'
|
64
64
|
Authorization:
|
65
|
-
- OAuth oauth_body_hash="
|
65
|
+
- OAuth oauth_body_hash="JXqhMr0ayK5gfHyej3M1xuUfSbw%3D", oauth_consumer_key="johndeere-0000000000000000000000000000000000000000",
|
66
66
|
oauth_nonce="000000000000000000000000000000000000000000", oauth_signature="0000000000000000000000000000",
|
67
|
-
oauth_signature_method="HMAC-SHA1", oauth_timestamp="
|
67
|
+
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1581334172", oauth_token="00000000-0000-0000-0000-000000000000",
|
68
68
|
oauth_version="1.0"
|
69
69
|
response:
|
70
70
|
status:
|
@@ -72,16 +72,16 @@ http_interactions:
|
|
72
72
|
message: No Content
|
73
73
|
headers:
|
74
74
|
Date:
|
75
|
-
-
|
75
|
+
- Mon, 10 Feb 2020 17:29:30 GMT
|
76
76
|
X-Deere-Handling-Server:
|
77
|
-
- ip-10-214-44-
|
77
|
+
- ip-10-214-44-33
|
78
78
|
X-Frame-Options:
|
79
79
|
- SAMEORIGIN
|
80
80
|
X-Deere-Elapsed-Ms:
|
81
|
-
- '
|
81
|
+
- '185'
|
82
82
|
body:
|
83
83
|
encoding: UTF-8
|
84
84
|
string: ''
|
85
85
|
http_version:
|
86
|
-
recorded_at:
|
86
|
+
recorded_at: Mon, 10 Feb 2020 17:29:30 GMT
|
87
87
|
recorded_with: VCR 5.0.0
|
@@ -2,10 +2,14 @@
|
|
2
2
|
WARNING: Generating VCR cassettes requires the following in your John Deere
|
3
3
|
API sandbox account:
|
4
4
|
|
5
|
-
-
|
6
|
-
-
|
7
|
-
-
|
8
|
-
-
|
5
|
+
- Environment variables:
|
6
|
+
- API_KEY
|
7
|
+
- API_SECRET
|
8
|
+
- A valid John Deere user account with which you can authenticate.
|
9
|
+
- Asset creation/deletion enabled in your JD account.
|
10
|
+
- At least one organization created in your JD account.
|
11
|
+
- The organization must have at least one field.
|
12
|
+
- The field must have at least one flag.
|
9
13
|
|
10
14
|
By default, this setup will use the first organization returned from the API.
|
11
15
|
If this is not the organization you wish to use, you can create an environment
|
data/test/support/vcr_setup.rb
CHANGED
@@ -16,6 +16,8 @@ class VcrSetup
|
|
16
16
|
:contribution_product_id, :contribution_definition_id,
|
17
17
|
:placeholders, :organization_id, :asset_id, :field_id, :flag_id
|
18
18
|
|
19
|
+
AUTH_CASSETTES = [:catalog, :get_request_token, :get_access_token]
|
20
|
+
|
19
21
|
GENERATED_CASSETTES = [
|
20
22
|
:catalog, :get_request_token, :get_access_token,
|
21
23
|
:get_contribution_products, :get_contribution_product,
|
@@ -46,40 +48,38 @@ class VcrSetup
|
|
46
48
|
@field_id = @uuid
|
47
49
|
@flag_id = @uuid
|
48
50
|
@verify_code = 'VERIFY'
|
49
|
-
|
50
|
-
@placeholders = {
|
51
|
-
API_KEY => @api_key,
|
52
|
-
API_SECRET => @api_secret,
|
53
|
-
ACCESS_TOKEN => @access_token,
|
54
|
-
ACCESS_SECRET => @access_secret
|
55
|
-
}
|
51
|
+
@placeholders = {}
|
56
52
|
|
57
53
|
unless all_cassettes_generated? || meets_vcr_requirements?
|
58
54
|
raise "Cannot continue until VCR cassettes can be generated."
|
59
55
|
end
|
60
56
|
|
61
|
-
set_contribution_product_id
|
62
|
-
set_contribution_definition_id
|
63
|
-
set_organization_id
|
64
|
-
|
65
57
|
configure_vcr
|
66
58
|
|
67
|
-
url
|
68
|
-
|
69
59
|
# create and retrieve things
|
70
60
|
unless all_cassettes_generated?
|
71
61
|
puts "\ngenerating:"
|
72
62
|
|
73
|
-
|
74
|
-
|
63
|
+
unless ENV['ACCESS_TOKEN'] && ENV['ACCESS_SECRET']
|
64
|
+
generate_cassettes(AUTH_CASSETTES)
|
65
|
+
end
|
75
66
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
67
|
+
@placeholders.merge!(
|
68
|
+
ENV['API_KEY'] => @api_key,
|
69
|
+
ENV['API_SECRET'] => @api_secret,
|
70
|
+
ENV['ACCESS_TOKEN'] => @access_token,
|
71
|
+
ENV['ACCESS_SECRET'] => @access_secret
|
72
|
+
)
|
73
|
+
|
74
|
+
VCR.use_cassette('temp') do
|
75
|
+
set_contribution_product_id
|
76
|
+
set_contribution_definition_id
|
77
|
+
set_organization_id
|
82
78
|
end
|
79
|
+
|
80
|
+
File.unlink("#{@vcr_dir}/temp.yml")
|
81
|
+
|
82
|
+
generate_cassettes(GENERATED_CASSETTES)
|
83
83
|
end
|
84
84
|
|
85
85
|
sanitize_files
|
@@ -146,6 +146,16 @@ class VcrSetup
|
|
146
146
|
}.freeze
|
147
147
|
end
|
148
148
|
|
149
|
+
def sanitized_asset_attributes
|
150
|
+
@sanitized_asset_attributes ||= {
|
151
|
+
contribution_definition_id: contribution_definition_id,
|
152
|
+
title: 'Asset Title',
|
153
|
+
asset_category: 'DEVICE',
|
154
|
+
asset_type: 'SENSOR',
|
155
|
+
asset_sub_type: 'ENVIRONMENTAL'
|
156
|
+
}.freeze
|
157
|
+
end
|
158
|
+
|
149
159
|
def asset_location_attributes
|
150
160
|
@asset_location_attributes ||= {
|
151
161
|
timestamp: timestamp,
|
@@ -154,8 +164,26 @@ class VcrSetup
|
|
154
164
|
}.freeze
|
155
165
|
end
|
156
166
|
|
167
|
+
def url
|
168
|
+
return @url if defined?(@url)
|
169
|
+
@url = JD::Consumer::URLS[:sandbox]
|
170
|
+
end
|
171
|
+
|
157
172
|
private
|
158
173
|
|
174
|
+
def generate_cassettes(list)
|
175
|
+
list.each do |method_name|
|
176
|
+
filename = "#{method_name}.yml"
|
177
|
+
|
178
|
+
if File.exist?("#{@vcr_dir}/#{filename}")
|
179
|
+
puts " - using #{filename}"
|
180
|
+
else
|
181
|
+
puts " - generating #{filename}"
|
182
|
+
VCR.use_cassette(method_name) { send(method_name) }
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
159
187
|
def all_cassettes_generated?
|
160
188
|
return @all_cassettes_generated if defined?(@all_cassettes_generated)
|
161
189
|
@all_cassettes_generated = GENERATED_CASSETTES.all?{|cassette| File.exist?("#{@vcr_dir}/#{cassette}.yml") }
|
@@ -163,12 +191,12 @@ class VcrSetup
|
|
163
191
|
|
164
192
|
# provide a fresh client with no memoized requests
|
165
193
|
def new_client
|
166
|
-
JD::Client.new(
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
194
|
+
JD::Client.new(
|
195
|
+
ENV['API_KEY'],
|
196
|
+
ENV['API_SECRET'],
|
197
|
+
environment: :sandbox,
|
198
|
+
access: [ENV['ACCESS_TOKEN'], ENV['ACCESS_SECRET']]
|
199
|
+
)
|
172
200
|
end
|
173
201
|
|
174
202
|
def catalog
|
@@ -176,7 +204,12 @@ class VcrSetup
|
|
176
204
|
end
|
177
205
|
|
178
206
|
def get_request_token
|
179
|
-
@temporary_authorize = JD::Authorize.new(
|
207
|
+
@temporary_authorize = JD::Authorize.new(
|
208
|
+
ENV['API_KEY'],
|
209
|
+
ENV['API_SECRET'],
|
210
|
+
environment: :sandbox
|
211
|
+
)
|
212
|
+
|
180
213
|
@temporary_authorize_url = @temporary_authorize.authorize_url
|
181
214
|
end
|
182
215
|
|
@@ -189,6 +222,11 @@ class VcrSetup
|
|
189
222
|
placeholders[code] = verify_code
|
190
223
|
|
191
224
|
@temporary_authorize.verify(code)
|
225
|
+
|
226
|
+
unless ENV['ACCESS_TOKEN'] && ENV['ACCESS_SECRET']
|
227
|
+
set_env 'ACCESS_TOKEN', @temporary_authorize.access_token
|
228
|
+
set_env 'ACCESS_SECRET', @temporary_authorize.access_secret
|
229
|
+
end
|
192
230
|
end
|
193
231
|
|
194
232
|
def get_contribution_products
|
@@ -244,7 +282,14 @@ class VcrSetup
|
|
244
282
|
attrs = asset_attributes.slice(
|
245
283
|
:asset_category, :asset_type, :asset_sub_type, :links
|
246
284
|
).merge(
|
247
|
-
title: 'i REALLY like turtles!'
|
285
|
+
title: 'i REALLY like turtles!',
|
286
|
+
links: [
|
287
|
+
{
|
288
|
+
'@type' => 'Link',
|
289
|
+
'rel' => 'contributionDefinition',
|
290
|
+
'uri' => "#{url}/contributionDefinitions/#{asset_attributes[:contribution_definition_id]}"
|
291
|
+
}
|
292
|
+
]
|
248
293
|
)
|
249
294
|
|
250
295
|
new_client.put("/assets/#{@temporary_asset_id}", attrs)
|
@@ -386,7 +431,7 @@ class VcrSetup
|
|
386
431
|
unless ENV['CONTRIBUTION_PRODUCT_ID']
|
387
432
|
set_env(
|
388
433
|
'CONTRIBUTION_PRODUCT_ID',
|
389
|
-
|
434
|
+
new_client.get('/contributionProducts?clientControlled=true')['values'].first['id']
|
390
435
|
)
|
391
436
|
end
|
392
437
|
|
@@ -397,7 +442,7 @@ class VcrSetup
|
|
397
442
|
unless ENV['CONTRIBUTION_DEFINITION_ID']
|
398
443
|
set_env(
|
399
444
|
'CONTRIBUTION_DEFINITION_ID',
|
400
|
-
|
445
|
+
new_client.get("/contributionProducts/#{ENV['CONTRIBUTION_PRODUCT_ID']}/contributionDefinitions")['values'].first['id']
|
401
446
|
)
|
402
447
|
end
|
403
448
|
|
@@ -408,7 +453,7 @@ class VcrSetup
|
|
408
453
|
unless ENV['ORGANIZATION_ID']
|
409
454
|
set_env(
|
410
455
|
'ORGANIZATION_ID',
|
411
|
-
|
456
|
+
new_client.get("/organizations")['values'].first['id']
|
412
457
|
)
|
413
458
|
end
|
414
459
|
|
@@ -416,6 +461,8 @@ class VcrSetup
|
|
416
461
|
end
|
417
462
|
|
418
463
|
def set_env(name, value)
|
464
|
+
puts "SAVING ENVIRONMENT VARIABLE: #{name}: #{value.inspect}"
|
465
|
+
|
419
466
|
ENV[name] = value
|
420
467
|
File.open('.env', 'a') { |f| f.puts "#{name}=#{value}"}
|
421
468
|
end
|
@@ -429,6 +476,13 @@ class VcrSetup
|
|
429
476
|
end
|
430
477
|
|
431
478
|
def meets_vcr_requirements?
|
479
|
+
missing_env_vars = ['API_KEY', 'API_SECRET'].reject{|var| ENV[var]}
|
480
|
+
|
481
|
+
unless missing_env_vars.empty?
|
482
|
+
puts "The following required environment variables are missing: #{missing_env_vars.join(', ')}"
|
483
|
+
return false
|
484
|
+
end
|
485
|
+
|
432
486
|
puts File.read("#{@vcr_dir}/warning.txt")
|
433
487
|
$stdout.print("Do you meet the requirements? [y/N]: "); $stdout.flush
|
434
488
|
|