oas 2.1.2 → 2.1.3
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.
- checksums.yaml +7 -0
- data/.gitignore +7 -6
- data/.travis.yml +8 -8
- data/Gemfile +4 -4
- data/LICENSE +20 -20
- data/README.md +89 -89
- data/Rakefile +10 -10
- data/lib/oas.rb +22 -22
- data/lib/oas/adxml.rb +91 -74
- data/lib/oas/client.rb +58 -55
- data/lib/oas/configuration.rb +51 -51
- data/lib/oas/error.rb +18 -8
- data/lib/oas/version.rb +3 -3
- data/oas.gemspec +29 -29
- data/test/fixtures/response.xml +14 -14
- data/test/helper.rb +1 -1
- data/test/test_adxml.rb +72 -68
- data/test/test_client.rb +89 -90
- data/test/test_configuration.rb +11 -11
- data/test/test_response.rb +37 -37
- metadata +19 -37
data/test/test_client.rb
CHANGED
@@ -1,91 +1,90 @@
|
|
1
|
-
require 'helper'
|
2
|
-
require 'webmock'
|
3
|
-
|
4
|
-
class TestClient < MiniTest::Unit::TestCase
|
5
|
-
include WebMock::API
|
6
|
-
|
7
|
-
def setup
|
8
|
-
@client = OAS::Client.new(
|
9
|
-
:account => "test_account",
|
10
|
-
:username => "test_user",
|
11
|
-
:password => "test_password"
|
12
|
-
)
|
13
|
-
@request = Class.new do
|
14
|
-
def to_xml; '<AdXML></AdXML>' end
|
15
|
-
end.new
|
16
|
-
end
|
17
|
-
|
18
|
-
def teardown
|
19
|
-
OAS.reset!
|
20
|
-
WebMock.reset!
|
21
|
-
end
|
22
|
-
|
23
|
-
def fixture(file)
|
24
|
-
File.new(File.join(File.expand_path('../fixtures', __FILE__), file))
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_execute_request
|
28
|
-
stub_request(:post, @client.endpoint.to_s)
|
29
|
-
.to_return(:status => 200, :body => fixture('response.xml'))
|
30
|
-
|
31
|
-
assert_kind_of OAS::AdXML, @client.execute(@request)
|
32
|
-
assert_requested(:post, @client.endpoint.to_s, :times => 1) do |req|
|
33
|
-
doc = Nokogiri.XML(req.body)
|
34
|
-
node = doc.xpath("/env:Envelope/env:Body/n1:OasXmlRequest").first
|
35
|
-
return false unless !!node
|
36
|
-
node.xpath("./String_1").first.text == @client.account &&
|
37
|
-
node.xpath("./String_2").first.text == @client.username &&
|
38
|
-
node.xpath("./String_3").first.text == @client.password &&
|
39
|
-
node.xpath("./String_4").first.text == @request.to_xml
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
1
|
+
require 'helper'
|
2
|
+
require 'webmock'
|
3
|
+
|
4
|
+
class TestClient < MiniTest::Unit::TestCase
|
5
|
+
include WebMock::API
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@client = OAS::Client.new(
|
9
|
+
:account => "test_account",
|
10
|
+
:username => "test_user",
|
11
|
+
:password => "test_password"
|
12
|
+
)
|
13
|
+
@request = Class.new do
|
14
|
+
def to_xml; '<AdXML></AdXML>' end
|
15
|
+
end.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def teardown
|
19
|
+
OAS.reset!
|
20
|
+
WebMock.reset!
|
21
|
+
end
|
22
|
+
|
23
|
+
def fixture(file)
|
24
|
+
File.new(File.join(File.expand_path('../fixtures', __FILE__), file))
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_execute_request
|
28
|
+
stub_request(:post, @client.endpoint.to_s)
|
29
|
+
.to_return(:status => 200, :body => fixture('response.xml'))
|
30
|
+
|
31
|
+
assert_kind_of OAS::AdXML, @client.execute(@request)
|
32
|
+
assert_requested(:post, @client.endpoint.to_s, :times => 1) do |req|
|
33
|
+
doc = Nokogiri.XML(req.body)
|
34
|
+
node = doc.xpath("/env:Envelope/env:Body/n1:OasXmlRequest").first
|
35
|
+
return false unless !!node
|
36
|
+
node.xpath("./String_1").first.text == @client.account &&
|
37
|
+
node.xpath("./String_2").first.text == @client.username &&
|
38
|
+
node.xpath("./String_3").first.text == @client.password &&
|
39
|
+
node.xpath("./String_4").first.text == @request.to_xml
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_raise_http_error
|
44
|
+
stub_request(:post, @client.endpoint.to_s).to_return(:status => 599)
|
45
|
+
|
46
|
+
assert_raises OAS::Error::HTTP do
|
47
|
+
@client.execute(@request)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_raise_http_forbidden_error
|
52
|
+
stub_request(:post, @client.endpoint.to_s).to_return(:status => 403)
|
53
|
+
|
54
|
+
assert_raises OAS::Error::HTTP::Forbidden do
|
55
|
+
@client.execute(@request)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_raise_http_internal_server_error_error
|
60
|
+
stub_request(:post, @client.endpoint.to_s).to_return(:status => 500)
|
61
|
+
|
62
|
+
assert_raises OAS::Error::HTTP::InternalServerError do
|
63
|
+
@client.execute(@request)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_raise_http_bad_gateway_error
|
68
|
+
stub_request(:post, @client.endpoint.to_s).to_return(:status => 502)
|
69
|
+
|
70
|
+
assert_raises OAS::Error::HTTP::BadGateway do
|
71
|
+
@client.execute(@request)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_raise_http_service_unavailable_error
|
76
|
+
stub_request(:post, @client.endpoint.to_s).to_return(:status => 503)
|
77
|
+
|
78
|
+
assert_raises OAS::Error::HTTP::ServiceUnavailable do
|
79
|
+
@client.execute(@request)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_raise_http_gateway_timeout_error
|
84
|
+
stub_request(:post, @client.endpoint.to_s).to_return(:status => 504)
|
85
|
+
|
86
|
+
assert_raises OAS::Error::HTTP::GatewayTimeout do
|
87
|
+
@client.execute(@request)
|
88
|
+
end
|
89
|
+
end
|
91
90
|
end
|
data/test/test_configuration.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
class TestConfiguration < MiniTest::Unit::TestCase
|
4
|
-
def test_should_set_configuration_keys
|
5
|
-
OAS::Configuration::VALID_OPTIONS_KEYS.each do |key|
|
6
|
-
OAS.configure do |config|
|
7
|
-
config.send("#{key}=", key)
|
8
|
-
assert_equal key, OAS.send(key)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestConfiguration < MiniTest::Unit::TestCase
|
4
|
+
def test_should_set_configuration_keys
|
5
|
+
OAS::Configuration::VALID_OPTIONS_KEYS.each do |key|
|
6
|
+
OAS.configure do |config|
|
7
|
+
config.send("#{key}=", key)
|
8
|
+
assert_equal key, OAS.send(key)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
12
|
end
|
data/test/test_response.rb
CHANGED
@@ -1,38 +1,38 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
class TestAdXMLResponse < MiniTest::Unit::TestCase
|
4
|
-
def test_successful_response
|
5
|
-
node = <<-EOXML
|
6
|
-
<AdXML>
|
7
|
-
<Response>
|
8
|
-
<Campaign>
|
9
|
-
<Overview>
|
10
|
-
<Id>DPtestcampaign-01</Id>
|
11
|
-
</Overview>
|
12
|
-
</Campaign>
|
13
|
-
</Response>
|
14
|
-
</AdXML>
|
15
|
-
EOXML
|
16
|
-
res = OAS::AdXML::Response.new Nokogiri.XML(node).xpath('/AdXML/Response').first
|
17
|
-
assert res.to_hash.has_key?(:Response)
|
18
|
-
assert res.success?
|
19
|
-
assert_nil res.error_code
|
20
|
-
assert_nil res.error_text
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_unsuccessful_response
|
24
|
-
node = <<-EOXML
|
25
|
-
<AdXML>
|
26
|
-
<Response>
|
27
|
-
<Campaign>
|
28
|
-
<Exception errorCode="512">Campaign ID already exists in Open AdStream</Exception>
|
29
|
-
</Campaign>
|
30
|
-
</Response>
|
31
|
-
</AdXML>
|
32
|
-
EOXML
|
33
|
-
res = OAS::AdXML::Response.new Nokogiri.XML(node).xpath('/AdXML/Response').first
|
34
|
-
refute res.success?
|
35
|
-
assert_equal 512, res.error_code
|
36
|
-
assert_equal 'Campaign ID already exists in Open AdStream', res.error_text
|
37
|
-
end
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestAdXMLResponse < MiniTest::Unit::TestCase
|
4
|
+
def test_successful_response
|
5
|
+
node = <<-EOXML
|
6
|
+
<AdXML>
|
7
|
+
<Response>
|
8
|
+
<Campaign>
|
9
|
+
<Overview>
|
10
|
+
<Id>DPtestcampaign-01</Id>
|
11
|
+
</Overview>
|
12
|
+
</Campaign>
|
13
|
+
</Response>
|
14
|
+
</AdXML>
|
15
|
+
EOXML
|
16
|
+
res = OAS::AdXML::Response.new Nokogiri.XML(node).xpath('/AdXML/Response').first
|
17
|
+
assert res.to_hash.has_key?(:Response)
|
18
|
+
assert res.success?
|
19
|
+
assert_nil res.error_code
|
20
|
+
assert_nil res.error_text
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_unsuccessful_response
|
24
|
+
node = <<-EOXML
|
25
|
+
<AdXML>
|
26
|
+
<Response>
|
27
|
+
<Campaign>
|
28
|
+
<Exception errorCode="512">Campaign ID already exists in Open AdStream</Exception>
|
29
|
+
</Campaign>
|
30
|
+
</Response>
|
31
|
+
</AdXML>
|
32
|
+
EOXML
|
33
|
+
res = OAS::AdXML::Response.new Nokogiri.XML(node).xpath('/AdXML/Response').first
|
34
|
+
refute res.success?
|
35
|
+
assert_equal 512, res.error_code
|
36
|
+
assert_equal 'Campaign ID already exists in Open AdStream', res.error_text
|
37
|
+
end
|
38
38
|
end
|
metadata
CHANGED
@@ -1,94 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
5
|
-
prerelease:
|
4
|
+
version: 2.1.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Damian Caruso
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-07-28 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: nokogiri
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.5'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.5'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: nori
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '2.0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '2.0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: savon
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '2.0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- - ~>
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '2.0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rake
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0.9'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0.9'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: webmock
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- - ~>
|
73
|
+
- - "~>"
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '1.9'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- - ~>
|
80
|
+
- - "~>"
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '1.9'
|
94
83
|
description: Ruby client for the OpenAdstream API
|
@@ -98,8 +87,8 @@ executables: []
|
|
98
87
|
extensions: []
|
99
88
|
extra_rdoc_files: []
|
100
89
|
files:
|
101
|
-
- .gitignore
|
102
|
-
- .travis.yml
|
90
|
+
- ".gitignore"
|
91
|
+
- ".travis.yml"
|
103
92
|
- Gemfile
|
104
93
|
- LICENSE
|
105
94
|
- README.md
|
@@ -120,32 +109,25 @@ files:
|
|
120
109
|
homepage: http://github.com/realmedia/oas-ruby-client
|
121
110
|
licenses:
|
122
111
|
- MIT
|
112
|
+
metadata: {}
|
123
113
|
post_install_message:
|
124
114
|
rdoc_options: []
|
125
115
|
require_paths:
|
126
116
|
- lib
|
127
117
|
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
-
none: false
|
129
118
|
requirements:
|
130
|
-
- -
|
119
|
+
- - ">="
|
131
120
|
- !ruby/object:Gem::Version
|
132
121
|
version: '0'
|
133
|
-
segments:
|
134
|
-
- 0
|
135
|
-
hash: -872956227
|
136
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
123
|
requirements:
|
139
|
-
- -
|
124
|
+
- - ">="
|
140
125
|
- !ruby/object:Gem::Version
|
141
126
|
version: '0'
|
142
|
-
segments:
|
143
|
-
- 0
|
144
|
-
hash: -872956227
|
145
127
|
requirements: []
|
146
128
|
rubyforge_project: oas
|
147
|
-
rubygems_version:
|
129
|
+
rubygems_version: 2.2.2
|
148
130
|
signing_key:
|
149
|
-
specification_version:
|
131
|
+
specification_version: 4
|
150
132
|
summary: Ruby client for the OpenAdstream API
|
151
133
|
test_files: []
|