google-dfp-api 0.22.0 → 1.0.0
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 +4 -4
- data/ChangeLog +7 -0
- data/dfp_api.yml +0 -3
- data/lib/dfp_api/api_config.rb +10 -18
- data/lib/dfp_api/version.rb +1 -1
- metadata +6 -14
- data/test/bugs/test_issue_00000007.rb +0 -113
- data/test/bugs/test_issue_00000081.rb +0 -110
- data/test/dfp_api/test_credential_handler.rb +0 -62
- data/test/dfp_api/test_dfp_api.rb +0 -118
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c397f20b48dccdbd614f7987afba9304b4405471
|
|
4
|
+
data.tar.gz: 07f20684de0d8c47ca8b1de220422f5124d7e292
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ab2045bdfff1df0320cb8b96cf4d6731189c1927857e6319af40cf699e53844088a35bc0f44eabc064c9a1af51b7481ef97956aba525e2decbb65fe6779942bd
|
|
7
|
+
data.tar.gz: d8832b6c9a3d686942474b236acc77d74e913b6f3db7104d6bd843ebf7cd4e140da6d6820cd0d045b4f8725f970e489c569f52cd9f06b7ffe4dfa29a50525188
|
data/ChangeLog
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
1.0.0:
|
|
2
|
+
- Major version bump. The library has been stable and feature complete for
|
|
3
|
+
some time, and this is more accurately reflected by this version number.
|
|
4
|
+
- No longer include test files in the built gem.
|
|
5
|
+
- Removing support for multiple environments.
|
|
6
|
+
- Require google-ads-common 1.0.0 or later from now on.
|
|
7
|
+
|
|
1
8
|
0.22.0:
|
|
2
9
|
- Added support for v201708.
|
|
3
10
|
- Removed support for v201608.
|
data/dfp_api.yml
CHANGED
|
@@ -39,9 +39,6 @@
|
|
|
39
39
|
|
|
40
40
|
# Required for all calls other than GetAllNetworks and MakeTestNetwork.
|
|
41
41
|
:network_code: INSERT_NETWORK_CODE_HERE
|
|
42
|
-
:service:
|
|
43
|
-
# Only production environment is now available.
|
|
44
|
-
:environment: PRODUCTION
|
|
45
42
|
:connection:
|
|
46
43
|
# Enable to request all responses to be compressed.
|
|
47
44
|
:enable_gzip: false
|
data/lib/dfp_api/api_config.rb
CHANGED
|
@@ -32,7 +32,6 @@ module DfpApi
|
|
|
32
32
|
|
|
33
33
|
# Set defaults
|
|
34
34
|
DEFAULT_VERSION = :v201708
|
|
35
|
-
DEFAULT_ENVIRONMENT = :PRODUCTION
|
|
36
35
|
LATEST_VERSION = :v201708
|
|
37
36
|
|
|
38
37
|
# Set other constants
|
|
@@ -139,16 +138,14 @@ module DfpApi
|
|
|
139
138
|
:UserTeamAssociationService, :WorkflowRequestService],
|
|
140
139
|
}
|
|
141
140
|
|
|
142
|
-
# Configure the
|
|
143
|
-
@@
|
|
144
|
-
:
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
:v201708 => 'https://ads.google.com/apis/ads/publisher/',
|
|
151
|
-
}
|
|
141
|
+
# Configure the base URL for each version and scope.
|
|
142
|
+
@@config = {
|
|
143
|
+
:oauth_scope => 'https://www.googleapis.com/auth/dfp',
|
|
144
|
+
:header_ns => 'https://www.google.com/apis/ads/publisher/',
|
|
145
|
+
:v201611 => 'https://ads.google.com/apis/ads/publisher/',
|
|
146
|
+
:v201702 => 'https://ads.google.com/apis/ads/publisher/',
|
|
147
|
+
:v201705 => 'https://ads.google.com/apis/ads/publisher/',
|
|
148
|
+
:v201708 => 'https://ads.google.com/apis/ads/publisher/'
|
|
152
149
|
}
|
|
153
150
|
|
|
154
151
|
public
|
|
@@ -158,10 +155,6 @@ module DfpApi
|
|
|
158
155
|
DEFAULT_VERSION
|
|
159
156
|
end
|
|
160
157
|
|
|
161
|
-
def self.default_environment
|
|
162
|
-
DEFAULT_ENVIRONMENT
|
|
163
|
-
end
|
|
164
|
-
|
|
165
158
|
def self.latest_version
|
|
166
159
|
LATEST_VERSION
|
|
167
160
|
end
|
|
@@ -174,9 +167,8 @@ module DfpApi
|
|
|
174
167
|
@@service_config
|
|
175
168
|
end
|
|
176
169
|
|
|
177
|
-
def self.
|
|
178
|
-
|
|
179
|
-
@@environment_config[environment][key] : nil
|
|
170
|
+
def self.config(key)
|
|
171
|
+
@@config[key]
|
|
180
172
|
end
|
|
181
173
|
|
|
182
174
|
def self.subdir_config
|
data/lib/dfp_api/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: google-dfp-api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Danial Klimkin
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2017-
|
|
12
|
+
date: 2017-09-22 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: google-ads-common
|
|
@@ -17,14 +17,14 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - "~>"
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: 0.
|
|
20
|
+
version: 1.0.0
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - "~>"
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: 0.
|
|
27
|
+
version: 1.0.0
|
|
28
28
|
description: google-dfp-api is a DFP API client library for Ruby
|
|
29
29
|
email:
|
|
30
30
|
- dfpapi-advisor@google.com
|
|
@@ -440,10 +440,6 @@ files:
|
|
|
440
440
|
- lib/dfp_api/v201708/workflow_request_service.rb
|
|
441
441
|
- lib/dfp_api/v201708/workflow_request_service_registry.rb
|
|
442
442
|
- lib/dfp_api/version.rb
|
|
443
|
-
- test/bugs/test_issue_00000007.rb
|
|
444
|
-
- test/bugs/test_issue_00000081.rb
|
|
445
|
-
- test/dfp_api/test_credential_handler.rb
|
|
446
|
-
- test/dfp_api/test_dfp_api.rb
|
|
447
443
|
homepage: https://github.com/googleads/google-api-ads-ruby
|
|
448
444
|
licenses:
|
|
449
445
|
- Apache-2.0
|
|
@@ -464,12 +460,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
464
460
|
version: 1.3.6
|
|
465
461
|
requirements: []
|
|
466
462
|
rubyforge_project: google-dfp-api
|
|
467
|
-
rubygems_version: 2.6.
|
|
463
|
+
rubygems_version: 2.6.8
|
|
468
464
|
signing_key:
|
|
469
465
|
specification_version: 4
|
|
470
466
|
summary: Ruby Client libraries for DFP API
|
|
471
|
-
test_files:
|
|
472
|
-
- test/bugs/test_issue_00000007.rb
|
|
473
|
-
- test/bugs/test_issue_00000081.rb
|
|
474
|
-
- test/dfp_api/test_credential_handler.rb
|
|
475
|
-
- test/dfp_api/test_dfp_api.rb
|
|
467
|
+
test_files: []
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# Encoding: utf-8
|
|
3
|
-
#
|
|
4
|
-
# Copyright:: Copyright 2016, Google Inc. All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
15
|
-
# implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
#
|
|
19
|
-
# Tests issue #7.
|
|
20
|
-
|
|
21
|
-
require 'nori'
|
|
22
|
-
require 'ads_savon'
|
|
23
|
-
require 'test/unit'
|
|
24
|
-
|
|
25
|
-
require 'ads_common/config'
|
|
26
|
-
require 'ads_common/savon_service'
|
|
27
|
-
require 'ads_savon/soap/response'
|
|
28
|
-
require 'dfp_api/v201608/line_item_service'
|
|
29
|
-
|
|
30
|
-
class HeaderHandler
|
|
31
|
-
def prepare_request(http, soap)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# SavonService is abstract, defining a child class for the test.
|
|
36
|
-
class StubService7 < AdsCommon::SavonService
|
|
37
|
-
|
|
38
|
-
public :get_module
|
|
39
|
-
|
|
40
|
-
def initialize(namespace, endpoint, version)
|
|
41
|
-
logger = Logger.new(STDERR)
|
|
42
|
-
@config = AdsCommon::Config.new({:library => {:logger => logger}})
|
|
43
|
-
super(@config, namespace, endpoint, version)
|
|
44
|
-
@header_handler = HeaderHandler.new
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def get_module()
|
|
48
|
-
return DfpApi::V201608::LineItemService
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def get_service_registry()
|
|
52
|
-
return DfpApi::V201608::LineItemService::LineItemServiceRegistry
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
class StubConfig
|
|
57
|
-
attr_reader :raise_errors
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
class TestDfpIssue7 < Test::Unit::TestCase
|
|
61
|
-
|
|
62
|
-
TEST_NAMESPACE = 'https://ads.google.com/apis/ads/publisher/'
|
|
63
|
-
TEST_ENDPOINT =
|
|
64
|
-
'https://ads.google.com/apis/ads/publisher/v201608/LineItemService?wsdl'
|
|
65
|
-
TEST_VERSION = :v201608
|
|
66
|
-
|
|
67
|
-
def test_issue_7_request()
|
|
68
|
-
args = {:line_items => [
|
|
69
|
-
{:order_id => 42, :id => 82, :web_property_code => ''}
|
|
70
|
-
]}
|
|
71
|
-
want = '<webPropertyCode></webPropertyCode>'
|
|
72
|
-
|
|
73
|
-
savon_service =
|
|
74
|
-
StubService7.new(TEST_NAMESPACE, TEST_ENDPOINT, TEST_VERSION)
|
|
75
|
-
result = savon_service.send(
|
|
76
|
-
:handle_soap_request, :update_line_items, true, args, nil)
|
|
77
|
-
|
|
78
|
-
assert(result.include?(want),
|
|
79
|
-
"Expected '%s' but not found in:\n%s" % [want, result])
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def test_issue_7_response()
|
|
83
|
-
args = get_xml_response_text()
|
|
84
|
-
|
|
85
|
-
response = GoogleAdsSavon::SOAP::Response.new(StubConfig.new, nil)
|
|
86
|
-
nori = response.send(:nori)
|
|
87
|
-
|
|
88
|
-
result = nori.parse(args)
|
|
89
|
-
line_item =
|
|
90
|
-
result[:body][:get_line_items_by_statement_response][:rval][:results]
|
|
91
|
-
|
|
92
|
-
assert_equal('', line_item[:web_property_code])
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def get_xml_response_text()
|
|
96
|
-
return <<EOT
|
|
97
|
-
<soap:Body>
|
|
98
|
-
<getLineItemsByStatementResponse xmlns="https://www.google.com/apis/ads/publisher/v201608">
|
|
99
|
-
<rval>
|
|
100
|
-
<totalResultSetSize>1</totalResultSetSize>
|
|
101
|
-
<startIndex>0</startIndex>
|
|
102
|
-
<results>
|
|
103
|
-
<orderId>41</orderId>
|
|
104
|
-
<id>42</id>
|
|
105
|
-
<name>name42</name>
|
|
106
|
-
<webPropertyCode></webPropertyCode>
|
|
107
|
-
</results>
|
|
108
|
-
</rval>
|
|
109
|
-
</getLineItemsByStatementResponse>
|
|
110
|
-
</soap:Body>
|
|
111
|
-
EOT
|
|
112
|
-
end
|
|
113
|
-
end
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# Encoding: utf-8
|
|
3
|
-
#
|
|
4
|
-
# Copyright:: Copyright 2016, Google Inc. All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
15
|
-
# implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
#
|
|
19
|
-
# Tests issue #81.
|
|
20
|
-
|
|
21
|
-
require 'nori'
|
|
22
|
-
require 'ads_savon'
|
|
23
|
-
require 'test/unit'
|
|
24
|
-
|
|
25
|
-
require 'ads_common/savon_service'
|
|
26
|
-
require 'dfp_api/v201702/line_item_service'
|
|
27
|
-
|
|
28
|
-
# SavonService is abstract, defining a child class for the test.
|
|
29
|
-
class StubService81 < AdsCommon::SavonService
|
|
30
|
-
|
|
31
|
-
public :get_module
|
|
32
|
-
|
|
33
|
-
def initialize(namespace, endpoint, version)
|
|
34
|
-
@logger = Logger.new(STDERR)
|
|
35
|
-
@config = AdsCommon::Config.new({:library => {:logger => @logger}})
|
|
36
|
-
super(@config, namespace, endpoint, version)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def get_module()
|
|
40
|
-
return DfpApi::V201702::LineItemService
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class TestDfpIssue81 < Test::Unit::TestCase
|
|
46
|
-
|
|
47
|
-
TEST_NAMESPACE = 'https://ads.google.com/apis/ads/publisher/'
|
|
48
|
-
TEST_ENDPOINT = (
|
|
49
|
-
'https://ads.google.com/apis/ads/publisher/v201702/LineItemService?wsdl')
|
|
50
|
-
TEST_VERSION = :v201702
|
|
51
|
-
|
|
52
|
-
def setup()
|
|
53
|
-
@stub_service =
|
|
54
|
-
StubService81.new(TEST_NAMESPACE, TEST_ENDPOINT, TEST_VERSION)
|
|
55
|
-
nori_options = {
|
|
56
|
-
:strip_namespaces => true,
|
|
57
|
-
:convert_tags_to => lambda { |tag| tag.snakecase.to_sym },
|
|
58
|
-
:advanced_typecasting => false
|
|
59
|
-
}
|
|
60
|
-
@nori = Nori.new(nori_options)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def test_issue_81()
|
|
64
|
-
data = @nori.parse(get_xml_text())[:envelope][:body]
|
|
65
|
-
savon_service =
|
|
66
|
-
StubService81.new(TEST_NAMESPACE, TEST_ENDPOINT, TEST_VERSION)
|
|
67
|
-
assert_instance_of(DfpApi::V201702::LineItemService::ApiException,
|
|
68
|
-
savon_service.send(:exception_for_soap_fault, data))
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def get_xml_text()
|
|
72
|
-
return <<EOT
|
|
73
|
-
<?xml version="1.0"?>
|
|
74
|
-
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
75
|
-
<soap:Header>
|
|
76
|
-
<ResponseHeader xmlns="https://www.google.com/apis/ads/publisher/v201702">
|
|
77
|
-
<requestId>abc123</requestId>
|
|
78
|
-
<responseTime>658</responseTime>
|
|
79
|
-
</ResponseHeader>
|
|
80
|
-
</soap:Header>
|
|
81
|
-
<soap:Body>
|
|
82
|
-
<soap:Fault>
|
|
83
|
-
<faultcode>soap:Server</faultcode>
|
|
84
|
-
<faultstring>
|
|
85
|
-
[PublisherQueryLanguageContextError.UNEXECUTABLE @ Unknown column: 'blah']
|
|
86
|
-
</faultstring>
|
|
87
|
-
<detail>
|
|
88
|
-
<ApiExceptionFault
|
|
89
|
-
xmlns="https://www.google.com/apis/ads/publisher/v201502">
|
|
90
|
-
<message>
|
|
91
|
-
[PublisherQueryLanguageContextError.UNEXECUTABLE
|
|
92
|
-
@ Unknown column: 'blah']
|
|
93
|
-
</message>
|
|
94
|
-
<errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
95
|
-
xsi:type="PublisherQueryLanguageContextError">
|
|
96
|
-
<fieldPath>Unknown column: 'blah'</fieldPath>
|
|
97
|
-
<trigger></trigger>
|
|
98
|
-
<errorString>
|
|
99
|
-
PublisherQueryLanguageContextError.UNEXECUTABLE
|
|
100
|
-
</errorString>
|
|
101
|
-
<reason>UNEXECUTABLE</reason>
|
|
102
|
-
</errors>
|
|
103
|
-
</ApiExceptionFault>
|
|
104
|
-
</detail>
|
|
105
|
-
</soap:Fault>
|
|
106
|
-
</soap:Body>
|
|
107
|
-
</soap:Envelope>
|
|
108
|
-
EOT
|
|
109
|
-
end
|
|
110
|
-
end
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# Encoding: utf-8
|
|
3
|
-
#
|
|
4
|
-
# Copyright:: Copyright 2016, Google Inc. All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
15
|
-
# implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
#
|
|
19
|
-
# Tests dfp credential handler.
|
|
20
|
-
|
|
21
|
-
require 'logger'
|
|
22
|
-
require 'test/unit'
|
|
23
|
-
|
|
24
|
-
require 'ads_common/config'
|
|
25
|
-
require 'dfp_api/credential_handler'
|
|
26
|
-
|
|
27
|
-
# Overriding default access levels to public for tests.
|
|
28
|
-
module DfpApi
|
|
29
|
-
|
|
30
|
-
class CredentialHandler
|
|
31
|
-
public :validate_headers_for_server
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class TestCredentialHandler < Test::Unit::TestCase
|
|
37
|
-
|
|
38
|
-
def setup()
|
|
39
|
-
@logger = Logger.new(STDERR)
|
|
40
|
-
config = AdsCommon::Config.new({:library => {:logger => @logger}})
|
|
41
|
-
@handler = DfpApi::CredentialHandler.new(config)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def test_validate_headers_for_bad_application_name()
|
|
45
|
-
credentials1 = {:application_name => 'INSERT_APPLICATION_NAME_HERE'}
|
|
46
|
-
assert_raise(AdsCommon::Errors::AuthError) do
|
|
47
|
-
@handler.validate_headers_for_server(credentials1)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
credentials2 = {:application_name => 'dfp_ruby_examplesEXTRATEXT'}
|
|
51
|
-
assert_raise(AdsCommon::Errors::AuthError) do
|
|
52
|
-
@handler.validate_headers_for_server(credentials2)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
credentials3 = {:application_name => 'something awesome '}
|
|
56
|
-
assert_nothing_raised do
|
|
57
|
-
@handler.validate_headers_for_server(credentials3)
|
|
58
|
-
end
|
|
59
|
-
assert_equal(credentials3[:application_name], 'something awesome ')
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
end
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# Encoding: utf-8
|
|
3
|
-
#
|
|
4
|
-
# Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
15
|
-
# implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
#
|
|
19
|
-
# Tests the general API features.
|
|
20
|
-
|
|
21
|
-
require 'test/unit'
|
|
22
|
-
require 'tempfile'
|
|
23
|
-
|
|
24
|
-
require 'dfp_api'
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class LoggerStub
|
|
28
|
-
attr_reader :last_warning
|
|
29
|
-
def warn(message)
|
|
30
|
-
@last_warning = message
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
module DfpApi
|
|
35
|
-
module ApiConfig
|
|
36
|
-
def self.default_config_filename=(value)
|
|
37
|
-
@default_config_filename = value
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def self.default_config_filename
|
|
41
|
-
@default_config_filename
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
class TestDfpApi < Test::Unit::TestCase
|
|
47
|
-
DEFAULT_CONFIG_HASH = {
|
|
48
|
-
:authentication => {
|
|
49
|
-
:method => 'OAuth2',
|
|
50
|
-
:oauth2_client_id => 'myClientId',
|
|
51
|
-
:oauth2_client_secret => 'This is MY secret!',
|
|
52
|
-
:oauth2_token => 'my access token',
|
|
53
|
-
:application_name => 'ruby_test_suite',
|
|
54
|
-
:network_code => 1234567
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
DEFAULT_CONFIG_FILENAME = File.expand_path('../test_config.yml', __FILE__)
|
|
59
|
-
DEFAULT_FAILURE_FILENAME = 'test_notexists.yml'
|
|
60
|
-
|
|
61
|
-
def setup()
|
|
62
|
-
@logger = LoggerStub.new
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Test initializer with no arguments.
|
|
66
|
-
def test_initialize_nil()
|
|
67
|
-
# Set up a tempfile in ENV['HOME']
|
|
68
|
-
temp_file = Tempfile.new(['dfp_api', 'yml'], ENV['HOME'])
|
|
69
|
-
real_file = File.open(DEFAULT_CONFIG_FILENAME, 'r')
|
|
70
|
-
temp_file.write(real_file.read)
|
|
71
|
-
temp_file.flush()
|
|
72
|
-
real_file.close()
|
|
73
|
-
DfpApi::ApiConfig.default_config_filename = File.basename(temp_file.path)
|
|
74
|
-
|
|
75
|
-
assert_nothing_raised do
|
|
76
|
-
dfp_api = DfpApi::Api.new
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
temp_file.unlink()
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# Test initializer with hash argument.
|
|
83
|
-
def test_initialize_hash()
|
|
84
|
-
assert_nothing_raised do
|
|
85
|
-
dfp_api = DfpApi::Api.new(DEFAULT_CONFIG_HASH)
|
|
86
|
-
check_config_data(dfp_api.config)
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# Test initializer with filename argument.
|
|
91
|
-
def test_initialize_filename()
|
|
92
|
-
assert_nothing_raised do
|
|
93
|
-
dfp_api = DfpApi::Api.new(DEFAULT_CONFIG_FILENAME)
|
|
94
|
-
check_config_data(dfp_api.config)
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
# Test initializer with bad filename argument.
|
|
99
|
-
def test_initialize_filename_not_exists()
|
|
100
|
-
assert_raises(Errno::ENOENT) do
|
|
101
|
-
dfp_api = DfpApi::Api.new(DEFAULT_FAILURE_FILENAME)
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
# Utility method to check the actual data.
|
|
106
|
-
def check_config_data(config)
|
|
107
|
-
assert_equal(:OAUTH2, config.read('authentication.method'))
|
|
108
|
-
assert_equal('ruby_test_suite',
|
|
109
|
-
config.read('authentication.application_name'))
|
|
110
|
-
assert_equal('myClientId', config.read('authentication.oauth2_client_id'))
|
|
111
|
-
assert_equal('This is MY secret!', config.read(
|
|
112
|
-
'authentication.oauth2_client_secret'))
|
|
113
|
-
assert_equal('my access token', config.read('authentication.oauth2_token'))
|
|
114
|
-
assert_equal(1234567, config.read('authentication.network_code'))
|
|
115
|
-
assert_nil(config.read('item.not.exists'))
|
|
116
|
-
assert_equal(:default, config.read('item.not.exists', :default))
|
|
117
|
-
end
|
|
118
|
-
end
|