omniauth-applicaster 1.0.2 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ad021ae006dfd12773a1cb98d012c7f1498f49c1
4
- data.tar.gz: d60c66db959660aea59dadc7d6841c794532d825
3
+ metadata.gz: cfb4391ae209e39c4f8696aa9739272c001d869b
4
+ data.tar.gz: e1bacf27810817e764814c017987dfda3c2c06b6
5
5
  SHA512:
6
- metadata.gz: 0e637007ded5a855e27b7387295e72c09d1dc7fe25d844b953867b43812a280b5b229cb7a90952bc31ac2fcc47323ec08788a84c7a0c9cbb538c216169328e74
7
- data.tar.gz: c572674187af780f0f3024b74586d5e1d44dc1dded96f6bc9738eea1612b4f55a096e24f8d3ec45f64529e3b372aa36de051d609665661c3353cd9f977ceeb6d
6
+ metadata.gz: 58764a8664b29e35dc140db06f17777fe3c813ef961b6033d8239c1723ec4cbc7b394f1dd89b0ca3bbaca5ceb74d9f521266575638692dd4bfe68b027b1502ce
7
+ data.tar.gz: 955089493db46cba1ae86a5b59849ede304c9ea12b43a4c4cc5e504187fe7cd47f86976badf489b8963910645e1352f525a5d7f86a2fd186b139754dbf6bb92e
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in omniauth-applicaster.gemspec
4
4
  gemspec
5
+
6
+ gem 'pry'
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Omniauth::Applicaster
2
2
 
3
- TODO: Write a gem description
3
+ An omniauth strategy for Applicaster's OAuth2 provider and an SDK for the
4
+ Accounts service.
4
5
 
5
6
  ## Installation
6
7
 
@@ -10,17 +11,80 @@ Add this line to your application's Gemfile:
10
11
  gem 'omniauth-applicaster'
11
12
  ```
12
13
 
13
- And then execute:
14
+ ## Usage
14
15
 
15
- $ bundle
16
+ ### Configuration
16
17
 
17
- Or install it yourself as:
18
+ The OAuth client ID and client secret are read from the environment variables
19
+ `ACCOUNTS_CLIENT_ID` and `ACCOUNTS_CLIENT_SECRET` respectivly.
18
20
 
19
- $ gem install omniauth-applicaster
21
+ The gem uses `https://accounts2.applicaster.com` as the site's endpoint by
22
+ default to change this set the `ACCOUNTS_BASE_URL` environment variable. This is
23
+ useful for example when running a local version of the accounts service
20
24
 
21
- ## Usage
25
+ ### Omniauth strategy
26
+
27
+ See [Omniauth](https://github.com/intridea/omniauth) for setting up omniauth.
28
+
29
+ In Rails, you will need something along the lines of:
30
+
31
+ ```ruby
32
+ ENV["ACCOUNTS_CLIENT_ID"] = "my-service-uid"
33
+ ENV["ACCOUNTS_CLIENT_SECRET"] = "my-service-secret"
34
+
35
+ Rails.application.config.middleware.use OmniAuth::Builder do
36
+ provider :applicaster,
37
+ ENV["ACCOUNTS_CLIENT_ID"],
38
+ ENV["ACCOUNTS_CLIENT_SECRET"]
39
+ end
40
+ ```
41
+
42
+ In addition, the gem provides `Applicaster::AuthHelpers` and
43
+ `Applicaster::SessionsControllerMixin` for easy integration with Rails
44
+ projects.
45
+
46
+ ```ruby
47
+ class ApplicationController < ActionController::Base
48
+ include Applicaster::AuthHelpers
49
+ end
50
+ ```
51
+
52
+ ```ruby
53
+ class SessionsController < ApplicationController
54
+ include Applicaster::SessionsControllerMixin
55
+ end
56
+ ```
22
57
 
23
- TODO: Write usage instructions here
58
+ In your `routes.rb` you need to add:
59
+
60
+ ```ruby
61
+ MyApp::Application.routes.draw do
62
+ get "/login", to: "sessions#new", as: :login
63
+ delete "/logout", to: "sessions#destroy", as: :logout
64
+
65
+ get "/auth/:provider/callback", to: "sessions#create"
66
+ get "/auth/failure", to: "sessions#failure"
67
+ end
68
+ ```
69
+
70
+ ### Accounts SDK
71
+
72
+ #### List all available accounts
73
+
74
+ ```ruby
75
+ service = Applicaster::Accounts.new
76
+
77
+ service.accounts.each do |account|
78
+ # account is an Applicaster::Accounts::Account instance
79
+ end
80
+ ```
81
+
82
+ #### Get a user using an access token
83
+
84
+ ```ruby
85
+ user = Applicaster::Accounts.user_from_token(access_token)
86
+ # user is an Applicaster::Accounts::User instnce
87
+ ```
24
88
 
25
89
  ## Contributing
26
90
 
@@ -1,5 +1,15 @@
1
+ require "faraday"
2
+ require "faraday_middleware"
3
+ require "virtus"
4
+
1
5
  module Applicaster
2
6
  class Accounts
7
+ autoload :Account, "applicaster/accounts/account"
8
+ autoload :User, "applicaster/accounts/user"
9
+
10
+ RETRYABLE_STATUS_CODES = [500, 503, 502]
11
+ FARADAY_TIMEOUT = 0.5
12
+
3
13
  attr_accessor :client_id
4
14
  attr_accessor :client_secret
5
15
 
@@ -11,17 +21,69 @@ module Applicaster
11
21
  def site
12
22
  URI.parse(ENV["ACCOUNTS_BASE_URL"] || default_site)
13
23
  end
24
+
25
+ def connection(options = {})
26
+ Faraday.new(url: site, request: { timeout: FARADAY_TIMEOUT } ) do |conn|
27
+ if options[:token]
28
+ conn.request :oauth2, options[:token]
29
+ end
30
+
31
+ conn.request :json
32
+ conn.request :retry,
33
+ interval: 0.05,
34
+ backoff_factor: 2,
35
+ exceptions: [Faraday::ClientError, Faraday::TimeoutError],
36
+ methods: [],
37
+ retry_if: -> (env, exception) {
38
+ env[:method] == :get &&
39
+ RETRYABLE_STATUS_CODES.include?(env[:status])
40
+ }
41
+
42
+
43
+ conn.response :json, content_type: /\bjson$/
44
+ # conn.response :logger, Rails.logger
45
+ # conn.response :logger, Logger.new(STDOUT)
46
+ conn.response :raise_error
47
+
48
+ conn.adapter Faraday.default_adapter
49
+ end
50
+ end
51
+
52
+ def user_from_token(token)
53
+ Applicaster::Accounts::User.new(
54
+ connection(token: token)
55
+ .get("/api/v1/users/current.json")
56
+ .body
57
+ )
58
+ end
14
59
  end
15
60
 
16
- def initialize(client_id, client_secret)
17
- @client_id = client_id
18
- @client_secret = client_secret
61
+ def initialize(client_id = nil, client_secret = nil)
62
+ @client_id = client_id || ENV["ACCOUNTS_CLIENT_ID"]
63
+ @client_secret = client_secret || ENV["ACCOUNTS_CLIENT_SECRET"]
19
64
  end
20
65
 
21
66
  def user_data_from_omniauth(omniauth_credentials)
22
67
  access_token(omniauth_credentials).get("/api/v1/users/current.json").parsed
23
68
  end
24
69
 
70
+ def accounts
71
+ connection(token: client_credentials_token.token)
72
+ .get("/api/v1/accounts.json")
73
+ .body
74
+ .map {|a| Account.new(a) }
75
+ end
76
+
77
+ def connection(*args)
78
+ self.class.connection(*args)
79
+ end
80
+
81
+ protected
82
+
83
+ def client_credentials_token
84
+ @client_credentials_token ||= client.client_credentials.get_token
85
+ end
86
+
25
87
  def client
26
88
  @client ||= ::OAuth2::Client.new(
27
89
  client_id,
@@ -0,0 +1,13 @@
1
+ module Applicaster
2
+ class Accounts
3
+ class Account
4
+ include Virtus.model
5
+
6
+ attribute :id, String
7
+ attribute :name, String
8
+ attribute :timezone, String
9
+ attribute :applicaster2_id, String
10
+ attribute :old_id, String
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ module Applicaster
2
+ class Accounts
3
+ class User
4
+ include Virtus.model
5
+
6
+ attribute :id, String
7
+ attribute :name, String
8
+ attribute :email, String
9
+ attribute :global_roles, Array[String]
10
+ attribute :permissions, Array
11
+ attribute :admin, Boolean
12
+
13
+ def admin?
14
+ !!admin
15
+ end
16
+ end
17
+ end
18
+ end
@@ -3,22 +3,13 @@ require_relative "user"
3
3
  module Applicaster
4
4
  module AuthHelpers
5
5
  def current_user
6
- return nil unless session[:omniauth_credentials]
7
-
8
- @current_user ||= user_from_session.tap do |user|
9
- session.delete(:omniauth_credentials) unless user
10
- end
11
- rescue OAuth2::Error => e
12
- session.delete(:omniauth_credentials)
13
- nil
6
+ @current_user ||= user_from_session
14
7
  end
15
8
 
16
9
  def user_signed_in?
17
10
  !current_user.nil?
18
11
  end
19
12
 
20
- protected
21
-
22
13
  def authenticate_user!
23
14
  unless current_user
24
15
  session[:path_before_login] = url_for(params)
@@ -26,17 +17,20 @@ module Applicaster
26
17
  end
27
18
  end
28
19
 
20
+ protected
21
+
29
22
  def user_from_session
30
- Applicaster::User.new(
31
- accounts_client.user_data_from_omniauth(session[:omniauth_credentials])
32
- )
33
- end
23
+ return nil unless session[:omniauth_credentials]
34
24
 
35
- def accounts_client
36
- Applicaster::Accounts.new(
37
- Settings.accounts_service.id,
38
- Settings.accounts_service.secret,
39
- )
25
+ token = session[:omniauth_credentials][:token]
26
+ Applicaster::Accounts.user_from_token(token)
27
+ rescue Faraday::ClientError => e
28
+ if e.response[:status] == 401
29
+ session.delete(:omniauth_credentials)
30
+ nil
31
+ else
32
+ raise e
33
+ end
40
34
  end
41
35
  end
42
36
  end
@@ -5,7 +5,7 @@ module Applicaster
5
5
  end
6
6
 
7
7
  def create
8
- session[:omniauth_credentials] = auth_hash.credentials.to_hash
8
+ session[:omniauth_credentials] = omniauth_credentials
9
9
 
10
10
  redirect_to(session.delete(:path_before_login) || '/')
11
11
  end
@@ -27,17 +27,8 @@ module Applicaster
27
27
 
28
28
  protected
29
29
 
30
- def auth_hash
31
- request.env['omniauth.auth']
30
+ def omniauth_credentials
31
+ request.env['omniauth.auth'].credentials.to_hash.symbolize_keys
32
32
  end
33
-
34
- def access_token
35
- @access_token ||= OAuth2::AccessToken.new(
36
- client,
37
- auth_hash.credentials.token,
38
- auth_hash.credentials.to_hash.except("token", "expires"),
39
- )
40
- end
41
-
42
33
  end
43
34
  end
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module Applicaster
3
- VERSION = "1.0.2"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
@@ -20,5 +20,11 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec", "~> 3.1"
24
+ spec.add_development_dependency "webmock"
25
+
23
26
  spec.add_dependency "omniauth-oauth2"
27
+ spec.add_dependency "faraday", "~> 0.9.1"
28
+ spec.add_dependency "faraday_middleware"
29
+ spec.add_dependency "virtus"
24
30
  end
@@ -0,0 +1,3 @@
1
+ RSpec.describe Applicaster::Accounts::Account do
2
+
3
+ end
@@ -0,0 +1,145 @@
1
+ RSpec.describe Applicaster::Accounts do
2
+ let(:accounts_service) { Applicaster::Accounts.new }
3
+
4
+ describe "::RETRYABLE_STATUS_CODES" do
5
+ it "is [500, 503, 502]" do
6
+ expect(Applicaster::Accounts::RETRYABLE_STATUS_CODES).to eq([500, 503, 502])
7
+ end
8
+ end
9
+
10
+ describe ".site" do
11
+ it "returns a URI object" do
12
+ expect(return_value).to be_kind_of(URI)
13
+ end
14
+
15
+ it "returns https://accounts2.applicaster.com" do
16
+ expect(return_value.to_s).to eq("https://accounts2.applicaster.com")
17
+ end
18
+
19
+ context "when ACCOUNTS_BASE_URL is set" do
20
+ around do |example|
21
+ with_base_url("http://example.com") do
22
+ example.run
23
+ end
24
+ end
25
+
26
+ it "returns http://example.com" do
27
+ expect(return_value.to_s).to eq("http://example.com")
28
+ end
29
+ end
30
+
31
+ def return_value
32
+ Applicaster::Accounts.site
33
+ end
34
+ end
35
+
36
+ describe "#initialize" do
37
+ it "accepts client_id and client_secret" do
38
+ service = Applicaster::Accounts.new("my_client_id", "my_client_secret")
39
+
40
+ expect(service.client_id).to eq("my_client_id")
41
+ expect(service.client_secret).to eq("my_client_secret")
42
+ end
43
+
44
+ it "takes default values from ENV vars" do
45
+ expect(accounts_service.client_id).to eq("client_id")
46
+ expect(accounts_service.client_secret).to eq("client_secret")
47
+ end
48
+ end
49
+
50
+ describe "#accounts" do
51
+ before do
52
+ stub_client_credentials_request
53
+ stub_accounts_index_request
54
+ end
55
+
56
+ it "returns an array of Account objects" do
57
+ expect(return_value).to be_kind_of(Array)
58
+ expect(return_value.size).to eq(2)
59
+ expect(return_value.first).to be_kind_of(Applicaster::Accounts::Account)
60
+ end
61
+
62
+ def return_value
63
+ @return_value ||= accounts_service.accounts
64
+ end
65
+
66
+ def stub_accounts_index_request
67
+ stub_request(:get, "https://accounts2.applicaster.com/api/v1/accounts.json").
68
+ with(query: { access_token: "client-credentials-token" }).
69
+ to_return(successful_json_response(mock_accounts_response))
70
+ end
71
+
72
+ def mock_accounts_response
73
+ [
74
+ {
75
+ id: "1-account-1",
76
+ name: "Account 1",
77
+ },
78
+ {
79
+ id: "2-account-2",
80
+ name: "Account 2",
81
+ },
82
+ ]
83
+ end
84
+ end
85
+
86
+ describe ".connection" do
87
+ let(:remote_url) { "https://accounts2.applicaster.com/test.json" }
88
+ let(:request_stub) { stub_request(:get, remote_url) }
89
+
90
+ context "with successful response" do
91
+ before do
92
+ request_stub
93
+ .to_return(successful_json_response({key: "val"}))
94
+ end
95
+
96
+ it "encodes JSON" do
97
+ expect(connection.get("/test.json").body).to eq("key" => "val")
98
+ end
99
+ end
100
+
101
+ context "when server responds with 503" do
102
+ before do
103
+ request_stub
104
+ .to_return(status: 503, body: "")
105
+ .to_return(successful_json_response({}))
106
+ end
107
+
108
+ it "retries the request" do
109
+ connection.get("/test.json")
110
+
111
+ expect(request_stub).to have_been_requested.twice
112
+ end
113
+ end
114
+
115
+ context "when server is not responding" do
116
+ around do |example|
117
+ with_base_url("http://localhost:6969") do
118
+ WebMock.allow_net_connect!
119
+ example.run
120
+ WebMock.disable_net_connect!
121
+ end
122
+ end
123
+
124
+ before do
125
+ @server = TCPServer.new(6969)
126
+ end
127
+
128
+ it "times out after 0.5 second with 2 retries" do
129
+ expect {
130
+ connection.get("/test.json") rescue nil
131
+ }.to change { Time.now }.by(a_value < 1.5)
132
+ end
133
+ end
134
+
135
+ def connection
136
+ Applicaster::Accounts.connection
137
+ end
138
+ end
139
+
140
+ def with_base_url(url)
141
+ value_bofre, ENV["ACCOUNTS_BASE_URL"] = ENV["ACCOUNTS_BASE_URL"], url
142
+ yield
143
+ ENV["ACCOUNTS_BASE_URL"] = value_bofre
144
+ end
145
+ end
@@ -0,0 +1,118 @@
1
+ RSpec.describe Applicaster::AuthHelpers do
2
+ let(:dummy_class) { Class.new(DummyController) { include Applicaster::AuthHelpers } }
3
+ let(:controller) { dummy_class.new }
4
+
5
+ before do
6
+ allow(controller).to receive(:session).and_return(session)
7
+
8
+ stub_current_user_requests
9
+ end
10
+
11
+ describe "#current_user" do
12
+ context "when token in session is valid" do
13
+ it "returns current_user" do
14
+ expect(controller.current_user.id).to eq("123")
15
+ end
16
+
17
+ it "memoizes value" do
18
+ expect(Applicaster::Accounts).to receive(:user_from_token)
19
+ .once
20
+ .and_call_original
21
+
22
+ controller.current_user
23
+ controller.current_user
24
+ end
25
+ end
26
+
27
+ context "when token in session is invalid" do
28
+ it "removes token from session" do
29
+ controller.current_user
30
+
31
+ expect(controller.session).to_not have_key(:omniauth_credentials)
32
+ end
33
+
34
+ def session
35
+ super.tap do |session|
36
+ session[:omniauth_credentials][:token] = "invalid-access-token"
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ describe "#user_signed_in?" do
43
+ context "when current_user is truthy" do
44
+ before do
45
+ allow(controller).to receive(:current_user).and_return({})
46
+ end
47
+
48
+ it "returns true" do
49
+ expect(controller.user_signed_in?).to be true
50
+ end
51
+ end
52
+
53
+ context "when current_user is nil" do
54
+ before do
55
+ allow(controller).to receive(:current_user).and_return(nil)
56
+ end
57
+
58
+ it "returns false" do
59
+ expect(controller.user_signed_in?).to be false
60
+ end
61
+ end
62
+ end
63
+
64
+ describe "#authenticate_user!" do
65
+ context "when current_user is truthy" do
66
+ before do
67
+ allow(controller).to receive(:current_user).and_return({})
68
+ end
69
+
70
+ it "does not redirect" do
71
+ expect(controller).to_not receive(:redirect_to)
72
+ controller.authenticate_user!
73
+ end
74
+ end
75
+
76
+ context "when current_user is nil" do
77
+ before do
78
+ allow(controller).to receive(:current_user).and_return(nil)
79
+ allow(controller).to receive(:url_for).and_return("/current")
80
+ end
81
+
82
+ it "redirects to '/auth/applicaster'" do
83
+ expect(controller).to receive(:redirect_to).with("/auth/applicaster")
84
+ controller.authenticate_user!
85
+ end
86
+
87
+ it "saves the path of the current request" do
88
+ controller.authenticate_user!
89
+
90
+ expect(controller.session[:path_before_login]).to eq("/current")
91
+ end
92
+ end
93
+ end
94
+
95
+ def session
96
+ {
97
+ omniauth_credentials: {
98
+ token: "valid-access-token"
99
+ }
100
+ }
101
+ end
102
+
103
+ def stub_current_user_requests
104
+ stub_request(:get, "https://accounts2.applicaster.com/api/v1/users/current.json")
105
+ .with(query: { access_token: "valid-access-token" })
106
+ .to_return(successful_json_response(mock_user_response))
107
+
108
+ stub_request(:get, "https://accounts2.applicaster.com/api/v1/users/current.json")
109
+ .with(query: { access_token: "invalid-access-token" })
110
+ .to_return(status: 401, body: "")
111
+ end
112
+
113
+ def mock_user_response
114
+ {
115
+ id: "123"
116
+ }
117
+ end
118
+ end
@@ -0,0 +1,38 @@
1
+ require "omniauth-applicaster"
2
+ require "webmock/rspec"
3
+
4
+ RSpec.configure do |config|
5
+ config.expect_with :rspec do |expectations|
6
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
7
+ end
8
+
9
+ config.mock_with :rspec do |mocks|
10
+ mocks.verify_partial_doubles = true
11
+ end
12
+
13
+ # These two settings work together to allow you to limit a spec run
14
+ # to individual examples or groups you care about by tagging them with
15
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
16
+ # get run.
17
+ config.filter_run :focus
18
+ config.run_all_when_everything_filtered = true
19
+
20
+ config.disable_monkey_patching!
21
+
22
+ config.warnings = true
23
+
24
+ if config.files_to_run.one?
25
+ config.default_formatter = 'doc'
26
+ end
27
+
28
+ # Print the 10 slowest examples and example groups at the
29
+ # end of the spec run, to help surface which specs are running
30
+ # particularly slow.
31
+ # config.profile_examples = 10
32
+
33
+ config.order = :random
34
+ Kernel.srand config.seed
35
+
36
+ Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")]
37
+ .each { |f| require f }
38
+ end
@@ -0,0 +1,15 @@
1
+ class DummyController
2
+ def session
3
+ {}
4
+ end
5
+
6
+ def redirect_to(path)
7
+ end
8
+
9
+ def url_for(opts)
10
+ end
11
+
12
+ def params
13
+ {}
14
+ end
15
+ end
@@ -0,0 +1,2 @@
1
+ ENV["ACCOUNTS_CLIENT_ID"] = "client_id"
2
+ ENV["ACCOUNTS_CLIENT_SECRET"] = "client_secret"
@@ -0,0 +1,21 @@
1
+ module WebmockStubsHelper
2
+ RSpec.configure do |config|
3
+ config.include self
4
+ end
5
+
6
+ def stub_client_credentials_request
7
+ stub_request(:post, "https://client_id:client_secret@accounts2.applicaster.com/oauth/token").
8
+ with(:body => {"grant_type"=>"client_credentials"}).
9
+ to_return(successful_json_response(access_token: "client-credentials-token"))
10
+ end
11
+
12
+ def successful_json_response(body)
13
+ {
14
+ status: 200,
15
+ body: body.to_json,
16
+ headers: {
17
+ "Content-Type" => "application/json"
18
+ }
19
+ }
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-applicaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neer Friedman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-05 00:00:00.000000000 Z
11
+ date: 2015-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: omniauth-oauth2
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +80,48 @@ dependencies:
52
80
  - - ">="
53
81
  - !ruby/object:Gem::Version
54
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: faraday
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.9.1
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.9.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: faraday_middleware
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: virtus
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
55
125
  description: Omniauth strategy for http://accounts.applicaster.com
56
126
  email:
57
127
  - neerfri@gmail.com
@@ -60,11 +130,14 @@ extensions: []
60
130
  extra_rdoc_files: []
61
131
  files:
62
132
  - ".gitignore"
133
+ - ".rspec"
63
134
  - Gemfile
64
135
  - LICENSE.txt
65
136
  - README.md
66
137
  - Rakefile
67
138
  - lib/applicaster/accounts.rb
139
+ - lib/applicaster/accounts/account.rb
140
+ - lib/applicaster/accounts/user.rb
68
141
  - lib/applicaster/auth_helpers.rb
69
142
  - lib/applicaster/sessions_controller_mixin.rb
70
143
  - lib/applicaster/user.rb
@@ -72,6 +145,13 @@ files:
72
145
  - lib/omniauth-applicaster/version.rb
73
146
  - lib/omniauth/strategies/applicaster.rb
74
147
  - omniauth-applicaster.gemspec
148
+ - spec/lib/applicaster/accounts/account_spec.rb
149
+ - spec/lib/applicaster/accounts_spec.rb
150
+ - spec/lib/applicaster/auth_helpers_spec.rb
151
+ - spec/spec_helper.rb
152
+ - spec/support/dummy_controller.rb
153
+ - spec/support/setup_env_vars.rb
154
+ - spec/support/webmock_stubs_helper.rb
75
155
  homepage: ''
76
156
  licenses:
77
157
  - MIT
@@ -96,4 +176,11 @@ rubygems_version: 2.2.2
96
176
  signing_key:
97
177
  specification_version: 4
98
178
  summary: Omniauth strategy for http://accounts.applicaster.com
99
- test_files: []
179
+ test_files:
180
+ - spec/lib/applicaster/accounts/account_spec.rb
181
+ - spec/lib/applicaster/accounts_spec.rb
182
+ - spec/lib/applicaster/auth_helpers_spec.rb
183
+ - spec/spec_helper.rb
184
+ - spec/support/dummy_controller.rb
185
+ - spec/support/setup_env_vars.rb
186
+ - spec/support/webmock_stubs_helper.rb