spark_api 1.5.2 → 1.5.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9dfabf550d6eea2fb80a30b047b5c0fb4a5aa95f4bad6ee2fd9135acc21ce479
4
- data.tar.gz: 8587cc4fa49929d9286ec6ac37c9d97259e6fbdf2d7b583716edc5d67068d47f
3
+ metadata.gz: 3c3d4c9f45558cce85bffb176aec80b078549b79c6254aebf327ee6044e821eb
4
+ data.tar.gz: b64d5dbb122e21f47a8860b0c80f9d601ce2fbf212281a14dcaa0e6e69b85119
5
5
  SHA512:
6
- metadata.gz: 2e0467d03ebcac984dd9ba6dbd0b120e60d1ef1c340d1972145140678a84b405567114a4af2eaba8776c8e9a20cc556dafada327cb9d86c9ad95dbec8ca2a1f5
7
- data.tar.gz: 6b9107aa27eed9afd313b34144c1f2b22425fa421568d6b496edb7d96b9828313568651457b3cd3f71085c7b3d09ecfd7d7595cced256cdc0a01775edf46b308
6
+ metadata.gz: 6162c7da6c81aa3bf9e2e947ed32ce2632e8f8d15961ec63f1c1812a8e65b9730bbd081d3aff8c68306ae35590b4094ab99fcd77b5dca6e85b7b71e20e67e21b
7
+ data.tar.gz: 99fca35f709e59f97589eebc86206ec0f80c855103122e3101665cf6d6042b6c1d1de10e560d65d6e8d10e3b2a6925086857ae01c124c6531781d047754e3c6b
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.5.2
1
+ 1.5.6
@@ -63,6 +63,8 @@ module SparkApi
63
63
  # Perform an HTTP request (no data)
64
64
  def request(method, path, body, options)
65
65
  escaped_path = Addressable::URI.escape(path)
66
+ connection = @client.connection
67
+ connection.headers.merge!(options.delete(:override_headers) || {})
66
68
  request_opts = {
67
69
  :AuthToken => @session.auth_token
68
70
  }
@@ -76,10 +78,10 @@ module SparkApi
76
78
  request_path = "#{escaped_path}?#{build_url_parameters({"ApiSig"=>sig}.merge(request_opts))}"
77
79
  SparkApi.logger.debug { "Request: #{request_path}" }
78
80
  if body.nil?
79
- response = @client.connection.send(method, request_path)
81
+ response = connection.send(method, request_path)
80
82
  else
81
83
  SparkApi.logger.debug { "Data: #{body}" }
82
- response = @client.connection.send(method, request_path, body)
84
+ response = connection.send(method, request_path, body)
83
85
  end
84
86
  response
85
87
  end
@@ -42,6 +42,7 @@ module SparkApi
42
42
  def request(method, path, body, options={})
43
43
  escaped_path = Addressable::URI.escape(path)
44
44
  connection = @client.connection(true) # SSL Only!
45
+ connection.headers.merge!(options.delete(:override_headers) || {})
45
46
  connection.headers.merge!(self.auth_header)
46
47
 
47
48
  unless (@client.api_user.nil? || options[:ApiUser])
@@ -1,4 +1,4 @@
1
- require "highline/import"
1
+ require "highline"
2
2
 
3
3
  module SparkApi
4
4
  module Authentication
@@ -18,7 +18,7 @@ module SparkApi
18
18
  def redirect(url)
19
19
  puts "Missing OAuth2 session, redirecting..."
20
20
  puts "Please visit #{url}, login as a user, and paste the authorization code here:"
21
- self.code = ask("Authorization code?") do |q|
21
+ self.code = HighLine.ask("Authorization code?") do |q|
22
22
  q.whitespace = :strip_and_collapse
23
23
  q.validate = /^\w+$/
24
24
  end
@@ -15,14 +15,18 @@ module SparkApi
15
15
  def on_complete(env)
16
16
  body = MultiJson.decode(env[:body])
17
17
  SparkApi.logger.debug { "[oauth2] Response Body: #{body.inspect}" }
18
+
18
19
  unless body.is_a?(Hash)
19
20
  raise InvalidResponse, "The server response could not be understood"
20
21
  end
22
+
21
23
  case env[:status]
22
24
  when 200..299
23
25
  SparkApi.logger.debug{ "[oauth2] Success!" }
24
26
  session = OAuthSession.new(body)
25
- else
27
+ else
28
+ SparkApi.logger.warn { "[oauth2] failure #{body.inspect}" }
29
+
26
30
  # Handle the WWW-Authenticate Response Header Field if present. This can be returned by
27
31
  # OAuth2 implementations and wouldn't hurt to log.
28
32
  auth_header_error = env[:request_headers]["WWW-Authenticate"]
@@ -29,7 +29,11 @@ module SparkApi
29
29
  if paging.nil?
30
30
  results = response
31
31
  else
32
- q = CGI.parse(env[:url].query)
32
+ q = if http_method_override_request?(env)
33
+ CGI.parse(env[:request_body])
34
+ else
35
+ CGI.parse(env[:url].query)
36
+ end
33
37
  if q.key?("_pagination") && q["_pagination"].first == "count"
34
38
  results = paging['TotalRows']
35
39
  else
@@ -87,7 +91,13 @@ module SparkApi
87
91
 
88
92
  env[:body]
89
93
  end
90
-
94
+
95
+ private
96
+
97
+ def http_method_override_request?(env)
98
+ env[:request_headers]["X-HTTP-Method-Override"] == "GET"
99
+ end
100
+
91
101
  end
92
102
 
93
103
  Faraday::Response.register_middleware :spark_api => FaradayMiddleware
@@ -61,6 +61,22 @@ module SparkApi
61
61
  unless authenticated?
62
62
  authenticate
63
63
  end
64
+
65
+ # Allow use of the X-HTTP-Method-Override header to disguise excessively
66
+ # large GET/DELETE/HEAD requests as POST requests.
67
+ if options[:http_method_override]
68
+ options = options.clone
69
+ options.delete(:http_method_override)
70
+ body = URI.encode_www_form(options)
71
+ options = {
72
+ override_headers: {
73
+ "X-HTTP-Method-Override" => method.to_s.upcase,
74
+ "Content-Type" => "application/x-www-form-urlencoded"
75
+ }
76
+ }
77
+ method = :post
78
+ end
79
+
64
80
  attempts = 0
65
81
  begin
66
82
  request_opts = {}
@@ -119,6 +119,25 @@ describe SparkApi::Authentication::ApiAuth do
119
119
  :status=>201)
120
120
  expect(subject.request(:post, "/#{SparkApi.version}/contacts", contact, args).status).to eq(201)
121
121
  end
122
+ it "should incorporate any override_headers it is given while excluding them from the resulting request" do
123
+ stub_auth_request
124
+ args = {
125
+ override_headers: {
126
+ "Some-Header" => "Some-Value"
127
+ },
128
+ ApiUser: "foobar",
129
+ some_other_param: "some_other_value"
130
+ }
131
+ body = "somerequestbodytext"
132
+ stub_request(:post, "https://api.sparkapi.com/v1/someservice?ApiSig=856f5c036137c0cef5d4d223cd0f42be&ApiUser=foobar&AuthToken=1234&some_other_param=some_other_value").
133
+ with(body: "somerequestbodytext", headers: args[:override_headers]).
134
+ to_return(body: '{"D": {
135
+ "Success": true,
136
+ "Results": []
137
+ }',
138
+ status: 200)
139
+ expect(subject.request(:post, "/#{SparkApi.version}/someservice", body, args).status).to eq(200)
140
+ end
122
141
  end
123
142
 
124
143
  describe "sign" do
@@ -97,6 +97,24 @@ describe SparkApi::Authentication::OAuth2 do
97
97
  :status=>201)
98
98
  expect(subject.request(:post, "/#{SparkApi.version}/contacts", contact, args).status).to eq(201)
99
99
  end
100
+ it "should incorporate any override_headers it is given while excluding them from the resulting request" do
101
+ subject.session = session
102
+ args = {
103
+ override_headers: {
104
+ "Some-Header" => "Some-Value"
105
+ },
106
+ some_other_param: "some_other_value"
107
+ }
108
+ body = "somerequestbodytext"
109
+ stub_request(:post, "https://api.sparkapi.com/#{SparkApi.version}/someservice?some_other_param=some_other_value").
110
+ with(body: body, headers: args[:override_headers]).
111
+ to_return(body: '{"D": {
112
+ "Success": true,
113
+ "Results": []
114
+ }',
115
+ status: 200)
116
+ expect(subject.request(:post, "/#{SparkApi.version}/someservice", body, args).status).to eq(200)
117
+ end
100
118
  end
101
119
 
102
120
  describe "sparkbar_token" do
@@ -181,6 +181,12 @@ describe Listing do
181
181
  count = Listing.count()
182
182
  expect(count).to eq(2001)
183
183
  end
184
+
185
+ on_get_it "should return the count even if http_method_override: true is passed" do
186
+ stub_api_post('/listings', '_pagination=count', 'count.json')
187
+ count = Listing.count(http_method_override: true)
188
+ expect(count).to eq(2001)
189
+ end
184
190
  end
185
191
 
186
192
  context "/listings/<listing_id>", :support do
@@ -160,7 +160,13 @@ describe SparkApi do
160
160
  }
161
161
  }']
162
162
  }
163
-
163
+ # For testing http_method_override. See associated test for more details.
164
+ stub.post('/v1/routetoproveweareposting?ApiSig=SignedToken&AuthToken=1234', 'some_param=some_value') { [200, {}, '{"D": {
165
+ "Success": true,
166
+ "Results": []
167
+ }
168
+ }']
169
+ }
164
170
  end
165
171
  @connection = test_connection(stubs)
166
172
  end
@@ -230,7 +236,7 @@ describe SparkApi do
230
236
  end
231
237
 
232
238
  it "should allow response object to be returned instead of body" do
233
- r = subject.get('/system', { full_response: true })
239
+ r = subject.get('/system', { some_param: 'something', full_response: true })
234
240
 
235
241
  expect(r.is_a?(Faraday::Response)).to be(true)
236
242
  expect(r.status).to eq(200)
@@ -248,7 +254,17 @@ describe SparkApi do
248
254
  expect(number.to_s).to eq(BigDecimal.new("9999999999999999999999999.99").to_s)
249
255
  end
250
256
  end
251
-
257
+
258
+ # This is a weird feature and it also gets a weird test that probably
259
+ # merits explanation:
260
+ #
261
+ # We have only stubbed POST for this route, so the below succeeding
262
+ # proves that we have converted our GET into a POST. It is additionally
263
+ # stubbed to prove that we turn the params into a body which excludes the
264
+ # http_method_override options as well as the override_headers options.
265
+ it "should convert GET to POST if http_method_override: true is supplied" do
266
+ expect(subject.get('/routetoproveweareposting', { http_method_override: true, some_param: "some_value" }).success?).to be true
267
+ end
252
268
  end
253
269
 
254
270
  context "when unauthenticated" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spark_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Hornseth
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-06-03 00:00:00.000000000 Z
12
+ date: 2022-01-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -539,203 +539,203 @@ signing_key:
539
539
  specification_version: 4
540
540
  summary: A library for interacting with the Spark web services.
541
541
  test_files:
542
- - spec/fixtures/generic_delete.json
543
- - spec/fixtures/base.json
544
- - spec/fixtures/authentication_failure.json
545
- - spec/fixtures/errors/failure_with_constraint.json
542
+ - spec/fixtures/fields/order_a.json
543
+ - spec/fixtures/fields/settings.json
544
+ - spec/fixtures/fields/order.json
545
+ - spec/fixtures/errors/failure_with_msg.json
546
546
  - spec/fixtures/errors/failure.json
547
547
  - spec/fixtures/errors/expired.json
548
- - spec/fixtures/errors/failure_with_msg.json
549
- - spec/fixtures/listing_carts/add_listings.json
550
- - spec/fixtures/listing_carts/post_portal_cart.json
551
- - spec/fixtures/listing_carts/add_listing_post.json
552
- - spec/fixtures/listing_carts/new_portal_cart.json
553
- - spec/fixtures/listing_carts/add_listing.json
554
- - spec/fixtures/listing_carts/add_portal_cart_listings_post.json
555
- - spec/fixtures/listing_carts/listing_portal_cart.json
556
- - spec/fixtures/listing_carts/add_portal_cart_listings.json
557
- - spec/fixtures/listing_carts/empty.json
558
- - spec/fixtures/listing_carts/post.json
559
- - spec/fixtures/listing_carts/new.json
548
+ - spec/fixtures/errors/failure_with_constraint.json
549
+ - spec/fixtures/property_types/property_types.json
560
550
  - spec/fixtures/listing_carts/put.json
551
+ - spec/fixtures/listing_carts/post.json
552
+ - spec/fixtures/listing_carts/put_name.json
553
+ - spec/fixtures/listing_carts/add_portal_cart_listings.json
561
554
  - spec/fixtures/listing_carts/listing_cart.json
555
+ - spec/fixtures/listing_carts/new_portal_cart.json
562
556
  - spec/fixtures/listing_carts/put_ids.json
557
+ - spec/fixtures/listing_carts/new.json
563
558
  - spec/fixtures/listing_carts/remove_listing.json
564
- - spec/fixtures/listing_carts/put_name.json
559
+ - spec/fixtures/listing_carts/add_listing_post.json
560
+ - spec/fixtures/listing_carts/add_listing.json
561
+ - spec/fixtures/listing_carts/add_portal_cart_listings_post.json
562
+ - spec/fixtures/listing_carts/empty.json
563
+ - spec/fixtures/listing_carts/add_listings.json
564
+ - spec/fixtures/listing_carts/post_portal_cart.json
565
+ - spec/fixtures/listing_carts/listing_portal_cart.json
565
566
  - spec/fixtures/listing_carts/add_listings_post.json
566
- - spec/fixtures/fields/order_a.json
567
- - spec/fixtures/fields/settings.json
568
- - spec/fixtures/fields/order.json
569
- - spec/fixtures/newsfeeds/inactive.json
570
- - spec/fixtures/newsfeeds/get.json
571
- - spec/fixtures/newsfeeds/meta.json
567
+ - spec/fixtures/success.json
568
+ - spec/fixtures/activities/get.json
569
+ - spec/fixtures/generic_failure.json
570
+ - spec/fixtures/search_templates/quick_searches/get.json
571
+ - spec/fixtures/comments/get.json
572
+ - spec/fixtures/comments/post.json
573
+ - spec/fixtures/comments/new.json
574
+ - spec/fixtures/contacts/vow_accounts/edit.json
575
+ - spec/fixtures/contacts/vow_accounts/get.json
576
+ - spec/fixtures/contacts/vow_accounts/post.json
577
+ - spec/fixtures/contacts/vow_accounts/new.json
578
+ - spec/fixtures/contacts/new_empty.json
579
+ - spec/fixtures/contacts/post.json
580
+ - spec/fixtures/contacts/my.json
581
+ - spec/fixtures/contacts/new.json
582
+ - spec/fixtures/contacts/contacts.json
583
+ - spec/fixtures/contacts/new_notify.json
584
+ - spec/fixtures/contacts/tags.json
585
+ - spec/fixtures/oauth2/access_with_old_refresh.json
586
+ - spec/fixtures/oauth2/error.json
587
+ - spec/fixtures/oauth2/authorization_code_body.json
588
+ - spec/fixtures/oauth2/refresh_body.json
589
+ - spec/fixtures/oauth2/password_body.json
590
+ - spec/fixtures/oauth2/access_with_refresh.json
591
+ - spec/fixtures/oauth2/access.json
592
+ - spec/fixtures/base.json
572
593
  - spec/fixtures/idx_links/get.json
573
- - spec/fixtures/listings/document_index.json
574
- - spec/fixtures/listings/with_documents.json
575
- - spec/fixtures/listings/photos/batch_delete.json
576
- - spec/fixtures/listings/photos/rollback.json
577
- - spec/fixtures/listings/photos/post.json
578
- - spec/fixtures/listings/photos/index.json
579
- - spec/fixtures/listings/photos/new.json
580
- - spec/fixtures/listings/photos/rotate.json
581
- - spec/fixtures/listings/multiple.json
582
- - spec/fixtures/listings/tour_of_homes_search.json
583
- - spec/fixtures/listings/put_expiration_date.json
584
- - spec/fixtures/listings/videos_index.json
585
- - spec/fixtures/listings/with_permissions.json
586
- - spec/fixtures/listings/reorder_photo.json
587
- - spec/fixtures/listings/virtual_tours_index.json
588
- - spec/fixtures/listings/put_reorder_photo.json
589
- - spec/fixtures/listings/no_subresources.json
590
- - spec/fixtures/listings/with_photos.json
591
- - spec/fixtures/listings/shared_listing_post.json
592
- - spec/fixtures/listings/with_vtour.json
593
- - spec/fixtures/listings/put.json
594
- - spec/fixtures/listings/with_rental_calendar.json
595
- - spec/fixtures/listings/constraints.json
596
- - spec/fixtures/listings/constraints_with_pagination.json
597
- - spec/fixtures/listings/tour_of_homes.json
598
- - spec/fixtures/listings/open_houses.json
599
- - spec/fixtures/listings/shared_listing_get.json
600
- - spec/fixtures/listings/with_supplement.json
601
- - spec/fixtures/listings/shared_listing_new.json
602
- - spec/fixtures/listings/rental_calendar.json
603
- - spec/fixtures/listings/floplans_index.json
604
- - spec/fixtures/listings/with_videos.json
605
- - spec/fixtures/notes/agent_shared.json
594
+ - spec/fixtures/saved_searches/with_inactive_newsfeed.json
595
+ - spec/fixtures/saved_searches/get_provided.json
596
+ - spec/fixtures/saved_searches/get.json
597
+ - spec/fixtures/saved_searches/post.json
598
+ - spec/fixtures/saved_searches/without_newsfeed.json
599
+ - spec/fixtures/saved_searches/with_newsfeed.json
600
+ - spec/fixtures/saved_searches/new.json
601
+ - spec/fixtures/saved_searches/update.json
602
+ - spec/fixtures/no_results.json
606
603
  - spec/fixtures/notes/agent_shared_empty.json
607
604
  - spec/fixtures/notes/new.json
608
605
  - spec/fixtures/notes/add.json
609
- - spec/fixtures/accounts/office.json
606
+ - spec/fixtures/notes/agent_shared.json
607
+ - spec/fixtures/accounts/my_put.json
610
608
  - spec/fixtures/accounts/my_portal.json
609
+ - spec/fixtures/accounts/my.json
610
+ - spec/fixtures/accounts/office.json
611
611
  - spec/fixtures/accounts/password_save.json
612
612
  - spec/fixtures/accounts/my_save.json
613
613
  - spec/fixtures/accounts/all.json
614
- - spec/fixtures/accounts/my_put.json
615
- - spec/fixtures/accounts/my.json
616
- - spec/fixtures/notifications/mark_read.json
617
- - spec/fixtures/notifications/post.json
618
- - spec/fixtures/notifications/new.json
619
- - spec/fixtures/notifications/notifications.json
620
- - spec/fixtures/notifications/new_empty.json
621
- - spec/fixtures/notifications/unread.json
622
- - spec/fixtures/search_templates/quick_searches/get.json
623
- - spec/fixtures/standardfields/nearby.json
624
- - spec/fixtures/standardfields/stateorprovince.json
614
+ - spec/fixtures/sharedlinks/success.json
615
+ - spec/fixtures/listings/put.json
616
+ - spec/fixtures/listings/videos_index.json
617
+ - spec/fixtures/listings/photos/index.json
618
+ - spec/fixtures/listings/photos/post.json
619
+ - spec/fixtures/listings/photos/rotate.json
620
+ - spec/fixtures/listings/photos/rollback.json
621
+ - spec/fixtures/listings/photos/new.json
622
+ - spec/fixtures/listings/photos/batch_delete.json
623
+ - spec/fixtures/listings/constraints_with_pagination.json
624
+ - spec/fixtures/listings/with_rental_calendar.json
625
+ - spec/fixtures/listings/floplans_index.json
626
+ - spec/fixtures/listings/shared_listing_get.json
627
+ - spec/fixtures/listings/with_documents.json
628
+ - spec/fixtures/listings/tour_of_homes.json
629
+ - spec/fixtures/listings/with_supplement.json
630
+ - spec/fixtures/listings/with_videos.json
631
+ - spec/fixtures/listings/shared_listing_post.json
632
+ - spec/fixtures/listings/put_reorder_photo.json
633
+ - spec/fixtures/listings/rental_calendar.json
634
+ - spec/fixtures/listings/constraints.json
635
+ - spec/fixtures/listings/no_subresources.json
636
+ - spec/fixtures/listings/with_permissions.json
637
+ - spec/fixtures/listings/open_houses.json
638
+ - spec/fixtures/listings/with_photos.json
639
+ - spec/fixtures/listings/with_vtour.json
640
+ - spec/fixtures/listings/multiple.json
641
+ - spec/fixtures/listings/document_index.json
642
+ - spec/fixtures/listings/reorder_photo.json
643
+ - spec/fixtures/listings/put_expiration_date.json
644
+ - spec/fixtures/listings/virtual_tours_index.json
645
+ - spec/fixtures/listings/tour_of_homes_search.json
646
+ - spec/fixtures/listings/shared_listing_new.json
647
+ - spec/fixtures/authentication_failure.json
625
648
  - spec/fixtures/standardfields/city.json
649
+ - spec/fixtures/standardfields/nearby.json
626
650
  - spec/fixtures/standardfields/standardfields.json
627
- - spec/fixtures/oauth2/authorization_code_body.json
628
- - spec/fixtures/oauth2/access_with_refresh.json
629
- - spec/fixtures/oauth2/password_body.json
630
- - spec/fixtures/oauth2/access_with_old_refresh.json
631
- - spec/fixtures/oauth2/refresh_body.json
632
- - spec/fixtures/oauth2/error.json
633
- - spec/fixtures/oauth2/access.json
634
- - spec/fixtures/empty.json
635
- - spec/fixtures/generic_failure.json
636
- - spec/fixtures/rules/get.json
637
- - spec/fixtures/property_types/property_types.json
638
- - spec/fixtures/success.json
651
+ - spec/fixtures/standardfields/stateorprovince.json
639
652
  - spec/fixtures/count.json
640
- - spec/fixtures/sorts/get.json
641
- - spec/fixtures/comments/post.json
642
- - spec/fixtures/comments/new.json
643
- - spec/fixtures/comments/get.json
653
+ - spec/fixtures/oauth2_error.json
644
654
  - spec/fixtures/finders.json
655
+ - spec/fixtures/portal/post.json
656
+ - spec/fixtures/portal/my.json
657
+ - spec/fixtures/portal/my_non_existant.json
658
+ - spec/fixtures/portal/new.json
659
+ - spec/fixtures/portal/enable.json
660
+ - spec/fixtures/portal/disable.json
661
+ - spec/fixtures/session.json
662
+ - spec/fixtures/rules/get.json
663
+ - spec/fixtures/newsfeeds/get.json
664
+ - spec/fixtures/newsfeeds/inactive.json
665
+ - spec/fixtures/newsfeeds/meta.json
666
+ - spec/fixtures/listing_meta_translations/get.json
667
+ - spec/fixtures/empty.json
668
+ - spec/fixtures/sorts/get.json
669
+ - spec/fixtures/notifications/new_empty.json
670
+ - spec/fixtures/notifications/notifications.json
671
+ - spec/fixtures/notifications/post.json
672
+ - spec/fixtures/notifications/new.json
673
+ - spec/fixtures/notifications/mark_read.json
674
+ - spec/fixtures/notifications/unread.json
645
675
  - spec/fixtures/logo_fbs.png
646
- - spec/fixtures/activities/get.json
647
- - spec/fixtures/saved_searches/get_provided.json
648
- - spec/fixtures/saved_searches/without_newsfeed.json
649
- - spec/fixtures/saved_searches/update.json
650
- - spec/fixtures/saved_searches/post.json
651
- - spec/fixtures/saved_searches/new.json
652
- - spec/fixtures/saved_searches/get.json
653
- - spec/fixtures/saved_searches/with_newsfeed.json
654
- - spec/fixtures/saved_searches/with_inactive_newsfeed.json
655
- - spec/fixtures/sharedlinks/success.json
676
+ - spec/fixtures/generic_delete.json
677
+ - spec/fixtures/messages/new_empty.json
678
+ - spec/fixtures/messages/get.json
656
679
  - spec/fixtures/messages/new_with_recipients.json
657
680
  - spec/fixtures/messages/post.json
658
681
  - spec/fixtures/messages/new.json
659
682
  - spec/fixtures/messages/count.json
660
- - spec/fixtures/messages/get.json
661
- - spec/fixtures/messages/new_empty.json
662
- - spec/fixtures/oauth2_error.json
663
- - spec/fixtures/no_results.json
664
- - spec/fixtures/contacts/tags.json
665
- - spec/fixtures/contacts/new_notify.json
666
- - spec/fixtures/contacts/vow_accounts/post.json
667
- - spec/fixtures/contacts/vow_accounts/new.json
668
- - spec/fixtures/contacts/vow_accounts/get.json
669
- - spec/fixtures/contacts/vow_accounts/edit.json
670
- - spec/fixtures/contacts/post.json
671
- - spec/fixtures/contacts/new.json
672
- - spec/fixtures/contacts/contacts.json
673
- - spec/fixtures/contacts/new_empty.json
674
- - spec/fixtures/contacts/my.json
675
- - spec/fixtures/session.json
676
- - spec/fixtures/listing_meta_translations/get.json
677
- - spec/fixtures/portal/my_non_existant.json
678
- - spec/fixtures/portal/post.json
679
- - spec/fixtures/portal/enable.json
680
- - spec/fixtures/portal/new.json
681
- - spec/fixtures/portal/disable.json
682
- - spec/fixtures/portal/my.json
683
683
  - spec/unit/spark_api_spec.rb
684
- - spec/unit/spark_api/options_hash_spec.rb
685
684
  - spec/unit/spark_api/paginate_spec.rb
686
- - spec/unit/spark_api/configuration/yaml_spec.rb
687
- - spec/unit/spark_api/faraday_middleware_spec.rb
688
- - spec/unit/spark_api/configuration_spec.rb
689
- - spec/unit/spark_api/authentication/oauth2_impl/faraday_middleware_spec.rb
690
- - spec/unit/spark_api/authentication/oauth2_impl/single_session_provider_spec.rb
691
- - spec/unit/spark_api/authentication/oauth2_impl/grant_type_base_spec.rb
685
+ - spec/unit/spark_api/request_spec.rb
686
+ - spec/unit/spark_api/options_hash_spec.rb
692
687
  - spec/unit/spark_api/authentication/base_auth_spec.rb
693
- - spec/unit/spark_api/authentication/api_auth_spec.rb
694
688
  - spec/unit/spark_api/authentication/oauth2_spec.rb
695
- - spec/unit/spark_api/request_spec.rb
696
- - spec/unit/spark_api/multi_client_spec.rb
697
- - spec/unit/spark_api/authentication_spec.rb
698
- - spec/unit/spark_api/primary_array_spec.rb
699
- - spec/unit/spark_api/models/search_template/quick_search_spec.rb
700
- - spec/unit/spark_api/models/contact_spec.rb
701
- - spec/unit/spark_api/models/note_spec.rb
702
- - spec/unit/spark_api/models/listing_meta_translations_spec.rb
703
- - spec/unit/spark_api/models/concerns/destroyable_spec.rb
704
- - spec/unit/spark_api/models/concerns/savable_spec.rb
705
- - spec/unit/spark_api/models/account_spec.rb
706
- - spec/unit/spark_api/models/photo_spec.rb
707
- - spec/unit/spark_api/models/constraint_spec.rb
708
- - spec/unit/spark_api/models/rental_calendar_spec.rb
709
- - spec/unit/spark_api/models/newsfeed_spec.rb
710
- - spec/unit/spark_api/models/fields_spec.rb
711
- - spec/unit/spark_api/models/listing_cart_spec.rb
712
- - spec/unit/spark_api/models/account_report_spec.rb
713
- - spec/unit/spark_api/models/shared_listing_spec.rb
714
- - spec/unit/spark_api/models/system_info_spec.rb
715
- - spec/unit/spark_api/models/base_spec.rb
716
- - spec/unit/spark_api/models/saved_search_spec.rb
717
- - spec/unit/spark_api/models/subresource_spec.rb
718
- - spec/unit/spark_api/models/floplan_spec.rb
689
+ - spec/unit/spark_api/authentication/api_auth_spec.rb
690
+ - spec/unit/spark_api/authentication/oauth2_impl/single_session_provider_spec.rb
691
+ - spec/unit/spark_api/authentication/oauth2_impl/grant_type_base_spec.rb
692
+ - spec/unit/spark_api/authentication/oauth2_impl/faraday_middleware_spec.rb
719
693
  - spec/unit/spark_api/models/notification_spec.rb
694
+ - spec/unit/spark_api/models/floplan_spec.rb
695
+ - spec/unit/spark_api/models/fields_spec.rb
696
+ - spec/unit/spark_api/models/open_house_spec.rb
720
697
  - spec/unit/spark_api/models/document_spec.rb
698
+ - spec/unit/spark_api/models/newsfeed_spec.rb
699
+ - spec/unit/spark_api/models/system_info_spec.rb
700
+ - spec/unit/spark_api/models/tour_of_home_spec.rb
701
+ - spec/unit/spark_api/models/vow_account_spec.rb
721
702
  - spec/unit/spark_api/models/activity_spec.rb
722
- - spec/unit/spark_api/models/standard_fields_spec.rb
703
+ - spec/unit/spark_api/models/listing_meta_translations_spec.rb
704
+ - spec/unit/spark_api/models/news_feed_meta_spec.rb
705
+ - spec/unit/spark_api/models/listing_spec.rb
723
706
  - spec/unit/spark_api/models/sort_spec.rb
724
- - spec/unit/spark_api/models/finders_spec.rb
725
- - spec/unit/spark_api/models/tour_of_home_spec.rb
726
- - spec/unit/spark_api/models/email_link_spec.rb
707
+ - spec/unit/spark_api/models/subresource_spec.rb
708
+ - spec/unit/spark_api/models/connect_prefs_spec.rb
709
+ - spec/unit/spark_api/models/rule_spec.rb
727
710
  - spec/unit/spark_api/models/video_spec.rb
728
- - spec/unit/spark_api/models/message_spec.rb
729
711
  - spec/unit/spark_api/models/virtual_tour_spec.rb
730
- - spec/unit/spark_api/models/open_house_spec.rb
731
- - spec/unit/spark_api/models/property_types_spec.rb
732
- - spec/unit/spark_api/models/defaultable_spec.rb
733
- - spec/unit/spark_api/models/news_feed_meta_spec.rb
734
- - spec/unit/spark_api/models/vow_account_spec.rb
735
- - spec/unit/spark_api/models/listing_spec.rb
712
+ - spec/unit/spark_api/models/listing_cart_spec.rb
713
+ - spec/unit/spark_api/models/message_spec.rb
714
+ - spec/unit/spark_api/models/email_link_spec.rb
715
+ - spec/unit/spark_api/models/standard_fields_spec.rb
736
716
  - spec/unit/spark_api/models/dirty_spec.rb
737
- - spec/unit/spark_api/models/connect_prefs_spec.rb
738
- - spec/unit/spark_api/models/shared_link_spec.rb
717
+ - spec/unit/spark_api/models/account_spec.rb
718
+ - spec/unit/spark_api/models/photo_spec.rb
719
+ - spec/unit/spark_api/models/finders_spec.rb
720
+ - spec/unit/spark_api/models/note_spec.rb
721
+ - spec/unit/spark_api/models/concerns/savable_spec.rb
722
+ - spec/unit/spark_api/models/concerns/destroyable_spec.rb
739
723
  - spec/unit/spark_api/models/portal_spec.rb
740
- - spec/unit/spark_api/models/rule_spec.rb
724
+ - spec/unit/spark_api/models/defaultable_spec.rb
725
+ - spec/unit/spark_api/models/constraint_spec.rb
726
+ - spec/unit/spark_api/models/shared_listing_spec.rb
727
+ - spec/unit/spark_api/models/property_types_spec.rb
728
+ - spec/unit/spark_api/models/search_template/quick_search_spec.rb
729
+ - spec/unit/spark_api/models/contact_spec.rb
730
+ - spec/unit/spark_api/models/rental_calendar_spec.rb
731
+ - spec/unit/spark_api/models/saved_search_spec.rb
732
+ - spec/unit/spark_api/models/account_report_spec.rb
733
+ - spec/unit/spark_api/models/base_spec.rb
734
+ - spec/unit/spark_api/models/shared_link_spec.rb
735
+ - spec/unit/spark_api/faraday_middleware_spec.rb
736
+ - spec/unit/spark_api/configuration_spec.rb
737
+ - spec/unit/spark_api/primary_array_spec.rb
738
+ - spec/unit/spark_api/configuration/yaml_spec.rb
739
+ - spec/unit/spark_api/multi_client_spec.rb
740
+ - spec/unit/spark_api/authentication_spec.rb
741
741
  - spec/spec_helper.rb