restforce-db 0.5.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +77 -21
  3. data/lib/restforce/db.rb +6 -0
  4. data/lib/restforce/db/associations/active_record.rb +1 -1
  5. data/lib/restforce/db/attribute_map.rb +5 -1
  6. data/lib/restforce/db/dsl.rb +80 -0
  7. data/lib/restforce/db/initializer.rb +3 -2
  8. data/lib/restforce/db/mapping.rb +20 -77
  9. data/lib/restforce/db/model.rb +7 -4
  10. data/lib/restforce/db/registry.rb +62 -0
  11. data/lib/restforce/db/strategies/always.rb +38 -0
  12. data/lib/restforce/db/strategies/passive.rb +37 -0
  13. data/lib/restforce/db/strategy.rb +25 -0
  14. data/lib/restforce/db/version.rb +1 -1
  15. data/test/cassettes/Restforce_DB_Initializer/_run/given_an_existing_Salesforce_record/{for_a_non-root_mapping → for_a_Passive_strategy}/does_not_create_a_database_record.yml +20 -20
  16. data/test/cassettes/Restforce_DB_Initializer/_run/given_an_existing_Salesforce_record/for_an_Always_strategy/creates_a_matching_database_record.yml +159 -0
  17. data/test/cassettes/Restforce_DB_Initializer/_run/given_an_existing_database_record/{for_a_root_mapping → for_an_Always_strategy}/populates_Salesforce_with_the_new_record.yml +44 -43
  18. data/test/cassettes/{Restforce_DB_Initializer/_run/given_an_existing_Salesforce_record/for_a_root_mapping/creates_a_matching_database_record.yml → Restforce_DB_Strategies_Always/_build_/given_a_Salesforce_record/wants_to_build_a_new_matching_record.yml} +30 -30
  19. data/test/cassettes/Restforce_DB_Strategies_Always/_build_/given_a_Salesforce_record/with_a_corresponding_database_record/does_not_want_to_build_a_new_record.yml +158 -0
  20. data/test/lib/restforce/db/associations/active_record_test.rb +6 -6
  21. data/test/lib/restforce/db/attribute_map_test.rb +5 -1
  22. data/test/lib/restforce/db/dsl_test.rb +80 -0
  23. data/test/lib/restforce/db/initializer_test.rb +8 -8
  24. data/test/lib/restforce/db/mapping_test.rb +7 -17
  25. data/test/lib/restforce/db/model_test.rb +8 -9
  26. data/test/lib/restforce/db/record_types/active_record_test.rb +10 -6
  27. data/test/lib/restforce/db/registry_test.rb +43 -0
  28. data/test/lib/restforce/db/strategies/always_test.rb +38 -0
  29. data/test/lib/restforce/db/strategies/passive_test.rb +17 -0
  30. data/test/lib/restforce/db/strategy_test.rb +19 -0
  31. data/test/support/utilities.rb +7 -9
  32. metadata +17 -5
@@ -0,0 +1,62 @@
1
+ module Restforce
2
+
3
+ module DB
4
+
5
+ # Restforce::DB::Registry is responsible for keeping track of all mappings
6
+ # established in the system.
7
+ class Registry
8
+
9
+ extend Enumerable
10
+
11
+ # Public: Get the Restforce::DB::Mapping entry for the specified model.
12
+ #
13
+ # model - A String or Class.
14
+ #
15
+ # Returns a Restforce::DB::Mapping.
16
+ def self.[](model)
17
+ @collection[model]
18
+ end
19
+
20
+ # Public: Iterate through all registered Restforce::DB::Mappings.
21
+ #
22
+ # Yields one Mapping for each database-to-Salesforce mapping.
23
+ # Returns nothing.
24
+ def self.each
25
+ @collection.each do |model, mappings|
26
+ # Since each mapping is inserted twice, we ignore the half which
27
+ # were inserted via Salesforce model names.
28
+ next unless model.is_a?(Class)
29
+
30
+ mappings.each do |mapping|
31
+ yield mapping
32
+ end
33
+ end
34
+ end
35
+
36
+ # Public: Add a mapping to the overarching Mapping collection. Appends
37
+ # the mapping to the collection for both its database and salesforce
38
+ # object types.
39
+ #
40
+ # mapping - A Restforce::DB::Mapping.
41
+ #
42
+ # Returns nothing.
43
+ def self.<<(mapping)
44
+ [mapping.database_model, mapping.salesforce_model].each do |model|
45
+ @collection[model] << mapping
46
+ end
47
+ end
48
+
49
+ # Public: Clear out any existing registered mappings.
50
+ #
51
+ # Returns nothing.
52
+ def self.clean!
53
+ @collection = Hash.new { |h, k| h[k] = [] }
54
+ end
55
+
56
+ clean!
57
+
58
+ end
59
+
60
+ end
61
+
62
+ end
@@ -0,0 +1,38 @@
1
+ module Restforce
2
+
3
+ module DB
4
+
5
+ module Strategies
6
+
7
+ # Restforce::DB::Strategies::Always defines an initialization strategy for
8
+ # a mapping in which newly-discovered records should always be
9
+ # synchronized from Salesforce into the database, and vice-versa.
10
+ class Always
11
+
12
+ # Public: Initialize a Restforce::DB::Strategies::Always.
13
+ def initialize(**_)
14
+ end
15
+
16
+ # Public: Should the passed record be constructed in the other system?
17
+ #
18
+ # record - A Restforce::DB::Instances::Base.
19
+ #
20
+ # Returns a Boolean.
21
+ def build?(record)
22
+ !record.synced?
23
+ end
24
+
25
+ # Public: Is this a passive sync strategy?
26
+ #
27
+ # Returns false.
28
+ def passive?
29
+ false
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ end
@@ -0,0 +1,37 @@
1
+ module Restforce
2
+
3
+ module DB
4
+
5
+ module Strategies
6
+
7
+ # Restforce::DB::Strategies::Passive defines an initialization strategy
8
+ # for a mapping in which newly-discovered records should never be
9
+ # synchronized into the other system. This strategy may be used to prevent
10
+ # multiple insertion points from existing for a single database record.
11
+ class Passive
12
+
13
+ # Public: Initialize a Restforce::DB::Strategies::Passive.
14
+ def initialize(**_)
15
+ end
16
+
17
+ # Public: Should the passed record be constructed in the other system?
18
+ #
19
+ # Returns false.
20
+ def build?(_)
21
+ false
22
+ end
23
+
24
+ # Public: Is this a passive sync strategy?
25
+ #
26
+ # Returns true.
27
+ def passive?
28
+ true
29
+ end
30
+
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,25 @@
1
+ module Restforce
2
+
3
+ module DB
4
+
5
+ # Restforce::DB::Strategy is an abstraction for the available
6
+ # synchronization strategies, and provides a factory method by which to
7
+ # obtain a strategy by name.
8
+ class Strategy
9
+
10
+ # Public: Get a Strategy by the requested name.
11
+ #
12
+ # name - The Symbol or String name of the desired strategy.
13
+ # options - A Hash of options to pass to the strategy's initializer.
14
+ #
15
+ # Returns a Restforce::DB::Strategies instance.
16
+ def self.for(name, options = {})
17
+ class_name = "Restforce::DB::Strategies::#{name.to_s.camelize}"
18
+ class_name.constantize.new(options)
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
@@ -3,7 +3,7 @@ module Restforce
3
3
  # :nodoc:
4
4
  module DB
5
5
 
6
- VERSION = "0.5.1"
6
+ VERSION = "1.0.0"
7
7
 
8
8
  end
9
9
 
@@ -21,10 +21,10 @@ http_interactions:
21
21
  message: OK
22
22
  headers:
23
23
  Date:
24
- - Mon, 06 Apr 2015 16:24:36 GMT
24
+ - Wed, 08 Apr 2015 20:53:27 GMT
25
25
  Set-Cookie:
26
- - BrowserId=4pBGzo1DRCmvDwEAqknPtA;Path=/;Domain=.salesforce.com;Expires=Fri,
27
- 05-Jun-2015 16:24:36 GMT
26
+ - BrowserId=JiecschETr-qIUUCvn1_3A;Path=/;Domain=.salesforce.com;Expires=Sun,
27
+ 07-Jun-2015 20:53:27 GMT
28
28
  Expires:
29
29
  - Thu, 01 Jan 1970 00:00:00 GMT
30
30
  Pragma:
@@ -37,9 +37,9 @@ http_interactions:
37
37
  - chunked
38
38
  body:
39
39
  encoding: ASCII-8BIT
40
- string: '{"id":"https://login.salesforce.com/id/00D1a000000H3O9EAK/0051a000000UGT8AAO","issued_at":"1428337476960","token_type":"Bearer","instance_url":"https://<host>","signature":"86GefhFP2AJMSKLNz99WX05lFydWhtq7nqnhTXNKEDI=","access_token":"00D1a000000H3O9!AQ4AQFhXX0t0My8qCHdrUMfRwg3B5FPFTjOwddPzvTaHu0t9H1xiDVKOSpDxKItHiqnvYyMKqZVwaC5AIJvYk_bzVt8m7Vil"}'
40
+ string: '{"id":"https://login.salesforce.com/id/00D1a000000H3O9EAK/0051a000000UGT8AAO","issued_at":"1428526407882","token_type":"Bearer","instance_url":"https://<host>","signature":"b8JiQgpUdbWK4ZF5QL688+niNH2pYF3BCX6iynboWVI=","access_token":"00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj"}'
41
41
  http_version:
42
- recorded_at: Mon, 06 Apr 2015 16:24:36 GMT
42
+ recorded_at: Wed, 08 Apr 2015 20:53:26 GMT
43
43
  - request:
44
44
  method: post
45
45
  uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c
@@ -52,7 +52,7 @@ http_interactions:
52
52
  Content-Type:
53
53
  - application/json
54
54
  Authorization:
55
- - OAuth 00D1a000000H3O9!AQ4AQFhXX0t0My8qCHdrUMfRwg3B5FPFTjOwddPzvTaHu0t9H1xiDVKOSpDxKItHiqnvYyMKqZVwaC5AIJvYk_bzVt8m7Vil
55
+ - OAuth 00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj
56
56
  Accept-Encoding:
57
57
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
58
58
  Accept:
@@ -63,28 +63,28 @@ http_interactions:
63
63
  message: Created
64
64
  headers:
65
65
  Date:
66
- - Mon, 06 Apr 2015 16:24:38 GMT
66
+ - Wed, 08 Apr 2015 20:53:28 GMT
67
67
  Set-Cookie:
68
- - BrowserId=JeUn_YPXQBGkIFCUCQTg5g;Path=/;Domain=.salesforce.com;Expires=Fri,
69
- 05-Jun-2015 16:24:38 GMT
68
+ - BrowserId=87n8PrMESjOEdEKnA7TnHQ;Path=/;Domain=.salesforce.com;Expires=Sun,
69
+ 07-Jun-2015 20:53:28 GMT
70
70
  Expires:
71
71
  - Thu, 01 Jan 1970 00:00:00 GMT
72
72
  Sforce-Limit-Info:
73
- - api-usage=35/15000
73
+ - api-usage=16/15000
74
74
  Location:
75
- - "/services/data/v26.0/sobjects/CustomObject__c/a001a000001LH2pAAG"
75
+ - "/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNKUAA4"
76
76
  Content-Type:
77
77
  - application/json;charset=UTF-8
78
78
  Transfer-Encoding:
79
79
  - chunked
80
80
  body:
81
81
  encoding: ASCII-8BIT
82
- string: '{"id":"a001a000001LH2pAAG","success":true,"errors":[]}'
82
+ string: '{"id":"a001a000001LNKUAA4","success":true,"errors":[]}'
83
83
  http_version:
84
- recorded_at: Mon, 06 Apr 2015 16:24:38 GMT
84
+ recorded_at: Wed, 08 Apr 2015 20:53:27 GMT
85
85
  - request:
86
86
  method: delete
87
- uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c/a001a000001LH2pAAG
87
+ uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNKUAA4
88
88
  body:
89
89
  encoding: US-ASCII
90
90
  string: ''
@@ -92,7 +92,7 @@ http_interactions:
92
92
  User-Agent:
93
93
  - Faraday v0.9.1
94
94
  Authorization:
95
- - OAuth 00D1a000000H3O9!AQ4AQFhXX0t0My8qCHdrUMfRwg3B5FPFTjOwddPzvTaHu0t9H1xiDVKOSpDxKItHiqnvYyMKqZVwaC5AIJvYk_bzVt8m7Vil
95
+ - OAuth 00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj
96
96
  Accept-Encoding:
97
97
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
98
98
  Accept:
@@ -103,17 +103,17 @@ http_interactions:
103
103
  message: No Content
104
104
  headers:
105
105
  Date:
106
- - Mon, 06 Apr 2015 16:24:39 GMT
106
+ - Wed, 08 Apr 2015 20:53:28 GMT
107
107
  Set-Cookie:
108
- - BrowserId=lRls2HWnTDSiz3uSL6mP3g;Path=/;Domain=.salesforce.com;Expires=Fri,
109
- 05-Jun-2015 16:24:39 GMT
108
+ - BrowserId=fsY3im3GQPqY5-Qq43gYqQ;Path=/;Domain=.salesforce.com;Expires=Sun,
109
+ 07-Jun-2015 20:53:28 GMT
110
110
  Expires:
111
111
  - Thu, 01 Jan 1970 00:00:00 GMT
112
112
  Sforce-Limit-Info:
113
- - api-usage=35/15000
113
+ - api-usage=14/15000
114
114
  body:
115
115
  encoding: UTF-8
116
116
  string: ''
117
117
  http_version:
118
- recorded_at: Mon, 06 Apr 2015 16:24:39 GMT
118
+ recorded_at: Wed, 08 Apr 2015 20:53:27 GMT
119
119
  recorded_with: VCR 2.9.3
@@ -0,0 +1,159 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://<host>/services/oauth2/token
6
+ body:
7
+ encoding: US-ASCII
8
+ string: grant_type=password&client_id=<client_id>&client_secret=<client_secret>&username=<username>&password=<password><security_token>
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.1
12
+ Content-Type:
13
+ - application/x-www-form-urlencoded
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Date:
24
+ - Wed, 08 Apr 2015 20:53:29 GMT
25
+ Set-Cookie:
26
+ - BrowserId=1Rba-SCDStqzgMA__QPBpw;Path=/;Domain=.salesforce.com;Expires=Sun,
27
+ 07-Jun-2015 20:53:29 GMT
28
+ Expires:
29
+ - Thu, 01 Jan 1970 00:00:00 GMT
30
+ Pragma:
31
+ - no-cache
32
+ Cache-Control:
33
+ - no-cache, no-store
34
+ Content-Type:
35
+ - application/json;charset=UTF-8
36
+ Transfer-Encoding:
37
+ - chunked
38
+ body:
39
+ encoding: ASCII-8BIT
40
+ string: '{"id":"https://login.salesforce.com/id/00D1a000000H3O9EAK/0051a000000UGT8AAO","issued_at":"1428526409339","token_type":"Bearer","instance_url":"https://<host>","signature":"EkDl2eLtEFsBSHRtR+7FoXVgwtAsCzKztj+g9CCKYM4=","access_token":"00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj"}'
41
+ http_version:
42
+ recorded_at: Wed, 08 Apr 2015 20:53:28 GMT
43
+ - request:
44
+ method: post
45
+ uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c
46
+ body:
47
+ encoding: UTF-8
48
+ string: '{"Name":"Custom object","Example_Field__c":"Some sample text"}'
49
+ headers:
50
+ User-Agent:
51
+ - Faraday v0.9.1
52
+ Content-Type:
53
+ - application/json
54
+ Authorization:
55
+ - OAuth 00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj
56
+ Accept-Encoding:
57
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
58
+ Accept:
59
+ - "*/*"
60
+ response:
61
+ status:
62
+ code: 201
63
+ message: Created
64
+ headers:
65
+ Date:
66
+ - Wed, 08 Apr 2015 20:53:29 GMT
67
+ Set-Cookie:
68
+ - BrowserId=VRciZJEzSX2oH05IN1gX4A;Path=/;Domain=.salesforce.com;Expires=Sun,
69
+ 07-Jun-2015 20:53:29 GMT
70
+ Expires:
71
+ - Thu, 01 Jan 1970 00:00:00 GMT
72
+ Sforce-Limit-Info:
73
+ - api-usage=16/15000
74
+ Location:
75
+ - "/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNKZAA4"
76
+ Content-Type:
77
+ - application/json;charset=UTF-8
78
+ Transfer-Encoding:
79
+ - chunked
80
+ body:
81
+ encoding: ASCII-8BIT
82
+ string: '{"id":"a001a000001LNKZAA4","success":true,"errors":[]}'
83
+ http_version:
84
+ recorded_at: Wed, 08 Apr 2015 20:53:28 GMT
85
+ - request:
86
+ method: get
87
+ uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c%20from%20CustomObject__c
88
+ body:
89
+ encoding: US-ASCII
90
+ string: ''
91
+ headers:
92
+ User-Agent:
93
+ - Faraday v0.9.1
94
+ Authorization:
95
+ - OAuth 00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj
96
+ Accept-Encoding:
97
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
98
+ Accept:
99
+ - "*/*"
100
+ response:
101
+ status:
102
+ code: 200
103
+ message: OK
104
+ headers:
105
+ Date:
106
+ - Wed, 08 Apr 2015 20:53:29 GMT
107
+ Set-Cookie:
108
+ - BrowserId=vu_OtnaVQ7eehu-NXmvR8g;Path=/;Domain=.salesforce.com;Expires=Sun,
109
+ 07-Jun-2015 20:53:29 GMT
110
+ Expires:
111
+ - Thu, 01 Jan 1970 00:00:00 GMT
112
+ Sforce-Limit-Info:
113
+ - api-usage=19/15000
114
+ Content-Type:
115
+ - application/json;charset=UTF-8
116
+ Transfer-Encoding:
117
+ - chunked
118
+ body:
119
+ encoding: ASCII-8BIT
120
+ string: '{"totalSize":2,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNK5AAO"},"Id":"a001a000001LNK5AAO","SystemModstamp":"2015-04-08T20:49:02.000+0000","Name":"Custom
121
+ object","Example_Field__c":"Some sample text"},{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNKZAA4"},"Id":"a001a000001LNKZAA4","SystemModstamp":"2015-04-08T20:53:29.000+0000","Name":"Custom
122
+ object","Example_Field__c":"Some sample text"}]}'
123
+ http_version:
124
+ recorded_at: Wed, 08 Apr 2015 20:53:28 GMT
125
+ - request:
126
+ method: delete
127
+ uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNKZAA4
128
+ body:
129
+ encoding: US-ASCII
130
+ string: ''
131
+ headers:
132
+ User-Agent:
133
+ - Faraday v0.9.1
134
+ Authorization:
135
+ - OAuth 00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj
136
+ Accept-Encoding:
137
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
138
+ Accept:
139
+ - "*/*"
140
+ response:
141
+ status:
142
+ code: 204
143
+ message: No Content
144
+ headers:
145
+ Date:
146
+ - Wed, 08 Apr 2015 20:53:29 GMT
147
+ Set-Cookie:
148
+ - BrowserId=uqjP8hajTyaFAZMDFHLcVw;Path=/;Domain=.salesforce.com;Expires=Sun,
149
+ 07-Jun-2015 20:53:29 GMT
150
+ Expires:
151
+ - Thu, 01 Jan 1970 00:00:00 GMT
152
+ Sforce-Limit-Info:
153
+ - api-usage=16/15000
154
+ body:
155
+ encoding: UTF-8
156
+ string: ''
157
+ http_version:
158
+ recorded_at: Wed, 08 Apr 2015 20:53:29 GMT
159
+ recorded_with: VCR 2.9.3
@@ -21,10 +21,10 @@ http_interactions:
21
21
  message: OK
22
22
  headers:
23
23
  Date:
24
- - Mon, 06 Apr 2015 16:24:45 GMT
24
+ - Wed, 08 Apr 2015 20:53:25 GMT
25
25
  Set-Cookie:
26
- - BrowserId=eu_lcdmaT9GvingBAKWQ1g;Path=/;Domain=.salesforce.com;Expires=Fri,
27
- 05-Jun-2015 16:24:45 GMT
26
+ - BrowserId=MVrwgYrpSkyS5UR2AOGaqA;Path=/;Domain=.salesforce.com;Expires=Sun,
27
+ 07-Jun-2015 20:53:25 GMT
28
28
  Expires:
29
29
  - Thu, 01 Jan 1970 00:00:00 GMT
30
30
  Pragma:
@@ -37,9 +37,9 @@ http_interactions:
37
37
  - chunked
38
38
  body:
39
39
  encoding: ASCII-8BIT
40
- string: '{"id":"https://login.salesforce.com/id/00D1a000000H3O9EAK/0051a000000UGT8AAO","issued_at":"1428337485662","token_type":"Bearer","instance_url":"https://<host>","signature":"ebtXTW1s538SvpA31IVo2LvVNp4Jx6yDwZUrWmmhemk=","access_token":"00D1a000000H3O9!AQ4AQFhXX0t0My8qCHdrUMfRwg3B5FPFTjOwddPzvTaHu0t9H1xiDVKOSpDxKItHiqnvYyMKqZVwaC5AIJvYk_bzVt8m7Vil"}'
40
+ string: '{"id":"https://login.salesforce.com/id/00D1a000000H3O9EAK/0051a000000UGT8AAO","issued_at":"1428526405467","token_type":"Bearer","instance_url":"https://<host>","signature":"OEgzQsng5CO8Wa/V0dQOeL0zD2ham3GXI8NLXyS1IwU=","access_token":"00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj"}'
41
41
  http_version:
42
- recorded_at: Mon, 06 Apr 2015 16:24:45 GMT
42
+ recorded_at: Wed, 08 Apr 2015 20:53:24 GMT
43
43
  - request:
44
44
  method: get
45
45
  uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c%20from%20CustomObject__c
@@ -50,7 +50,7 @@ http_interactions:
50
50
  User-Agent:
51
51
  - Faraday v0.9.1
52
52
  Authorization:
53
- - OAuth 00D1a000000H3O9!AQ4AQFhXX0t0My8qCHdrUMfRwg3B5FPFTjOwddPzvTaHu0t9H1xiDVKOSpDxKItHiqnvYyMKqZVwaC5AIJvYk_bzVt8m7Vil
53
+ - OAuth 00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj
54
54
  Accept-Encoding:
55
55
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
56
56
  Accept:
@@ -61,23 +61,24 @@ http_interactions:
61
61
  message: OK
62
62
  headers:
63
63
  Date:
64
- - Mon, 06 Apr 2015 16:24:46 GMT
64
+ - Wed, 08 Apr 2015 20:53:25 GMT
65
65
  Set-Cookie:
66
- - BrowserId=FPminXJRSDuBH-5_NLEcMQ;Path=/;Domain=.salesforce.com;Expires=Fri,
67
- 05-Jun-2015 16:24:46 GMT
66
+ - BrowserId=LbRZpgmdSlKNUc7AOC_poQ;Path=/;Domain=.salesforce.com;Expires=Sun,
67
+ 07-Jun-2015 20:53:25 GMT
68
68
  Expires:
69
69
  - Thu, 01 Jan 1970 00:00:00 GMT
70
70
  Sforce-Limit-Info:
71
- - api-usage=37/15000
71
+ - api-usage=14/15000
72
72
  Content-Type:
73
73
  - application/json;charset=UTF-8
74
74
  Transfer-Encoding:
75
75
  - chunked
76
76
  body:
77
77
  encoding: ASCII-8BIT
78
- string: '{"totalSize":0,"done":true,"records":[]}'
78
+ string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNK5AAO"},"Id":"a001a000001LNK5AAO","SystemModstamp":"2015-04-08T20:49:02.000+0000","Name":"Custom
79
+ object","Example_Field__c":"Some sample text"}]}'
79
80
  http_version:
80
- recorded_at: Mon, 06 Apr 2015 16:24:46 GMT
81
+ recorded_at: Wed, 08 Apr 2015 20:53:24 GMT
81
82
  - request:
82
83
  method: post
83
84
  uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c
@@ -90,7 +91,7 @@ http_interactions:
90
91
  Content-Type:
91
92
  - application/json
92
93
  Authorization:
93
- - OAuth 00D1a000000H3O9!AQ4AQFhXX0t0My8qCHdrUMfRwg3B5FPFTjOwddPzvTaHu0t9H1xiDVKOSpDxKItHiqnvYyMKqZVwaC5AIJvYk_bzVt8m7Vil
94
+ - OAuth 00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj
94
95
  Accept-Encoding:
95
96
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
96
97
  Accept:
@@ -101,28 +102,28 @@ http_interactions:
101
102
  message: Created
102
103
  headers:
103
104
  Date:
104
- - Mon, 06 Apr 2015 16:24:47 GMT
105
+ - Wed, 08 Apr 2015 20:53:25 GMT
105
106
  Set-Cookie:
106
- - BrowserId=otD1tXdiQQOC5iVIjmiABA;Path=/;Domain=.salesforce.com;Expires=Fri,
107
- 05-Jun-2015 16:24:47 GMT
107
+ - BrowserId=Ic2SY4LjRu2X8ZR58FJqIQ;Path=/;Domain=.salesforce.com;Expires=Sun,
108
+ 07-Jun-2015 20:53:25 GMT
108
109
  Expires:
109
110
  - Thu, 01 Jan 1970 00:00:00 GMT
110
111
  Sforce-Limit-Info:
111
- - api-usage=37/15000
112
+ - api-usage=14/15000
112
113
  Location:
113
- - "/services/data/v26.0/sobjects/CustomObject__c/a001a000001LH2zAAG"
114
+ - "/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNKPAA4"
114
115
  Content-Type:
115
116
  - application/json;charset=UTF-8
116
117
  Transfer-Encoding:
117
118
  - chunked
118
119
  body:
119
120
  encoding: ASCII-8BIT
120
- string: '{"id":"a001a000001LH2zAAG","success":true,"errors":[]}'
121
+ string: '{"id":"a001a000001LNKPAA4","success":true,"errors":[]}'
121
122
  http_version:
122
- recorded_at: Mon, 06 Apr 2015 16:24:47 GMT
123
+ recorded_at: Wed, 08 Apr 2015 20:53:24 GMT
123
124
  - request:
124
125
  method: get
125
- uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c%20from%20CustomObject__c%20where%20Id%20=%20%27a001a000001LH2zAAG%27
126
+ uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c%20from%20CustomObject__c%20where%20Id%20=%20%27a001a000001LNKPAA4%27
126
127
  body:
127
128
  encoding: US-ASCII
128
129
  string: ''
@@ -130,7 +131,7 @@ http_interactions:
130
131
  User-Agent:
131
132
  - Faraday v0.9.1
132
133
  Authorization:
133
- - OAuth 00D1a000000H3O9!AQ4AQFhXX0t0My8qCHdrUMfRwg3B5FPFTjOwddPzvTaHu0t9H1xiDVKOSpDxKItHiqnvYyMKqZVwaC5AIJvYk_bzVt8m7Vil
134
+ - OAuth 00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj
134
135
  Accept-Encoding:
135
136
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
136
137
  Accept:
@@ -141,27 +142,27 @@ http_interactions:
141
142
  message: OK
142
143
  headers:
143
144
  Date:
144
- - Mon, 06 Apr 2015 16:24:48 GMT
145
+ - Wed, 08 Apr 2015 20:53:26 GMT
145
146
  Set-Cookie:
146
- - BrowserId=t2HBOSIsQX6_1WJphKRM_w;Path=/;Domain=.salesforce.com;Expires=Fri,
147
- 05-Jun-2015 16:24:48 GMT
147
+ - BrowserId=Bkc435clQh29F-VlM4C4tw;Path=/;Domain=.salesforce.com;Expires=Sun,
148
+ 07-Jun-2015 20:53:26 GMT
148
149
  Expires:
149
150
  - Thu, 01 Jan 1970 00:00:00 GMT
150
151
  Sforce-Limit-Info:
151
- - api-usage=36/15000
152
+ - api-usage=14/15000
152
153
  Content-Type:
153
154
  - application/json;charset=UTF-8
154
155
  Transfer-Encoding:
155
156
  - chunked
156
157
  body:
157
158
  encoding: ASCII-8BIT
158
- string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001LH2zAAG"},"Id":"a001a000001LH2zAAG","SystemModstamp":"2015-04-06T16:24:47.000+0000","Name":"Custom
159
+ string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNKPAA4"},"Id":"a001a000001LNKPAA4","SystemModstamp":"2015-04-08T20:53:25.000+0000","Name":"Custom
159
160
  object","Example_Field__c":"Some sample text"}]}'
160
161
  http_version:
161
- recorded_at: Mon, 06 Apr 2015 16:24:48 GMT
162
+ recorded_at: Wed, 08 Apr 2015 20:53:25 GMT
162
163
  - request:
163
164
  method: get
164
- uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c%20from%20CustomObject__c%20where%20Id%20=%20%27a001a000001LH2zAAG%27
165
+ uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c%20from%20CustomObject__c%20where%20Id%20=%20%27a001a000001LNKPAA4%27
165
166
  body:
166
167
  encoding: US-ASCII
167
168
  string: ''
@@ -169,7 +170,7 @@ http_interactions:
169
170
  User-Agent:
170
171
  - Faraday v0.9.1
171
172
  Authorization:
172
- - OAuth 00D1a000000H3O9!AQ4AQFhXX0t0My8qCHdrUMfRwg3B5FPFTjOwddPzvTaHu0t9H1xiDVKOSpDxKItHiqnvYyMKqZVwaC5AIJvYk_bzVt8m7Vil
173
+ - OAuth 00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj
173
174
  Accept-Encoding:
174
175
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
175
176
  Accept:
@@ -180,27 +181,27 @@ http_interactions:
180
181
  message: OK
181
182
  headers:
182
183
  Date:
183
- - Mon, 06 Apr 2015 16:24:50 GMT
184
+ - Wed, 08 Apr 2015 20:53:26 GMT
184
185
  Set-Cookie:
185
- - BrowserId=dxqOpw4lTJqFcadlGiRfAg;Path=/;Domain=.salesforce.com;Expires=Fri,
186
- 05-Jun-2015 16:24:50 GMT
186
+ - BrowserId=33Nt22geS02sk9_Vh5SZdA;Path=/;Domain=.salesforce.com;Expires=Sun,
187
+ 07-Jun-2015 20:53:26 GMT
187
188
  Expires:
188
189
  - Thu, 01 Jan 1970 00:00:00 GMT
189
190
  Sforce-Limit-Info:
190
- - api-usage=37/15000
191
+ - api-usage=14/15000
191
192
  Content-Type:
192
193
  - application/json;charset=UTF-8
193
194
  Transfer-Encoding:
194
195
  - chunked
195
196
  body:
196
197
  encoding: ASCII-8BIT
197
- string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001LH2zAAG"},"Id":"a001a000001LH2zAAG","SystemModstamp":"2015-04-06T16:24:47.000+0000","Name":"Custom
198
+ string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNKPAA4"},"Id":"a001a000001LNKPAA4","SystemModstamp":"2015-04-08T20:53:25.000+0000","Name":"Custom
198
199
  object","Example_Field__c":"Some sample text"}]}'
199
200
  http_version:
200
- recorded_at: Mon, 06 Apr 2015 16:24:50 GMT
201
+ recorded_at: Wed, 08 Apr 2015 20:53:25 GMT
201
202
  - request:
202
203
  method: delete
203
- uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c/a001a000001LH2zAAG
204
+ uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c/a001a000001LNKPAA4
204
205
  body:
205
206
  encoding: US-ASCII
206
207
  string: ''
@@ -208,7 +209,7 @@ http_interactions:
208
209
  User-Agent:
209
210
  - Faraday v0.9.1
210
211
  Authorization:
211
- - OAuth 00D1a000000H3O9!AQ4AQFhXX0t0My8qCHdrUMfRwg3B5FPFTjOwddPzvTaHu0t9H1xiDVKOSpDxKItHiqnvYyMKqZVwaC5AIJvYk_bzVt8m7Vil
212
+ - OAuth 00D1a000000H3O9!AQ4AQNyTp4z9oP2.J3Cn7NYTEhEEQDKps55QWmUhH0v3eAk6P1DoAUmVHKUnCITNabWF1iOMeT46TMEQTZdyM7pnT5JNIYfj
212
213
  Accept-Encoding:
213
214
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
214
215
  Accept:
@@ -219,17 +220,17 @@ http_interactions:
219
220
  message: No Content
220
221
  headers:
221
222
  Date:
222
- - Mon, 06 Apr 2015 16:24:51 GMT
223
+ - Wed, 08 Apr 2015 20:53:26 GMT
223
224
  Set-Cookie:
224
- - BrowserId=7-j3HRvQRGyvVsvBUL7nGA;Path=/;Domain=.salesforce.com;Expires=Fri,
225
- 05-Jun-2015 16:24:51 GMT
225
+ - BrowserId=_9uvGvwdSwWIqZVgdLOdAw;Path=/;Domain=.salesforce.com;Expires=Sun,
226
+ 07-Jun-2015 20:53:26 GMT
226
227
  Expires:
227
228
  - Thu, 01 Jan 1970 00:00:00 GMT
228
229
  Sforce-Limit-Info:
229
- - api-usage=36/15000
230
+ - api-usage=15/15000
230
231
  body:
231
232
  encoding: UTF-8
232
233
  string: ''
233
234
  http_version:
234
- recorded_at: Mon, 06 Apr 2015 16:24:51 GMT
235
+ recorded_at: Wed, 08 Apr 2015 20:53:25 GMT
235
236
  recorded_with: VCR 2.9.3