knu 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/knu/knu.rb +13 -2
- data/lib/knu/version.rb +1 -1
- data/spec/knu/knu_spec.rb +21 -2
- metadata +1 -1
data/lib/knu/knu.rb
CHANGED
@@ -2,6 +2,16 @@
|
|
2
2
|
|
3
3
|
class Knu
|
4
4
|
|
5
|
+
class InvalidRequest < Exception
|
6
|
+
attr_reader :code
|
7
|
+
def initialize(code, message)
|
8
|
+
@code = code
|
9
|
+
super(message)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class InvalidQuery < InvalidRequest; end
|
14
|
+
|
5
15
|
WEBSERVICE_URL = "https://c.knu.com.br/webservice"
|
6
16
|
RETURN_FORMATS = {:json => 2, :xml => 1}
|
7
17
|
STATUS_OK = "0"
|
@@ -82,17 +92,18 @@ class Knu
|
|
82
92
|
def handle_response(response)
|
83
93
|
data = parse_response(response)
|
84
94
|
validate_data!(data)
|
95
|
+
|
85
96
|
data["dados"]["consulta"]["root"]
|
86
97
|
end
|
87
98
|
|
88
99
|
def validate_data!(data)
|
89
100
|
dados = data["dados"]
|
90
101
|
unless (status = dados["status"]) == STATUS_OK
|
91
|
-
raise
|
102
|
+
raise InvalidRequest.new(status, dados["desc"])
|
92
103
|
else
|
93
104
|
root = dados["consulta"]["root"]
|
94
105
|
if error = root["cod_erro"]
|
95
|
-
raise
|
106
|
+
raise InvalidQuery.new(error, root["desc_erro"])
|
96
107
|
end
|
97
108
|
end
|
98
109
|
rescue => ex
|
data/lib/knu/version.rb
CHANGED
data/spec/knu/knu_spec.rb
CHANGED
@@ -92,11 +92,30 @@ describe Knu do
|
|
92
92
|
end
|
93
93
|
it "error category 1" do
|
94
94
|
data = Crack::XML.parse(invalid_response)
|
95
|
-
expect { subject.validate_data!(data) }.to raise_error
|
95
|
+
expect { subject.validate_data!(data) }.to raise_error(Knu::InvalidRequest)
|
96
96
|
end
|
97
97
|
it "error category 2" do
|
98
98
|
data = Crack::XML.parse(invalid_response_content)
|
99
|
-
expect { subject.validate_data!(data) }.to raise_error
|
99
|
+
expect { subject.validate_data!(data) }.to raise_error(Knu::InvalidQuery)
|
100
|
+
end
|
101
|
+
it "unknow error" do
|
102
|
+
data = {"invalid" => "response"}
|
103
|
+
expect { subject.validate_data!(data) }.to raise_error(RuntimeError)
|
104
|
+
end
|
105
|
+
|
106
|
+
it "InvalidResquest contains code and message" do
|
107
|
+
data = Crack::XML.parse(invalid_response)
|
108
|
+
expect { subject.validate_data!(data) }.to raise_error { |ex|
|
109
|
+
ex.code.should == "55"
|
110
|
+
ex.message.should == "Xml inválido"
|
111
|
+
}
|
112
|
+
end
|
113
|
+
it "InvalidQuery contains code and message" do
|
114
|
+
data = Crack::XML.parse(invalid_response_content)
|
115
|
+
expect { subject.validate_data!(data) }.to raise_error { |ex|
|
116
|
+
ex.code.should == "6"
|
117
|
+
ex.message.should == "Erro codigo 6: Parametro invalido."
|
118
|
+
}
|
100
119
|
end
|
101
120
|
end
|
102
121
|
|