forked from lostisland/faraday_middleware
/
parse_yaml_spec.rb
53 lines (43 loc) · 1.38 KB
/
parse_yaml_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
require 'helper'
require 'faraday_middleware/response/parse_yaml'
describe FaradayMiddleware::ParseYaml, :type => :response do
context "no type matching" do
it "doesn't change nil body" do
process(nil).body.should be_nil
end
it "returns false for empty body" do
process('').body.should be_false
end
it "parses yaml body" do
response = process('a: 1')
response.body.should eql('a' => 1)
response.env[:raw_body].should be_nil
end
end
context "with preserving raw" do
let(:options) { {:preserve_raw => true} }
it "parses yaml body" do
response = process('a: 1')
response.body.should eql('a' => 1)
response.env[:raw_body].should eql('a: 1')
end
it "can opt out of preserving raw" do
response = process('a: 1', nil, :preserve_raw => false)
response.env[:raw_body].should be_nil
end
end
context "with regexp type matching" do
let(:options) { {:content_type => /\byaml$/} }
it "parses json body of correct type" do
response = process('a: 1', 'application/x-yaml')
response.body.should eql('a' => 1)
end
it "ignores json body of incorrect type" do
response = process('a: 1', 'text/yaml-xml')
response.body.should eql('a: 1')
end
end
it "chokes on invalid yaml" do
expect { process('{!') }.to raise_error(Faraday::Error::ParsingError)
end
end