active_forms 0.3.0 → 0.3.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.
- data/lib/active_forms/request.rb +23 -7
- data/lib/active_forms/version.rb +1 -1
- data/lib/active_forms.rb +4 -1
- data/test/active_forms/application_print_test.rb +1 -1
- data/test/active_forms/application_test.rb +2 -2
- data/test/active_forms/entry_printout_test.rb +1 -1
- data/test/active_forms/entry_test.rb +4 -4
- data/test/active_forms/form_test.rb +2 -2
- data/test/active_forms/form_version_test.rb +1 -1
- data/test/active_forms/request_test.rb +26 -0
- data/test/active_forms/token_test.rb +1 -1
- data/test/fixtures/40x.html +13 -0
- data/test/fixtures/parse_error.html +2 -0
- data/test/test_helper.rb +3 -3
- metadata +7 -3
data/lib/active_forms/request.rb
CHANGED
@@ -91,14 +91,30 @@ module ActiveForms
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def verify_response(response)
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
94
|
+
exception = nil
|
95
|
+
|
96
|
+
begin
|
97
|
+
# force parsing response to detect parsing errors
|
98
|
+
response.parsed_response
|
99
|
+
|
100
|
+
ActiveForms.log("[ActiveForms] Response: #{response}")
|
101
|
+
if response["error"]
|
102
|
+
begin
|
103
|
+
klass = ("ActiveForms::" << response["error"]["code"].downcase.camelize).constantize
|
104
|
+
exception = klass.new(response["error"]["message"])
|
105
|
+
rescue NameError, NoMethodError
|
106
|
+
exception = Error.new("Unknown exception: #{response["error"].inspect}")
|
107
|
+
end
|
108
|
+
elsif response.response.code !~ /^20\d$/
|
109
|
+
exception = Error.new("Request returned status #{response.response.code} and does include properly formatted error message.")
|
101
110
|
end
|
111
|
+
rescue MultiXml::ParseError
|
112
|
+
exception = ParseError.new($!.message)
|
113
|
+
end
|
114
|
+
|
115
|
+
unless exception.nil?
|
116
|
+
exception.response = response
|
117
|
+
raise exception
|
102
118
|
end
|
103
119
|
end
|
104
120
|
end
|
data/lib/active_forms/version.rb
CHANGED
data/lib/active_forms.rb
CHANGED
@@ -34,7 +34,9 @@ module ActiveForms
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
class Error < StandardError
|
37
|
+
class Error < StandardError
|
38
|
+
attr_accessor :response
|
39
|
+
end
|
38
40
|
|
39
41
|
class ApiKeyInvalid < Error; end
|
40
42
|
class ApiSigInvalid < Error; end
|
@@ -56,6 +58,7 @@ module ActiveForms
|
|
56
58
|
class MissingVendor < Error; end
|
57
59
|
class NullResponse < Error; end
|
58
60
|
class OptionNotFound < Error; end
|
61
|
+
class ParseError < Error; end
|
59
62
|
class ResourceNotSupported < Error; end
|
60
63
|
class TemplateNotFound < Error; end
|
61
64
|
class Unauthorized < Error; end
|
@@ -38,7 +38,7 @@ class ActiveForms::ApplicationPrintTest < Test::Unit::TestCase
|
|
38
38
|
|
39
39
|
context "when sent ActiveForms::ApplicationPrint.find with form code and application number" do
|
40
40
|
setup do
|
41
|
-
stub_get(/applicationprint/, success_response("get_applicationprint"))
|
41
|
+
stub_get(/applicationprint/, success_response("get_applicationprint.xml"))
|
42
42
|
@application_print = ActiveForms::ApplicationPrint.find(:apiFormCode => "credit_card_application", :apiNumber => "23456")
|
43
43
|
end
|
44
44
|
|
@@ -36,7 +36,7 @@ class ActiveForms::ApplicationTest < Test::Unit::TestCase
|
|
36
36
|
|
37
37
|
context "when sent ActiveForms::Application.all with multi-response" do
|
38
38
|
setup do
|
39
|
-
stub_get(/applications/, success_response("get_applications"))
|
39
|
+
stub_get(/applications/, success_response("get_applications.xml"))
|
40
40
|
@applications = ActiveForms::Application.all
|
41
41
|
end
|
42
42
|
|
@@ -67,7 +67,7 @@ class ActiveForms::ApplicationTest < Test::Unit::TestCase
|
|
67
67
|
|
68
68
|
context "when sent ActiveForms::Application.all with single-response" do
|
69
69
|
setup do
|
70
|
-
stub_get(/applications/, success_response("get_applications_single"))
|
70
|
+
stub_get(/applications/, success_response("get_applications_single.xml"))
|
71
71
|
@applications = ActiveForms::Application.all
|
72
72
|
end
|
73
73
|
|
@@ -38,7 +38,7 @@ class ActiveForms::EntryPrintoutTest < Test::Unit::TestCase
|
|
38
38
|
|
39
39
|
context "when sent ActiveForms::EntryPrintout.find with form code and application number" do
|
40
40
|
setup do
|
41
|
-
stub_get(/entryprintout/, success_response("get_entryprintout"))
|
41
|
+
stub_get(/entryprintout/, success_response("get_entryprintout.xml"))
|
42
42
|
@entry_printout = ActiveForms::EntryPrintout.find(:formCode => "credit_card_entry", :number => "23456")
|
43
43
|
end
|
44
44
|
|
@@ -36,7 +36,7 @@ class ActiveForms::EntryTest < Test::Unit::TestCase
|
|
36
36
|
|
37
37
|
context "when sent ActiveForms::Entry.all with multi-response" do
|
38
38
|
setup do
|
39
|
-
stub_get(/entries/, success_response("get_entries"))
|
39
|
+
stub_get(/entries/, success_response("get_entries.xml"))
|
40
40
|
@entries = ActiveForms::Entry.all
|
41
41
|
end
|
42
42
|
|
@@ -67,7 +67,7 @@ class ActiveForms::EntryTest < Test::Unit::TestCase
|
|
67
67
|
|
68
68
|
context "when sent ActiveForms::Entry.all with single-response" do
|
69
69
|
setup do
|
70
|
-
stub_get(/entries/, success_response("get_entries_single"))
|
70
|
+
stub_get(/entries/, success_response("get_entries_single.xml"))
|
71
71
|
@entries = ActiveForms::Entry.all
|
72
72
|
end
|
73
73
|
|
@@ -87,7 +87,7 @@ class ActiveForms::EntryTest < Test::Unit::TestCase
|
|
87
87
|
|
88
88
|
context "when post entry data by ActiveForms::Entry.create" do
|
89
89
|
setup do
|
90
|
-
stub_post(/entrydata/, success_response("post_entrydata"))
|
90
|
+
stub_post(/entrydata/, success_response("post_entrydata.xml"))
|
91
91
|
@entry = ActiveForms::Entry.create :apiFormCode => 'credit_card_entry'
|
92
92
|
end
|
93
93
|
|
@@ -109,7 +109,7 @@ class ActiveForms::EntryTest < Test::Unit::TestCase
|
|
109
109
|
setup do
|
110
110
|
@response = { :status => ["204", "No content"], :content_type => "text/xml"}
|
111
111
|
stub_delete(/entrydata/, @response)
|
112
|
-
stub_get(/entries/, success_response("get_entries"))
|
112
|
+
stub_get(/entries/, success_response("get_entries.xml"))
|
113
113
|
@entries = ActiveForms::Entry.all
|
114
114
|
end
|
115
115
|
|
@@ -10,7 +10,7 @@ class ActiveForms::FormTest < Test::Unit::TestCase
|
|
10
10
|
|
11
11
|
context "when sent ActiveForms::Form.all with multi-response" do
|
12
12
|
setup do
|
13
|
-
stub_get(/forms/, success_response("get_forms"))
|
13
|
+
stub_get(/forms/, success_response("get_forms.xml"))
|
14
14
|
@forms = ActiveForms::Form.all
|
15
15
|
end
|
16
16
|
|
@@ -41,7 +41,7 @@ class ActiveForms::FormTest < Test::Unit::TestCase
|
|
41
41
|
|
42
42
|
context "when sent ActiveForms::Form.all with single-response" do
|
43
43
|
setup do
|
44
|
-
stub_get(/forms/, success_response("get_forms_single"))
|
44
|
+
stub_get(/forms/, success_response("get_forms_single.xml"))
|
45
45
|
@forms = ActiveForms::Form.all
|
46
46
|
end
|
47
47
|
|
@@ -10,7 +10,7 @@ class ActiveForms::FormVersionTest < Test::Unit::TestCase
|
|
10
10
|
|
11
11
|
context "when send ActiveForms::FormVersion.all with multi-response" do
|
12
12
|
setup do
|
13
|
-
stub_get(/forminfo/, success_response("get_forminfo"))
|
13
|
+
stub_get(/forminfo/, success_response("get_forminfo.xml"))
|
14
14
|
@versions = ActiveForms::FormVersion.all :apiFormCode => 'hipoteka'
|
15
15
|
end
|
16
16
|
|
@@ -111,5 +111,31 @@ class ActiveForms::RequestTest < Test::Unit::TestCase
|
|
111
111
|
assert_equal @response.parsed_response, request.perform.parsed_response
|
112
112
|
end
|
113
113
|
end
|
114
|
+
|
115
|
+
context "Request that returns not properly formatted response with status != 20x" do
|
116
|
+
setup do
|
117
|
+
stub_get(/.+/, error_response("40x.html"))
|
118
|
+
@request = ActiveForms::Request.new(:get, "entries")
|
119
|
+
end
|
120
|
+
|
121
|
+
should "raise Error exception" do
|
122
|
+
assert_raise ActiveForms::Error, "Request returned status 401 and does include properly formatted error message." do
|
123
|
+
@request.perform
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context "Request that returns invalid XML" do
|
129
|
+
setup do
|
130
|
+
stub_get(/.+/, error_response("parse_error.html"))
|
131
|
+
@request = ActiveForms::Request.new(:get, "entries")
|
132
|
+
end
|
133
|
+
|
134
|
+
should "raise ParseError exception" do
|
135
|
+
assert_raise ActiveForms::ParseError do
|
136
|
+
@request.perform
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
114
140
|
end
|
115
141
|
end
|
@@ -10,7 +10,7 @@ class ActiveForms::EntryTest < Test::Unit::TestCase
|
|
10
10
|
|
11
11
|
context "when sent ActiveForms::Token.all with multi-response" do
|
12
12
|
setup do
|
13
|
-
stub_get(/formaccesstokens/, success_response("get_formaccesstokens"))
|
13
|
+
stub_get(/formaccesstokens/, success_response("get_formaccesstokens.xml"))
|
14
14
|
@tokens = ActiveForms::Token.all :apiFormCode => 'hipoteka'
|
15
15
|
end
|
16
16
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<html><head>
|
2
|
+
<title>401 Authorization Required</title>
|
3
|
+
</head><body>
|
4
|
+
<h1>Authorization Required</h1>
|
5
|
+
<p>This server could not verify that you
|
6
|
+
are authorized to access the document
|
7
|
+
requested. Either you supplied the wrong
|
8
|
+
credentials (e.g., bad password), or your
|
9
|
+
browser doesn't understand how to supply
|
10
|
+
the credentials required.</p>
|
11
|
+
<hr/>
|
12
|
+
<address>Apache Server at activeforms.com Port 443</address>
|
13
|
+
</body></html>
|
data/test/test_helper.rb
CHANGED
@@ -53,7 +53,7 @@ class Test::Unit::TestCase
|
|
53
53
|
response = {
|
54
54
|
:status => ["200", "OK"],
|
55
55
|
:content_type => "text/xml",
|
56
|
-
:body => fixture(file || "success")
|
56
|
+
:body => fixture(file || "success.xml")
|
57
57
|
}
|
58
58
|
end
|
59
59
|
|
@@ -61,12 +61,12 @@ class Test::Unit::TestCase
|
|
61
61
|
response = {
|
62
62
|
:status => ["401", "Unauthorized"],
|
63
63
|
:content_type => "text/xml",
|
64
|
-
:body => fixture(file || "error")
|
64
|
+
:body => fixture(file || "error.xml")
|
65
65
|
}
|
66
66
|
end
|
67
67
|
|
68
68
|
def fixture(file)
|
69
|
-
File.read(File.join(File.dirname(__FILE__), "fixtures", "#{file}
|
69
|
+
File.read(File.join(File.dirname(__FILE__), "fixtures", "#{file}"))
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_forms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Micha\xC5\x82 Szajbe"
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- test/active_forms/request_test.rb
|
119
119
|
- test/active_forms/token_test.rb
|
120
120
|
- test/active_forms_test.rb
|
121
|
+
- test/fixtures/40x.html
|
121
122
|
- test/fixtures/error.xml
|
122
123
|
- test/fixtures/get_applicationdata.xml
|
123
124
|
- test/fixtures/get_applicationprint.xml
|
@@ -131,6 +132,7 @@ files:
|
|
131
132
|
- test/fixtures/get_forminfo.xml
|
132
133
|
- test/fixtures/get_forms.xml
|
133
134
|
- test/fixtures/get_forms_single.xml
|
135
|
+
- test/fixtures/parse_error.html
|
134
136
|
- test/fixtures/post_entrydata.xml
|
135
137
|
- test/fixtures/success.xml
|
136
138
|
- test/test_helper.rb
|
@@ -178,6 +180,7 @@ test_files:
|
|
178
180
|
- test/active_forms/request_test.rb
|
179
181
|
- test/active_forms/token_test.rb
|
180
182
|
- test/active_forms_test.rb
|
183
|
+
- test/fixtures/40x.html
|
181
184
|
- test/fixtures/error.xml
|
182
185
|
- test/fixtures/get_applicationdata.xml
|
183
186
|
- test/fixtures/get_applicationprint.xml
|
@@ -191,6 +194,7 @@ test_files:
|
|
191
194
|
- test/fixtures/get_forminfo.xml
|
192
195
|
- test/fixtures/get_forms.xml
|
193
196
|
- test/fixtures/get_forms_single.xml
|
197
|
+
- test/fixtures/parse_error.html
|
194
198
|
- test/fixtures/post_entrydata.xml
|
195
199
|
- test/fixtures/success.xml
|
196
200
|
- test/test_helper.rb
|