rets 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](https://secure.travis-ci.org/estately/rets.png?branch=master)](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: "[![Build Status](https://secure.travis-ci.org/estately/rets.png?branch=master)](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
|