forked from lostisland/faraday_middleware
-
Notifications
You must be signed in to change notification settings - Fork 1
/
parse_yaml_spec.rb
53 lines (43 loc) · 1.41 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
expect(process(nil).body).to be_nil
end
it "returns false for empty body" do
expect(process('').body).to be_false
end
it "parses yaml body" do
response = process('a: 1')
expect(response.body).to eq('a' => 1)
expect(response.env[:raw_body]).to be_nil
end
end
context "with preserving raw" do
let(:options) { {:preserve_raw => true} }
it "parses yaml body" do
response = process('a: 1')
expect(response.body).to eq('a' => 1)
expect(response.env[:raw_body]).to eq('a: 1')
end
it "can opt out of preserving raw" do
response = process('a: 1', nil, :preserve_raw => false)
expect(response.env[:raw_body]).to 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')
expect(response.body).to eq('a' => 1)
end
it "ignores json body of incorrect type" do
response = process('a: 1', 'text/yaml-xml')
expect(response.body).to eq('a: 1')
end
end
it "chokes on invalid yaml" do
expect{ process('{!') }.to raise_error(Faraday::Error::ParsingError)
end
end