bitly-oauth 0.1.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.
- data/History.txt +154 -0
- data/LICENSE +20 -0
- data/README.md +87 -0
- data/README.rdoc +35 -0
- data/Rakefile +42 -0
- data/VERSION +1 -0
- data/lib/bitly_oauth.rb +28 -0
- data/lib/bitly_oauth/access_token.rb +37 -0
- data/lib/bitly_oauth/client.rb +149 -0
- data/lib/bitly_oauth/country.rb +10 -0
- data/lib/bitly_oauth/day.rb +12 -0
- data/lib/bitly_oauth/error.rb +15 -0
- data/lib/bitly_oauth/lib/core_ext/hash.rb +27 -0
- data/lib/bitly_oauth/lib/core_ext/string.rb +5 -0
- data/lib/bitly_oauth/missing_url.rb +12 -0
- data/lib/bitly_oauth/realtime_link.rb +16 -0
- data/lib/bitly_oauth/referrer.rb +12 -0
- data/lib/bitly_oauth/referring_domain.rb +11 -0
- data/lib/bitly_oauth/response.rb +39 -0
- data/lib/bitly_oauth/url.rb +118 -0
- data/lib/bitly_oauth/user.rb +104 -0
- data/test/fixtures/9uX1TE.json +1 -0
- data/test/fixtures/9uX1TEclicks.json +1 -0
- data/test/fixtures/9uX1TEclicks2.json +1 -0
- data/test/fixtures/9uX1TEinfo.json +1 -0
- data/test/fixtures/9uX1TEinfo2.json +1 -0
- data/test/fixtures/auth_fail.json +1 -0
- data/test/fixtures/auth_success.json +1 -0
- data/test/fixtures/betaworks.json +1 -0
- data/test/fixtures/betaworks2.json +1 -0
- data/test/fixtures/betaworks_jmp.json +1 -0
- data/test/fixtures/betaworks_other_user.json +1 -0
- data/test/fixtures/bitly9uX1TE.json +1 -0
- data/test/fixtures/bitly_pro_domain.json +1 -0
- data/test/fixtures/clicks_by_day.json +1 -0
- data/test/fixtures/clicks_by_day1.json +1 -0
- data/test/fixtures/clicks_by_day2.json +1 -0
- data/test/fixtures/clicks_by_minute1_url.json +1 -0
- data/test/fixtures/clicks_by_minute2_url.json +1 -0
- data/test/fixtures/clicks_by_minute_hash.json +1 -0
- data/test/fixtures/clicks_by_minute_hashes.json +1 -0
- data/test/fixtures/country_hash.json +1 -0
- data/test/fixtures/country_hash2.json +1 -0
- data/test/fixtures/country_url.json +1 -0
- data/test/fixtures/failure.json +1 -0
- data/test/fixtures/invalid_bitly_pro_domain.json +1 -0
- data/test/fixtures/invalid_credentials.json +1 -0
- data/test/fixtures/invalid_domain.json +1 -0
- data/test/fixtures/invalid_user.json +1 -0
- data/test/fixtures/invalid_x_api_key.json +1 -0
- data/test/fixtures/lookup_multiple_url.json +1 -0
- data/test/fixtures/lookup_not_real_url.json +1 -0
- data/test/fixtures/lookup_single_url.json +1 -0
- data/test/fixtures/missing_hash.json +1 -0
- data/test/fixtures/multiple_info.json +1 -0
- data/test/fixtures/multiple_url_click.json +1 -0
- data/test/fixtures/multiple_urls.json +1 -0
- data/test/fixtures/not_bitly_pro_domain.json +1 -0
- data/test/fixtures/not_found_info.json +1 -0
- data/test/fixtures/referrer_hash.json +1 -0
- data/test/fixtures/referrer_hash2.json +1 -0
- data/test/fixtures/referrer_url.json +1 -0
- data/test/fixtures/success.json +1 -0
- data/test/fixtures/url_info.json +1 -0
- data/test/fixtures/user_clicks.json +32 -0
- data/test/fixtures/user_countries.json +60 -0
- data/test/fixtures/user_realtime_links.json +15 -0
- data/test/fixtures/user_referrers.json +1 -0
- data/test/fixtures/valid_user.json +1 -0
- data/test/integration/strategy/old_test_api_key.rb +20 -0
- data/test/integration/test_client.rb +709 -0
- data/test/integration/test_user.rb +97 -0
- data/test/test_helper.rb +54 -0
- data/test/unit/core_ext/test_hash.rb +69 -0
- data/test/unit/core_ext/test_string.rb +14 -0
- data/test/unit/test_bitly_oauth.rb +19 -0
- data/test/unit/test_client.rb +87 -0
- data/test/unit/test_country.rb +19 -0
- data/test/unit/test_day.rb +22 -0
- data/test/unit/test_error.rb +11 -0
- data/test/unit/test_missing.rb +34 -0
- data/test/unit/test_realtime_link.rb +30 -0
- data/test/unit/test_referrer.rb +19 -0
- data/test/unit/test_referring_domain.rb +21 -0
- data/test/unit/test_response.rb +86 -0
- data/test/unit/test_url.rb +156 -0
- data/test/unit/test_user.rb +17 -0
- metadata +215 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestUser < Test::Unit::TestCase
|
4
|
+
context "with an access_token" do
|
5
|
+
setup do
|
6
|
+
client = BitlyOAuth::Client.new('client_id', 'client_secret')
|
7
|
+
access_token = client.get_access_token_from_token('token')
|
8
|
+
@user = BitlyOAuth::User.new(access_token)
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'referrers' do
|
12
|
+
setup do
|
13
|
+
stub_get(/https:\/\/api-ssl\.bit\.ly\/v3\/user\/referrers\?(access|oauth)_token=token/, 'user_referrers.json')
|
14
|
+
@referrers = @user.referrers
|
15
|
+
end
|
16
|
+
|
17
|
+
should 'return an array of arrays of referrers' do
|
18
|
+
assert_kind_of Array, @referrers
|
19
|
+
assert_kind_of Array, @referrers.first
|
20
|
+
assert_kind_of BitlyOAuth::Referrer, @referrers.first.first
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'return data about the referrer' do
|
24
|
+
referrer = @referrers.first.first
|
25
|
+
assert_equal 'direct', referrer.referrer
|
26
|
+
assert_equal 1, referrer.clicks
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'countries' do
|
31
|
+
setup do
|
32
|
+
stub_get(/https:\/\/api-ssl\.bit\.ly\/v3\/user\/countries\?(access|oauth)_token=token/, 'user_countries.json')
|
33
|
+
@countries = @user.countries
|
34
|
+
end
|
35
|
+
|
36
|
+
should 'return an array of arrays of countries' do
|
37
|
+
assert_kind_of Array, @countries
|
38
|
+
assert_kind_of Array, @countries.first
|
39
|
+
assert_kind_of BitlyOAuth::Country, @countries.first.first
|
40
|
+
end
|
41
|
+
|
42
|
+
should 'return data about the country' do
|
43
|
+
country = @countries.first.first
|
44
|
+
assert_equal "US", country.country
|
45
|
+
assert_equal 4, country.clicks
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'clicks' do
|
50
|
+
setup do
|
51
|
+
stub_get(/https:\/\/api-ssl\.bit\.ly\/v3\/user\/clicks\?(access|oauth)_token=token/, 'user_clicks.json')
|
52
|
+
@clicks = @user.clicks
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'return an array of days' do
|
56
|
+
assert_kind_of Array, @clicks
|
57
|
+
assert_kind_of BitlyOAuth::Day, @clicks.first
|
58
|
+
end
|
59
|
+
|
60
|
+
should 'return data about the day' do
|
61
|
+
day = @clicks.first
|
62
|
+
assert_equal 4, day.clicks
|
63
|
+
end
|
64
|
+
|
65
|
+
should 'get total clicks' do
|
66
|
+
assert_equal 29, @user.total_clicks
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'total clicks' do
|
71
|
+
setup do
|
72
|
+
stub_get(/https:\/\/api-ssl\.bit\.ly\/v3\/user\/clicks\?(access|oauth)_token=token/, 'user_clicks.json')
|
73
|
+
end
|
74
|
+
|
75
|
+
should 'get total clicks' do
|
76
|
+
assert_equal 29, @user.total_clicks
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'realtime links' do
|
81
|
+
setup do
|
82
|
+
stub_get(/https:\/\/api-ssl\.bit\.ly\/v3\/user\/realtime_links\?(access|oauth)_token=token/, 'user_realtime_links.json')
|
83
|
+
@realtime_links = @user.realtime_links
|
84
|
+
end
|
85
|
+
|
86
|
+
should 'get an array of realtime links' do
|
87
|
+
assert_kind_of Array, @realtime_links
|
88
|
+
assert_kind_of BitlyOAuth::RealtimeLink, @realtime_links.first
|
89
|
+
end
|
90
|
+
|
91
|
+
should 'get the data for the realtime links' do
|
92
|
+
assert_equal 15, @realtime_links.first.clicks
|
93
|
+
assert_equal "i7JWw0", @realtime_links.first.user_hash
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
require 'mocha'
|
5
|
+
require 'fakeweb'
|
6
|
+
require 'ruby-debug'
|
7
|
+
|
8
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
9
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
10
|
+
require 'bitly_oauth'
|
11
|
+
|
12
|
+
FakeWeb.allow_net_connect = false
|
13
|
+
|
14
|
+
def fixture_file(filename)
|
15
|
+
return '' if filename == ''
|
16
|
+
file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
|
17
|
+
File.read(file_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
def stub_get(path, filename)
|
21
|
+
if filename.is_a?(Array)
|
22
|
+
response = filename.map { |f| { :body => fixture_file(f), :content_type => 'text/json' } }
|
23
|
+
else
|
24
|
+
response = { :body => fixture_file(filename), :content_type => 'text/json' }
|
25
|
+
end
|
26
|
+
FakeWeb.register_uri(:get, path, response)
|
27
|
+
end
|
28
|
+
|
29
|
+
def stub_post(path, filename)
|
30
|
+
response = { :body => fixture_file(filename), :content_type => 'text/json' }
|
31
|
+
FakeWeb.register_uri(:post, path, response)
|
32
|
+
end
|
33
|
+
|
34
|
+
def api_key_fixture
|
35
|
+
'test_key'
|
36
|
+
end
|
37
|
+
def login_fixture
|
38
|
+
'test_account'
|
39
|
+
end
|
40
|
+
def client_id_fixture
|
41
|
+
'client_id'
|
42
|
+
end
|
43
|
+
def client_secret_fixture
|
44
|
+
'client_secret'
|
45
|
+
end
|
46
|
+
def fixture_token
|
47
|
+
'token'
|
48
|
+
end
|
49
|
+
|
50
|
+
class Test::Unit::TestCase
|
51
|
+
def teardown
|
52
|
+
FakeWeb.clean_registry
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestHash < Test::Unit::TestCase
|
4
|
+
context "calling #to_params" do
|
5
|
+
setup do
|
6
|
+
@hash = { :one => 1, :two => 2 }
|
7
|
+
end
|
8
|
+
should "return a string of key=value&" do
|
9
|
+
assert_equal @hash.to_query, "one=1&two=2"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context "calling #stringify_keys!" do
|
14
|
+
setup do
|
15
|
+
@hash = { :one => 1, :two => 2 }
|
16
|
+
end
|
17
|
+
should "return a hash with string keys" do
|
18
|
+
assert_equal @hash.stringify_keys!.keys.map(&:class).uniq.size, 1
|
19
|
+
assert_equal @hash.stringify_keys!.keys.map(&:class).uniq.first, String
|
20
|
+
end
|
21
|
+
should "should alter the original hash" do
|
22
|
+
@hash.stringify_keys!
|
23
|
+
assert_equal @hash.keys.map(&:class).uniq.size, 1
|
24
|
+
assert_equal @hash.keys.map(&:class).uniq.first, String
|
25
|
+
end
|
26
|
+
end
|
27
|
+
context "calling #stringify_keys" do
|
28
|
+
setup do
|
29
|
+
@hash = { :one => 1, :two => 2 }
|
30
|
+
end
|
31
|
+
should "return a hash with string keys" do
|
32
|
+
assert_equal @hash.stringify_keys.keys.map(&:class).uniq.size, 1
|
33
|
+
assert_equal @hash.stringify_keys.keys.map(&:class).uniq.first, String
|
34
|
+
end
|
35
|
+
should "should return a new hash" do
|
36
|
+
@hash.stringify_keys
|
37
|
+
assert_equal @hash.keys.map(&:class).uniq.size, 1
|
38
|
+
assert_equal @hash.keys.map(&:class).uniq.first, Symbol
|
39
|
+
end
|
40
|
+
end
|
41
|
+
context "calling #symbolize_keys!" do
|
42
|
+
setup do
|
43
|
+
@hash = { 'one' => 1, 'two' => 2 }
|
44
|
+
end
|
45
|
+
should "return a hash with string keys" do
|
46
|
+
assert_equal @hash.symbolize_keys!.keys.map(&:class).uniq.size, 1
|
47
|
+
assert_equal @hash.symbolize_keys!.keys.map(&:class).uniq.first, Symbol
|
48
|
+
end
|
49
|
+
should "should alter the original hash" do
|
50
|
+
@hash.symbolize_keys!
|
51
|
+
assert_equal @hash.keys.map(&:class).uniq.size, 1
|
52
|
+
assert_equal @hash.keys.map(&:class).uniq.first, Symbol
|
53
|
+
end
|
54
|
+
end
|
55
|
+
context "calling #symbolize_keys" do
|
56
|
+
setup do
|
57
|
+
@hash = { 'one' => 1, 'two' => 2 }
|
58
|
+
end
|
59
|
+
should "return a hash with string keys" do
|
60
|
+
assert_equal @hash.symbolize_keys.keys.map(&:class).uniq.size, 1
|
61
|
+
assert_equal @hash.symbolize_keys.keys.map(&:class).uniq.first, Symbol
|
62
|
+
end
|
63
|
+
should "should alter the original hash" do
|
64
|
+
@hash.symbolize_keys
|
65
|
+
assert_equal @hash.keys.map(&:class).uniq.size, 1
|
66
|
+
assert_equal @hash.keys.map(&:class).uniq.first, String
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestString < Test::Unit::TestCase
|
4
|
+
context "Ruby String" do
|
5
|
+
setup do
|
6
|
+
@string = "string"
|
7
|
+
end
|
8
|
+
context "calling to_params" do
|
9
|
+
should "return a string of key=value&" do
|
10
|
+
assert_equal @string.to_a, [ @string ]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestBitlyOAuth < Test::Unit::TestCase
|
4
|
+
context "bitly oauth module" do
|
5
|
+
context "with a client id and client secret" do
|
6
|
+
should "create a new client" do
|
7
|
+
client = BitlyOAuth.new("client_id", "client_secret")
|
8
|
+
assert client.is_a?(BitlyOAuth::Client)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
context "with bad information" do
|
12
|
+
should "raise an error" do
|
13
|
+
assert_raise ArgumentError do
|
14
|
+
BitlyOAuth.new
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestClient < Test::Unit::TestCase
|
4
|
+
context "creating a new client" do
|
5
|
+
should "initialize with clinet id and secret" do
|
6
|
+
assert_nothing_raised do
|
7
|
+
BitlyOAuth::Client.new('client_id', 'client_secret')
|
8
|
+
end
|
9
|
+
end
|
10
|
+
should "raise an exception when bad arguments are used" do
|
11
|
+
assert_raise ArgumentError do
|
12
|
+
BitlyOAuth::Client.new("Something Else")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
context "with a new client" do
|
17
|
+
setup do
|
18
|
+
@client = BitlyOAuth.new('client_id', 'client_secret')
|
19
|
+
end
|
20
|
+
should 'get the oauth authorize url' do
|
21
|
+
redirect_url = 'http://localhost.local/'
|
22
|
+
authorize_url = @client.authorize_url(redirect_url)
|
23
|
+
assert_match %r{https://bitly.com/oauth/authorize\?.*client_id=client_id.*}, authorize_url
|
24
|
+
assert_match %r{https://bitly.com/oauth/authorize\?.*redirect_uri=#{CGI.escape(redirect_url)}.*}, authorize_url
|
25
|
+
end
|
26
|
+
context "get an access token" do
|
27
|
+
setup do
|
28
|
+
::OAuth2::Client.stubs(:new => stub(:auth_code => stub(:get_token => true)))
|
29
|
+
end
|
30
|
+
should 'return an access token from a code' do
|
31
|
+
response = @client.get_access_token_from_code('code', 'redirect_url')
|
32
|
+
assert response.is_a?(BitlyOAuth::AccessToken)
|
33
|
+
end
|
34
|
+
should 'set an access token from a code' do
|
35
|
+
response = @client.set_access_token_from_code('code', 'redirect_url')
|
36
|
+
assert response.is_a?(BitlyOAuth::AccessToken)
|
37
|
+
assert (@client.send(:access_token)).is_a?(BitlyOAuth::AccessToken)
|
38
|
+
end
|
39
|
+
should 'return an access token from a token' do
|
40
|
+
response = @client.get_access_token_from_token('token')
|
41
|
+
assert response.is_a?(BitlyOAuth::AccessToken)
|
42
|
+
end
|
43
|
+
should 'set an access token from a token' do
|
44
|
+
response = @client.set_access_token_from_token('token')
|
45
|
+
assert response.is_a?(BitlyOAuth::AccessToken)
|
46
|
+
assert (@client.send(:access_token)).is_a?(BitlyOAuth::AccessToken)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
context "requests to the bitly api" do
|
50
|
+
setup do
|
51
|
+
token = stub(:get => { 'bitly_pro_domain' => true },
|
52
|
+
:token => 'token' )
|
53
|
+
BitlyOAuth::AccessToken.stubs(:new => token)
|
54
|
+
@client.set_access_token_from_token('token')
|
55
|
+
end
|
56
|
+
context "bitly_pro_domain" do
|
57
|
+
should 'return true when it is a bitly pro domain' do
|
58
|
+
assert @client.bitly_pro_domain('http://pro.domain/')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
context "bitly_pro_domain" do
|
62
|
+
should 'return true when it is a bitly pro domain' do
|
63
|
+
assert @client.pro?('http://pro.domain/')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
context "#referring_domains" do
|
69
|
+
setup do
|
70
|
+
token = stub(:get => { "referring_domains" => [ {'domain' => 'direct', 'clicks' => 700} ] } )
|
71
|
+
BitlyOAuth::AccessToken.stubs(:new => token)
|
72
|
+
@client = BitlyOAuth::Client.new('id', 'secret')
|
73
|
+
@client.set_access_token_from_token('token')
|
74
|
+
end
|
75
|
+
should "return an array" do
|
76
|
+
assert @client.referring_domains('http://bit.ly/somelink/').is_a?(Array)
|
77
|
+
assert_equal 1, @client.referring_domains('http://bit.ly/somelink/').map(&:class).uniq.size
|
78
|
+
assert @client.referring_domains('http://bit.ly/somelink/').first.is_a?(BitlyOAuth::ReferringDomain)
|
79
|
+
end
|
80
|
+
should "all be the same class" do
|
81
|
+
assert_equal 1, @client.referring_domains('http://bit.ly/somelink/').map(&:class).uniq.size
|
82
|
+
end
|
83
|
+
should "all be referring domains" do
|
84
|
+
assert @client.referring_domains('http://bit.ly/somelink/').first.is_a?(BitlyOAuth::ReferringDomain)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestCountry < Test::Unit::TestCase
|
4
|
+
context "a country" do
|
5
|
+
setup do
|
6
|
+
@country = BitlyOAuth::Country.new
|
7
|
+
end
|
8
|
+
|
9
|
+
[:clicks, :country].each do |method|
|
10
|
+
should "respond to #{method}" do
|
11
|
+
assert_respond_to @country, method
|
12
|
+
end
|
13
|
+
should "set #{method} when initializing" do
|
14
|
+
country = BitlyOAuth::Country.new(method.to_s => 'test')
|
15
|
+
assert_equal 'test', country.send(method)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestDay < Test::Unit::TestCase
|
4
|
+
context "a day" do
|
5
|
+
setup do
|
6
|
+
@day = BitlyOAuth::Day.new
|
7
|
+
end
|
8
|
+
[:clicks, :day_start].each do |method|
|
9
|
+
should "respond to #{method}" do
|
10
|
+
assert_respond_to @day, method
|
11
|
+
end
|
12
|
+
end
|
13
|
+
should "set clicks when initializing" do
|
14
|
+
day = BitlyOAuth::Day.new('clicks' => 12)
|
15
|
+
assert_equal 12, day.clicks
|
16
|
+
end
|
17
|
+
should "set day to a time object when initialising" do
|
18
|
+
day = BitlyOAuth::Day.new('day_start' => 1290488400)
|
19
|
+
assert_equal Time.parse('2010/11/23'), day.day_start
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestError < Test::Unit::TestCase
|
4
|
+
should "create a new bitly-oauth client" do
|
5
|
+
res = mock(:status => 'code', :reason => 'message')
|
6
|
+
error = BitlyOAuth::Error.new(res)
|
7
|
+
assert_equal "message - 'code'", error.message
|
8
|
+
assert_equal "message - 'code'", error.msg
|
9
|
+
assert_equal "code", error.code
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestMissingUrl < Test::Unit::TestCase
|
4
|
+
context "a url" do
|
5
|
+
setup do
|
6
|
+
@url = BitlyOAuth::MissingUrl.new
|
7
|
+
end
|
8
|
+
[:short_url, :user_hash, :long_url, :error].each do |method|
|
9
|
+
should "respond to #{method}" do
|
10
|
+
assert_respond_to @url, method
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
context "#new" do
|
15
|
+
setup do
|
16
|
+
@url = BitlyOAuth::MissingUrl.new({ 'short_url' => 'short url',
|
17
|
+
'hash' => 'hash',
|
18
|
+
'long_url' => 'long url',
|
19
|
+
'error' => 'error' })
|
20
|
+
end
|
21
|
+
should "return the short url" do
|
22
|
+
assert_equal 'short url', @url.short_url
|
23
|
+
end
|
24
|
+
should "return the user hash" do
|
25
|
+
assert_equal 'hash', @url.user_hash
|
26
|
+
end
|
27
|
+
should "return the long url" do
|
28
|
+
assert_equal 'long url', @url.long_url
|
29
|
+
end
|
30
|
+
should "return the error" do
|
31
|
+
assert_equal 'error', @url.error
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestRealtimeLink < Test::Unit::TestCase
|
4
|
+
context "a realtime link" do
|
5
|
+
setup do
|
6
|
+
@realtime_link = BitlyOAuth::RealtimeLink.new
|
7
|
+
end
|
8
|
+
[:clicks, :user_hash].each do |method|
|
9
|
+
should "respond to #{method}" do
|
10
|
+
assert_respond_to @realtime_link, method
|
11
|
+
end
|
12
|
+
end
|
13
|
+
should "set clicks when initializing" do
|
14
|
+
realtime_link = BitlyOAuth::RealtimeLink.new('clicks' => 12)
|
15
|
+
assert_equal 12, realtime_link.clicks
|
16
|
+
end
|
17
|
+
should "set user_hash when initializing" do
|
18
|
+
realtime_link = BitlyOAuth::RealtimeLink.new('user_hash' => 'sdfidn')
|
19
|
+
assert_equal 'sdfidn', realtime_link.user_hash
|
20
|
+
end
|
21
|
+
should 'create a url when supplied with a client' do
|
22
|
+
realtime_link = BitlyOAuth::RealtimeLink.new('user_hash' => 'sdfidn', 'clicks' => 12)
|
23
|
+
client = BitlyOAuth::Client.new('client_id', 'client_secret')
|
24
|
+
url = realtime_link.create_url(client)
|
25
|
+
assert_kind_of BitlyOAuth::Url, url
|
26
|
+
assert_equal 12, url.user_clicks
|
27
|
+
assert_equal 'sdfidn', url.user_hash
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|