rets 0.8.0 → 0.8.1
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/CHANGELOG.md +10 -6
- data/Rakefile +1 -1
- data/lib/rets.rb +1 -1
- data/test/test_error_checker.rb +69 -0
- data/test/test_http_client.rb +49 -0
- metadata +19 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40ba28e99fa147a1f23f7cf4e7e04fcd5c9a4218
|
4
|
+
data.tar.gz: 8abca9ffb82c600b2f0ca9c6caf774c17eb0a4cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c510f13d8823562c48a2fd87421ada813c3766846082c6dd8bdad442c4fe4922de65cbd0d2d486b7fcbe8fb48c69651b61fc844812bbc2e7b307152ca327d2e1
|
7
|
+
data.tar.gz: 19f7bd93de8858158118108266f78d344c65c23f9f7c68ed20e19b7a77b0d42f4d187654c3a18ff817d5e35b1480b5e86741bd88acdf2a483a9510feb00777f8
|
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,15 @@
|
|
1
|
+
### 0.8.1 / 2015-06-09
|
2
|
+
|
3
|
+
* fix: actually make the httpclient version more specific this time
|
4
|
+
|
1
5
|
### 0.8.0 / 2015-06-09
|
2
6
|
|
3
|
-
* reduce memory usage on parsing metadata
|
4
|
-
* correctly raise authorization error when given XHTML instead of XML
|
5
|
-
* unescape HTML encoded responses
|
6
|
-
* make httpclient version requirement more specific
|
7
|
-
* add ability to print metadata to a file
|
8
|
-
* remove Gemfile.lock from repository
|
7
|
+
* feature: reduce memory usage on parsing metadata
|
8
|
+
* fix: correctly raise authorization error when given XHTML instead of XML
|
9
|
+
* fix: unescape HTML encoded responses
|
10
|
+
* fix: make httpclient version requirement more specific
|
11
|
+
* feature: add ability to print metadata to a file
|
12
|
+
* fix: remove Gemfile.lock from repository
|
9
13
|
|
10
14
|
### 0.7.0 / 2015-01-16
|
11
15
|
|
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ Hoe.plugin :gemspec
|
|
9
9
|
Hoe.spec 'rets' do
|
10
10
|
developer 'Estately, Inc. Open Source', 'opensource@estately.com'
|
11
11
|
|
12
|
-
extra_deps << [ "httpclient", "~> 2.4" ]
|
12
|
+
extra_deps << [ "httpclient", "~> 2.4.0" ]
|
13
13
|
extra_deps << [ "nokogiri", "~> 1.5" ]
|
14
14
|
|
15
15
|
extra_dev_deps << [ "mocha", "~> 0.11" ]
|
data/lib/rets.rb
CHANGED
@@ -0,0 +1,69 @@
|
|
1
|
+
require_relative "helper"
|
2
|
+
|
3
|
+
class TestErrorChecker < MiniTest::Test
|
4
|
+
def test_check_with_status_code_412
|
5
|
+
response = mock
|
6
|
+
response.stubs(:status_code).returns(412)
|
7
|
+
response.stubs(:body).returns('junk')
|
8
|
+
assert_raises Rets::HttpError do
|
9
|
+
Rets::Parser::ErrorChecker.check(response)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_401_with_empty_body_is_auth_failure
|
14
|
+
# 401 with no body is an auth failure
|
15
|
+
response = mock
|
16
|
+
response.stubs(:status_code).returns(401)
|
17
|
+
response.stubs(:ok?).returns(false)
|
18
|
+
response.stubs(:body).returns('')
|
19
|
+
assert_raises Rets::AuthorizationFailure do
|
20
|
+
Rets::Parser::ErrorChecker.check(response)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_401_with_html_body_is_auth_failure
|
25
|
+
# 401 with html body returns auth failure
|
26
|
+
response = mock
|
27
|
+
response.stubs(:status_code).returns(401)
|
28
|
+
response.stubs(:ok?).returns(false)
|
29
|
+
response.stubs(:body).returns(HTML_AUTH_FAILURE)
|
30
|
+
assert_raises Rets::AuthorizationFailure do
|
31
|
+
Rets::Parser::ErrorChecker.check(response)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_401_with_xhtml_body_is_auth_failure
|
36
|
+
# 401 with xhtml body returns auth failure
|
37
|
+
response = mock
|
38
|
+
response.stubs(:status_code).returns(401)
|
39
|
+
response.stubs(:ok?).returns(false)
|
40
|
+
response.stubs(:body).returns(XHTML_AUTH_FAILURE)
|
41
|
+
assert_raises Rets::AuthorizationFailure do
|
42
|
+
Rets::Parser::ErrorChecker.check(response)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_no_records_found_failure
|
47
|
+
response = mock
|
48
|
+
response.stubs(:body).returns(RETS_NO_RECORDS_ERROR)
|
49
|
+
assert_raises Rets::NoRecordsFound do
|
50
|
+
Rets::Parser::ErrorChecker.check(response)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_no_object_found_failure
|
55
|
+
response = mock
|
56
|
+
response.stubs(:body).returns(RETS_NO_OBJECT_ERROR)
|
57
|
+
assert_raises Rets::NoObjectFound do
|
58
|
+
Rets::Parser::ErrorChecker.check(response)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_invalid_request_failure
|
63
|
+
response = mock
|
64
|
+
response.stubs(:body).returns(RETS_INVALID_REQUEST_ERROR)
|
65
|
+
assert_raises Rets::InvalidRequest do
|
66
|
+
Rets::Parser::ErrorChecker.check(response)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require_relative "helper"
|
2
|
+
|
3
|
+
class TestHttpClient < MiniTest::Test
|
4
|
+
def setup
|
5
|
+
@cm = WebAgent::CookieManager.new
|
6
|
+
|
7
|
+
@http = HTTPClient.new
|
8
|
+
@http.cookie_manager = @cm
|
9
|
+
|
10
|
+
@logger = Rets::Client::FakeLogger.new
|
11
|
+
@logger.stubs(:debug?).returns(false)
|
12
|
+
|
13
|
+
@http_client = Rets::HttpClient.new(@http, {}, @logger, "http://rets.rets.com/somestate/login.aspx")
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_http_cookie_with_webagent_cookie
|
17
|
+
cookie1 = "RETS-Session-ID=879392834723043209; path=/; domain=rets.rets.com; expires=Wednesday, 31-Dec-2037 12:00:00 GMT"
|
18
|
+
@cm.parse(cookie1, URI.parse("http://www.rets.rets.com"))
|
19
|
+
|
20
|
+
cookie2 = "Foo=Bar; path=/; domain=rets.rets.com; expires=Wednesday, 31-Dec-2037 12:00:00 GMT"
|
21
|
+
@cm.parse(cookie2, URI.parse("http://www.rets.rets.com"))
|
22
|
+
|
23
|
+
assert_equal "879392834723043209", @http_client.http_cookie('RETS-Session-ID')
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_http_cookie_without_webagent_cookie
|
27
|
+
assert_equal nil, @http_client.http_cookie('RETS-Session-ID')
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_http_get_delegates_to_client
|
31
|
+
url = 'foo@example.com'
|
32
|
+
response = stub(:response)
|
33
|
+
response.stubs(:body).returns('response data')
|
34
|
+
|
35
|
+
@http.stubs(:get).with(url, anything, anything).returns(response)
|
36
|
+
|
37
|
+
assert_equal @http_client.http_get(url, {}), response
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_http_post_delegates_to_client
|
41
|
+
url = 'foo@example.com'
|
42
|
+
response = stub(:response)
|
43
|
+
response.stubs(:body).returns('response data')
|
44
|
+
|
45
|
+
@http.stubs(:post).with(url, anything, anything).returns(response)
|
46
|
+
|
47
|
+
assert_equal @http_client.http_post(url, {}), response
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Estately, Inc. Open Source
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httpclient
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.4.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.4.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: nokogiri
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '3.
|
103
|
+
version: '3.6'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '3.
|
110
|
+
version: '3.6'
|
111
111
|
description: |-
|
112
112
|
[](http://travis-ci.org/estately/rets)
|
113
113
|
A pure-ruby library for fetching data from [RETS] servers.
|
@@ -147,14 +147,15 @@ files:
|
|
147
147
|
- test/fixtures.rb
|
148
148
|
- test/helper.rb
|
149
149
|
- test/test_client.rb
|
150
|
+
- test/test_error_checker.rb
|
151
|
+
- test/test_http_client.rb
|
150
152
|
- test/test_locking_http_client.rb
|
151
153
|
- test/test_metadata.rb
|
152
154
|
- test/test_parser_compact.rb
|
153
155
|
- test/test_parser_multipart.rb
|
154
156
|
- test/vcr_cassettes/unauthorized_response.yml
|
155
157
|
homepage: http://github.com/estately/rets
|
156
|
-
licenses:
|
157
|
-
- MIT
|
158
|
+
licenses: []
|
158
159
|
metadata: {}
|
159
160
|
post_install_message:
|
160
161
|
rdoc_options:
|
@@ -173,10 +174,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
174
|
- !ruby/object:Gem::Version
|
174
175
|
version: '0'
|
175
176
|
requirements: []
|
176
|
-
rubyforge_project:
|
177
|
-
rubygems_version: 2.2.
|
177
|
+
rubyforge_project: rets
|
178
|
+
rubygems_version: 2.2.0
|
178
179
|
signing_key:
|
179
180
|
specification_version: 4
|
180
181
|
summary: "[](http://travis-ci.org/estately/rets)
|
181
182
|
A pure-ruby library for fetching data from [RETS] servers"
|
182
|
-
test_files:
|
183
|
+
test_files:
|
184
|
+
- test/test_client.rb
|
185
|
+
- test/test_error_checker.rb
|
186
|
+
- test/test_http_client.rb
|
187
|
+
- test/test_locking_http_client.rb
|
188
|
+
- test/test_metadata.rb
|
189
|
+
- test/test_parser_compact.rb
|
190
|
+
- test/test_parser_multipart.rb
|