bitly-oauth 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|