checkdin 0.2.5 → 0.2.6

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.
@@ -44,5 +44,42 @@ module Checkdin
44
44
  return_error_or_body(response)
45
45
  end
46
46
 
47
+ # Retrieve a list of a user's authentications to external services (Facebook, Foursquare, etc.)
48
+ #
49
+ # param [Integer] id The ID of the user
50
+
51
+ def user_authentications(id)
52
+ response = connection.get("users/#{id}/authentications")
53
+ return_error_or_body(response)
54
+ end
55
+
56
+ # Retrieve information about a user's specific authentication to an external service
57
+ #
58
+ # param [Integer] user_id The ID of the user
59
+ # param [Integer] id The ID of the authentication
60
+
61
+ def user_authentication(user_id, id)
62
+ response = connection.get("users/#{user_id}/authentications/#{id}")
63
+ return_error_or_body(response)
64
+ end
65
+
66
+ # Create an authentication for a user
67
+ #
68
+ # param [Integer] id The ID of the user
69
+ # @param [Hash] options
70
+ # @option options String :provider - The name of the provider for the authentication (twitter, facebook, foursquare, linkedin, instagram)
71
+ # @option options String :uid - The user's id for the provider (on the provider's service, not your internal identifier)
72
+ # @option options String :oauth_token - The user's oauth token or access token that can be used to retrieve data on their behalf on the service.
73
+ # @option options String :oauth_token_secret - The user's oauth token secret or access token secret that is used in combination with the oauth token (required for twitter)
74
+ # @option options String :nickname - The user's nickname on the provider's service.
75
+
76
+ def create_user_authentication(id, options={})
77
+ response = connection.post do |req|
78
+ req.url "users/#{id}/authentications", options
79
+ end
80
+ return_error_or_body(response)
81
+ end
82
+
83
+
47
84
  end
48
85
  end
@@ -1,3 +1,3 @@
1
1
  module Checkdin
2
- VERSION = '0.2.5'
2
+ VERSION = '0.2.6'
3
3
  end
@@ -15,6 +15,7 @@ module Checkdin
15
15
  # @param [Hash] options
16
16
  # @option options Integer :campaign_id - Only return won rewards for this campaign.
17
17
  # @option options Integer :user_id - Only return won rewards for this user.
18
+ # @option options Integer :promotion_id - Only return won rewards for this promotion.
18
19
  # @option options Integer :limit - The maximum number of records to return.
19
20
 
20
21
  def won_rewards(options={})
@@ -55,4 +55,55 @@ describe Checkdin::Users do
55
55
  end
56
56
  end
57
57
  end
58
+
59
+ context "viewing a single user's list of authentications" do
60
+ use_vcr_cassette
61
+ let(:result) { @client.user_authentications(7835) }
62
+
63
+ it "should make a list of authentications available" do
64
+ result.authentications.collect{ |a| a.authentication.provider }.should == ["twitter","facebook","foursquare"]
65
+ end
66
+
67
+ it "should include the user's uid" do
68
+ result.authentications.collect{ |a| a.authentication.uid }.should == ["5930881311","1000038776937901","19125491"]
69
+ end
70
+ end
71
+
72
+ context "viewing a single user's specific authentication" do
73
+ use_vcr_cassette
74
+ let(:result) { @client.user_authentication(7835, 19479) }
75
+
76
+ it "should make a single authentication available" do
77
+ result.authentication.provider.should == "twitter"
78
+ result.authentication.uid.should == "5930881311"
79
+ result.authentication.nickname.should == "demo"
80
+ end
81
+ end
82
+
83
+ context "creating an authentication" do
84
+ context "with valid parameters" do
85
+ use_vcr_cassette
86
+ let(:result) { @client.create_user_authentication(7887,
87
+ :provider => "foursquare",
88
+ :uid => "1234",
89
+ :oauth_token => "111",
90
+ :nickname => "foursquare_name") }
91
+
92
+ it "should return the new authentication's information" do
93
+ result.authentication.provider.should == "foursquare"
94
+ result.authentication.uid.should == "1234"
95
+ result.authentication.nickname.should == "foursquare_name"
96
+ end
97
+ end
98
+
99
+ context "with invalid parameters" do
100
+ use_vcr_cassette
101
+
102
+ it "should return an error 400" do
103
+ expect do
104
+ @client.create_user_authentication(7887)
105
+ end.to raise_error(Checkdin::APIError, /400/)
106
+ end
107
+ end
108
+ end
58
109
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: checkdin
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.5
5
+ version: 0.2.6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Matt Mueller