krakatoa-openx 1.9.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,42 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class SessionTest < OpenX::TestCase
4
+
5
+ test "has a URI" do
6
+ assert_instance_of URI::HTTP, new_session.uri
7
+ end
8
+
9
+ test "has a URL" do
10
+ assert_equal 'http://test.host/path/to/api', new_session('http://test.host/path/to/api').url
11
+ end
12
+
13
+ test "has a host" do
14
+ assert_equal 'http://test.host', new_session('http://test.host/path/to/api').host
15
+ end
16
+
17
+ test "offers session-based API client (remote reference)" do
18
+ assert_instance_of OpenX::XmlrpcSessionClient, new_session.remote
19
+ end
20
+
21
+ test "login working" do
22
+ assert_nothing_raised { new_session.create(config['username'], config['password']) }
23
+ end
24
+
25
+ test "logout working" do
26
+ assert_nothing_raised { new_session.create(config['username'], config['password']) }
27
+ assert_not_nil new_session.id
28
+ assert_nothing_raised { new_session.destroy }
29
+ assert_nil new_session.id
30
+ end
31
+
32
+ private
33
+
34
+ def config
35
+ OpenX.configuration
36
+ end
37
+
38
+ def new_session(url = config['url'])
39
+ @session ||= Session.new(url)
40
+ end
41
+
42
+ end
@@ -0,0 +1,85 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TargetingRuleTest < OpenX::TestCase
4
+
5
+ test "is a Hash" do
6
+ assert_kind_of Hash, rule
7
+ end
8
+
9
+ test "has a type" do
10
+ assert_equal 'Geo:Region', rule['type']
11
+ end
12
+
13
+ test "raises exception on invalid type" do
14
+ assert_raise(RuntimeError) { new_rule('Wrong') }
15
+ assert_raise(RuntimeError) { new_rule('Geo:Wrong') }
16
+ assert_nothing_raised { new_rule('deliveryLimitations:Geo:Country') }
17
+ end
18
+
19
+ test "accepts updates" do
20
+ rule = new_rule.update('comparison' => '==')
21
+ assert_instance_of TargetingRule, rule
22
+ assert_equal({"logical"=>"and", "type"=>"Geo:Region", "comparison"=>"=="}, rule)
23
+ end
24
+
25
+ test "accessors" do
26
+ rule = new_rule.logical('or').compare('==').with('GB|H9')
27
+ assert_equal({"logical"=>"or", "type"=>"Geo:Region", "comparison"=>"==", "data" => "GB|H9"}, rule)
28
+ end
29
+
30
+ test "completeness" do
31
+ assert !new_rule.complete?
32
+ assert new_rule.logical('or').compare('==').with('GB|H9').complete?
33
+ end
34
+
35
+ test "instantiation" do
36
+ assert_equal({
37
+ "logical"=>"and", "data"=>"test", "type"=>"Site:Pageurl", "comparison"=>"=~"
38
+ }, TargetingRule.instantiate(
39
+ "logical"=>"and", "data"=>"test", "type"=>"deliveryLimitations:Site:Pageurl", "comparison"=>"=~"
40
+ ))
41
+ end
42
+
43
+ test "comparisons" do
44
+ assert_equal({"logical"=>"and", "type"=>"Geo:Region", "comparison"=>"==", "data" => "GB|H9"}, new_rule.eq?('GB|H9'))
45
+ assert_equal({"logical"=>"and", "type"=>"Geo:Region", "comparison"=>"==", "data" => "GB|H9"}, new_rule.equal?('GB|H9'))
46
+ assert_equal({"logical"=>"and", "type"=>"Geo:Region", "comparison"=>"==", "data" => "GB|H9"}, new_rule.is?('GB|H9'))
47
+
48
+ assert_equal({"logical"=>"and", "type"=>"Geo:Region", "comparison"=>"!=", "data" => "GB|H9"}, new_rule.ne?('GB|H9'))
49
+ assert_equal({"logical"=>"and", "type"=>"Geo:Region", "comparison"=>"!=", "data" => "GB|H9"}, new_rule.not_equal?('GB|H9'))
50
+ assert_equal({"logical"=>"and", "type"=>"Geo:Region", "comparison"=>"!=", "data" => "GB|H9"}, new_rule.not?('GB|H9'))
51
+
52
+ assert_equal({"logical"=>"and", "type"=>"Time:Day", "comparison"=>">", "data" => "3"}, new_rule('Time:Day') > '3')
53
+ assert_equal({"logical"=>"and", "type"=>"Time:Day", "comparison"=>"<", "data" => "3"}, new_rule('Time:Day') < '3')
54
+ assert_equal({"logical"=>"and", "type"=>"Time:Day", "comparison"=>">=", "data" => "3"}, new_rule('Time:Day') >= '3')
55
+ assert_equal({"logical"=>"and", "type"=>"Time:Day", "comparison"=>"<=", "data" => "3"}, new_rule('Time:Day') <= '3')
56
+
57
+ assert_equal({"logical"=>"and", "type"=>"Geo:Country", "comparison"=>"=~", "data" => "GB,US"}, new_rule('Geo:Country').include?('GB', 'US'))
58
+ assert_equal({"logical"=>"and", "type"=>"Geo:Country", "comparison"=>"=~", "data" => "GB,US"}, new_rule('Geo:Country').contains?('GB', 'US'))
59
+ assert_equal({"logical"=>"and", "type"=>"Geo:Country", "comparison"=>"!~", "data" => "GB,US"}, new_rule('Geo:Country').exclude?('GB', 'US'))
60
+
61
+ assert_equal({"logical"=>"and", "type"=>"Geo:Region", "comparison"=>"=x", "data" => "GB.H\\d"}, new_rule.match?(/GB.H\d/))
62
+ assert_equal({"logical"=>"and", "type"=>"Geo:Region", "comparison"=>"=x", "data" => "GB.H\\d"}, new_rule =~ /GB.H\d/)
63
+ assert_equal({"logical"=>"and", "type"=>"Geo:Region", "comparison"=>"!x", "data" => "GB.H\\d"}, new_rule.no_match?(/GB.H\d/))
64
+ end
65
+
66
+ test 'combining' do
67
+ rule = new_rule('Time:Day').gt?(3)
68
+ assert_equal rule['logical'], 'and'
69
+ rule = new_rule & rule
70
+ assert_equal rule['logical'], 'and'
71
+ rule = new_rule | rule
72
+ assert_equal rule['logical'], 'or'
73
+ end
74
+
75
+ private
76
+
77
+ def rule
78
+ @rule ||= new_rule
79
+ end
80
+
81
+ def new_rule(type = 'Geo:Region')
82
+ TargetingRule.new(type)
83
+ end
84
+
85
+ end
@@ -0,0 +1,13 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TargetingRulesTest < OpenX::TestCase
4
+
5
+ test "creating rules" do
6
+ assert_equal [
7
+ {"logical"=>"and", "type"=>"Site:Pageurl", "comparison"=>"=~", "data" => "test"},
8
+ {"logical"=>"and", "type"=>"Client:Ip", "comparison"=>"=x", "data" => "^127\\."},
9
+ {"logical"=>"or", "type"=>"Geo:Country", "comparison"=>"=~", "data" => "GB,US"}
10
+ ], targeting_rules
11
+ end
12
+
13
+ end
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+ require 'xmlrpc/client'
3
+
4
+ class XmlrpcClientTest < OpenX::TestCase
5
+
6
+ def client
7
+ @client ||= OpenX::XmlrpcClient.new("http://example.com/random/path")
8
+ end
9
+
10
+ def stub_xrc
11
+ stub(:call => nil, :timeout= => 10)
12
+ end
13
+
14
+ test "initialize" do
15
+ assert_equal "http://example.com/random/path", client.url
16
+ assert_instance_of XMLRPC::Client, client.client
17
+ end
18
+
19
+ test "call forwarding" do
20
+ client.client.expects(:call).with('ox.getAgency', 1)
21
+ client.call('ox.getAgency', 1)
22
+ end
23
+
24
+ test "call rescueing" do
25
+ a, b, c = stub_xrc, stub_xrc, stub_xrc
26
+ ::XMLRPC::Client.stubs(:new2).returns(a, b, c)
27
+
28
+ a.expects(:call).with('ox.getAgency', 1).once.raises(Net::HTTPBadResponse, 'Bad response')
29
+ b.expects(:call).with('ox.getAgency', 1).once.raises(Errno::EPIPE, 'Other problem')
30
+ client.call('ox.getAgency', 1)
31
+
32
+ assert_not_equal client.client, a
33
+ assert_not_equal client.client, b
34
+ assert_equal client.client, c
35
+ end
36
+
37
+ end
@@ -0,0 +1,36 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+ require 'xmlrpc/client'
3
+
4
+ class XmlrpcSessionClientTest < OpenX::TestCase
5
+
6
+ def client
7
+ @client ||= OpenX::XmlrpcSessionClient.new(stub_session)
8
+ end
9
+
10
+ def stub_session
11
+ stub(:url => "http://example.com/random/path", :id => 33)
12
+ end
13
+
14
+ def stub_xrc
15
+ stub(:call => nil, :timeout= => 10)
16
+ end
17
+
18
+ test "call forwarding" do
19
+ client.client.expects(:call).with('ox.getAgency', 33, 1)
20
+ client.call('ox.getAgency', 1)
21
+ end
22
+
23
+ test "call rescueing" do
24
+ a, b = stub_xrc, stub_xrc
25
+ ::XMLRPC::Client.stubs(:new2).returns(a, b)
26
+
27
+ a.expects(:call).once.raises(Net::HTTPBadResponse, 'Bad response')
28
+ b.expects(:call).once.raises(XMLRPC::FaultException.new(0, 'session id is invalid'))
29
+ client.session.expects(:recreate!).once
30
+
31
+ client.call('ox.getAgency', 1)
32
+ assert_not_equal client.client, a
33
+ assert_equal client.client, b
34
+ end
35
+
36
+ end
@@ -0,0 +1,101 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class ZoneTest < OpenX::TestCase
4
+
5
+ def test_create
6
+ params = init_params
7
+ zone = Zone.create!(params)
8
+ assert_not_nil zone
9
+ params.each do |k,v|
10
+ assert_equal(v, zone.send(:"#{k}"))
11
+ end
12
+ zone.destroy
13
+ end
14
+
15
+ def test_find
16
+ params = init_params
17
+ zone = Zone.create!(params)
18
+ assert_not_nil zone
19
+ found_zone = Zone.find(zone.id)
20
+ assert_not_nil found_zone
21
+ assert_equal(zone, found_zone)
22
+ zone.destroy
23
+ end
24
+
25
+ def test_find_all
26
+ params = init_params
27
+ zone = Zone.create!(params)
28
+ assert_not_nil zone
29
+
30
+ zones = Zone.find(:all, publisher.id)
31
+ assert_equal(zones.sort, publisher.zones.sort)
32
+ found_zone = zones.find { |z| z.id == zone.id }
33
+ assert found_zone
34
+ assert_equal(zone, found_zone)
35
+ zone.destroy
36
+ end
37
+
38
+ def test_destroy
39
+ params = init_params
40
+ zone = Zone.create!(params)
41
+ assert_not_nil zone
42
+ id = zone.id
43
+ assert_nothing_raised {
44
+ zone.destroy
45
+ }
46
+ assert_raises(XMLRPC::FaultException) {
47
+ Zone.find(id)
48
+ }
49
+ end
50
+
51
+ def test_update
52
+ params = init_params
53
+ zone = Zone.create!(params)
54
+ assert_not_nil zone
55
+
56
+ found_zone = Zone.find(zone.id)
57
+ found_zone.name = 'tenderlove'
58
+ found_zone.save!
59
+
60
+ found_zone = Zone.find(zone.id)
61
+ assert_equal('tenderlove', found_zone.name)
62
+ end
63
+
64
+ def test_link_campaign
65
+ assert zone.link_campaign(campaign)
66
+ end
67
+
68
+ def test_unlink_campaign
69
+ assert_raises(XMLRPC::FaultException) {
70
+ zone.unlink_campaign(campaign)
71
+ }
72
+ assert zone.link_campaign(campaign)
73
+ assert zone.unlink_campaign(campaign)
74
+ end
75
+
76
+ def test_link_banner
77
+ assert zone.link_banner(banner)
78
+ end
79
+
80
+ def test_unlink_banner
81
+ assert_raises(XMLRPC::FaultException) {
82
+ zone.unlink_banner(banner)
83
+ }
84
+ assert zone.link_banner(banner)
85
+ assert zone.unlink_banner(banner)
86
+ end
87
+
88
+ def test_generate_tags
89
+ assert_match(/iframe/, zone.generate_tags)
90
+ end
91
+
92
+ def init_params
93
+ {
94
+ :publisher => publisher,
95
+ :name => "Zone - #{Time.now}",
96
+ :type => Zone::BANNER,
97
+ :width => 468,
98
+ :height => 60,
99
+ }
100
+ end
101
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: krakatoa-openx
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.9.4
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Aaron Patterson
9
+ - Andy Smith
10
+ - TouchLocal P/L
11
+ - Dimitrij Denissenko
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+ date: 2011-10-17 00:00:00.000000000Z
16
+ dependencies: []
17
+ description: A Ruby interface to the OpenX XML-RPC API
18
+ email: krakatoa1987@gmail.com
19
+ executables: []
20
+ extensions: []
21
+ extra_rdoc_files:
22
+ - README.txt
23
+ files:
24
+ - Gemfile
25
+ - Gemfile.lock
26
+ - README.txt
27
+ - Rakefile
28
+ - VERSION
29
+ - krakatoa-openx.gemspec
30
+ - lib/openx.rb
31
+ - lib/openx/image.rb
32
+ - lib/openx/invocation.rb
33
+ - lib/openx/persistance.rb
34
+ - lib/openx/services.rb
35
+ - lib/openx/services/advertiser.rb
36
+ - lib/openx/services/agency.rb
37
+ - lib/openx/services/banner.rb
38
+ - lib/openx/services/base.rb
39
+ - lib/openx/services/campaign.rb
40
+ - lib/openx/services/channel.rb
41
+ - lib/openx/services/publisher.rb
42
+ - lib/openx/services/session.rb
43
+ - lib/openx/services/zone.rb
44
+ - lib/openx/targeting_rule.rb
45
+ - lib/openx/targeting_rules.rb
46
+ - lib/openx/xmlrpc_client.rb
47
+ - test/assets/300x250.jpg
48
+ - test/assets/cat.swf
49
+ - test/helper.rb
50
+ - test/test_advertiser.rb
51
+ - test/test_agency.rb
52
+ - test/test_banner.rb
53
+ - test/test_base.rb
54
+ - test/test_campaign.rb
55
+ - test/test_channel.rb
56
+ - test/test_openx.rb
57
+ - test/test_publisher.rb
58
+ - test/test_services.rb
59
+ - test/test_session.rb
60
+ - test/test_targeting_rule.rb
61
+ - test/test_targeting_rules.rb
62
+ - test/test_xmlrpc_client.rb
63
+ - test/test_xmlrpc_session_client.rb
64
+ - test/test_zone.rb
65
+ homepage: http://github.com/krakatoa/openx
66
+ licenses: []
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ requirements: []
84
+ rubyforge_project:
85
+ rubygems_version: 1.8.10
86
+ signing_key:
87
+ specification_version: 3
88
+ summary: A Ruby interface to the OpenX XML-RPC API
89
+ test_files: []