doorkeeper_sso_client 0.2.2 → 0.2.5

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: bb90fce03417e63ffe090a2f3e361eaa3b7791d8
4
- data.tar.gz: a8c6ce0b3cb250b2d24337409faf7496ab6ae5c3
3
+ metadata.gz: 8ee8d13e7e88d390380516c9def8b0c68a93d3f7
4
+ data.tar.gz: 34dd41b3aff5231b38fe5f848a135b23bdc71dac
5
5
  SHA512:
6
- metadata.gz: e915e2cabf6f82644d3e54f28cdbffa877bc1af4ba833a43dfab0675318bedb5e8e1e595b40ba791ede90ec5f5a4e4864bb0575d63fd00e422d102522d07ba47
7
- data.tar.gz: 5f6d0c4c69a05e0d81ea0e714ee8f6e6764ceb926d465f9a712648327961e5c8d2094351682e1a7da60ea30832554b7cca4d24c350b2261e2c29014d4aec5052
6
+ metadata.gz: f8a82ab4fc2068f55b0b0c5f4d5d3997d1d0b657baf9872923e819b949187c3ccaf75859c36cd6ba3293eaa63a315448d8de8ed8a3be30c17ee1e9cf97909c8a
7
+ data.tar.gz: c1413b8872de5be18ee5b5c475c8abd211301c4bf837fdc0ecd7bb9370b8c68d018341bd15141d562a30059b476a57d6dbb4c97a5cc52565afd6ebadf7d8b64b
@@ -1,3 +1,4 @@
1
+ require 'doorkeeper_sso_client/mixins'
1
2
  require "doorkeeper_sso_client/engine"
2
3
  require 'doorkeeper_sso_client/config'
3
4
  require 'doorkeeper_sso_client/logging'
@@ -13,5 +13,11 @@ module DoorkeeperSsoClient
13
13
  :request_specs => false
14
14
  g.fixture_replacement :fabrication
15
15
  end
16
+
17
+ config.before_initialize do
18
+ if Object.const_defined?("Devise")
19
+ ::Devise::Controllers::Helpers.send(:include, DoorkeeperSsoClient::Mixins::ControllerHelpers)
20
+ end
21
+ end
16
22
  end
17
23
  end
@@ -0,0 +1,6 @@
1
+ require 'doorkeeper_sso_client/mixins/controller_helpers'
2
+
3
+ module DoorkeeperSsoClient
4
+ module Mixins
5
+ end
6
+ end
@@ -0,0 +1,14 @@
1
+ module DoorkeeperSsoClient
2
+ module Mixins
3
+ module ControllerHelpers
4
+ extend ActiveSupport::Concern
5
+
6
+ def validate_passport!
7
+ if sso_signed_in?
8
+ sign_out(current_sso) unless current_sso.passport.try(:active?)
9
+ end
10
+ return true
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module DoorkeeperSsoClient
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.5"
3
3
  end
@@ -0,0 +1,5 @@
1
+ Fabricator('DoorkeeperSsoClient::Passport') do
2
+ uid { SecureRandom.uuid }
3
+ secret { SecureRandom.uuid }
4
+ token { SecureRandom.urlsafe_base64(64) }
5
+ end
@@ -1,6 +1,8 @@
1
1
  Fabricator(:user) do
2
2
  first_name { FFaker::Name.first_name }
3
3
  last_name { FFaker::Name.last_name }
4
+ password { 'password' }
4
5
  name { |attrs| [attrs[:first_name], attrs[:last_name]].join(" ") }
5
6
  email { FFaker::Internet.email }
7
+ passport { Fabricate('DoorkeeperSsoClient::Passport') }
6
8
  end
@@ -0,0 +1,45 @@
1
+ require 'rails_helper'
2
+
3
+ # DoorkeeperSsoClient::Mixins::ControllerHelpers automatically included into Devise::Controller::Helpers
4
+
5
+ RSpec.describe "DoorkeeperSsoClient::Mixins::ControllerHelpers", :type => :controller do
6
+ controller(ApplicationController) do
7
+ devise_group :sso, contains: [:user]
8
+
9
+ before_filter :authenticate_user!
10
+ before_filter :validate_passport!
11
+
12
+ def index
13
+ render nothing: :true
14
+ end
15
+ end
16
+
17
+ let(:user) { Fabricate(:user) }
18
+ let(:passport) { Fabricate(:passport, identity: user) }
19
+
20
+ describe "before_filter#validate_passport!" do
21
+ context "when user is logged in" do
22
+ before(:each) do
23
+ @request.env["devise.mapping"] = Devise.mappings[:user]
24
+ sign_in user
25
+ get :index
26
+ end
27
+
28
+ context "with valid passport" do
29
+
30
+ it "remain signed in" do
31
+ expect(controller.user_signed_in?).to be_truthy
32
+ end
33
+ end
34
+ end
35
+
36
+ context "when user is logged out" do
37
+ let(:passport) { Fabricate(:passport, identity: user, revoked_at: Time.now, revoke_reason: :logout ) }
38
+
39
+ it "log out user" do
40
+ expect(controller.user_signed_in?).to be_falsey
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,14 @@
1
+ module ControllerMacros
2
+ def login_user
3
+ @request.env["devise.mapping"] = Devise.mappings[:user]
4
+ user = Fabricate(:user)
5
+ user.confirm! # or set a confirmed_at inside the factory. Only necessary if you are using the "confirmable" module
6
+ sign_in user
7
+ end
8
+ end
9
+
10
+
11
+ RSpec.configure do |config|
12
+ config.include Devise::TestHelpers, :type => :controller
13
+ config.extend ControllerMacros, :type => :controller
14
+ end
@@ -1,6 +1,9 @@
1
1
  class User < ActiveRecord::Base
2
2
 
3
- has_one :passport, as: :identity
3
+ devise :database_authenticatable, :registerable,
4
+ :recoverable, :rememberable, :trackable, :validatable, password_length: 6..128
5
+
6
+ has_one :passport, as: :identity, class_name: "DoorkeeperSsoClient::Passport"
4
7
 
5
8
  validates :email, :first_name, presence: true
6
9
 
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ devise_for :users
3
+ end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # This file is auto-generated from the current state of the database. Instead
3
2
  # of editing this file, please use the migrations feature of Active Record to
4
3
  # incrementally modify your database, and then regenerate this schema definition.
@@ -45,6 +44,15 @@ ActiveRecord::Schema.define(version: 20150603155315) do
45
44
  t.string "first_name"
46
45
  t.string "last_name"
47
46
  t.string "lang", default: "EN"
47
+ t.string "encrypted_password", default: "", null: false
48
+ t.string "reset_password_token"
49
+ t.datetime "reset_password_sent_at"
50
+ t.datetime "remember_created_at"
51
+ t.integer "sign_in_count", default: 0, null: false
52
+ t.datetime "current_sign_in_at"
53
+ t.datetime "last_sign_in_at"
54
+ t.inet "current_sign_in_ip"
55
+ t.inet "last_sign_in_ip"
48
56
  t.datetime "created_at"
49
57
  t.datetime "updated_at"
50
58
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doorkeeper_sso_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Wong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-17 00:00:00.000000000 Z
11
+ date: 2015-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth
@@ -290,6 +290,20 @@ dependencies:
290
290
  - - ">="
291
291
  - !ruby/object:Gem::Version
292
292
  version: '1'
293
+ - !ruby/object:Gem::Dependency
294
+ name: devise
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - "~>"
298
+ - !ruby/object:Gem::Version
299
+ version: '3.0'
300
+ type: :development
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - "~>"
305
+ - !ruby/object:Gem::Version
306
+ version: '3.0'
293
307
  description: Provides SSO auth functionality based on Omniauth
294
308
  email:
295
309
  - john@flexnode.com
@@ -301,25 +315,31 @@ files:
301
315
  - lib/doorkeeper_sso_client/config.rb
302
316
  - lib/doorkeeper_sso_client/engine.rb
303
317
  - lib/doorkeeper_sso_client/logging.rb
318
+ - lib/doorkeeper_sso_client/mixins.rb
319
+ - lib/doorkeeper_sso_client/mixins/controller_helpers.rb
304
320
  - lib/doorkeeper_sso_client/passport_verifier.rb
305
321
  - lib/doorkeeper_sso_client/version.rb
306
322
  - lib/doorkeeper_sso_client/warden/hooks/after_fetch.rb
307
323
  - lib/omniauth/strategies/doorkeeper_sso.rb
308
324
  - lib/tasks/doorkeeper_sso_client_tasks.rake
309
325
  - spec/controllers/doorkeeper_sso_client/callbacks_controller_spec.rb
326
+ - spec/fabricators/passport_fabricator.rb
310
327
  - spec/fabricators/user_fabricator.rb
311
328
  - spec/lib/doorkeeper_sso_client/config_spec.rb
329
+ - spec/lib/doorkeeper_sso_client/mixins/controller_helper_spec.rb
312
330
  - spec/models/config_spec.rb
313
331
  - spec/models/passport_spec.rb
314
332
  - spec/rails_helper.rb
315
333
  - spec/spec_helper.rb
316
334
  - spec/support/database_cleaner.rb
335
+ - spec/support/devise.rb
317
336
  - spec/support/fabrication.rb
318
337
  - spec/support/vcr.rb
319
338
  - spec/test_app/Rakefile
320
339
  - spec/test_app/app/controllers/application_controller.rb
321
340
  - spec/test_app/app/models/user.rb
322
341
  - spec/test_app/config/database.yml
342
+ - spec/test_app/config/routes.rb
323
343
  - spec/test_app/db/schema.rb
324
344
  homepage: https://github.com/flexnode/sso_client
325
345
  licenses:
@@ -347,18 +367,22 @@ specification_version: 4
347
367
  summary: Client gem for flexnode/doorkeeper_sso
348
368
  test_files:
349
369
  - spec/controllers/doorkeeper_sso_client/callbacks_controller_spec.rb
370
+ - spec/fabricators/passport_fabricator.rb
350
371
  - spec/fabricators/user_fabricator.rb
351
372
  - spec/lib/doorkeeper_sso_client/config_spec.rb
373
+ - spec/lib/doorkeeper_sso_client/mixins/controller_helper_spec.rb
352
374
  - spec/models/config_spec.rb
353
375
  - spec/models/passport_spec.rb
354
376
  - spec/rails_helper.rb
355
377
  - spec/spec_helper.rb
356
378
  - spec/support/database_cleaner.rb
379
+ - spec/support/devise.rb
357
380
  - spec/support/fabrication.rb
358
381
  - spec/support/vcr.rb
359
382
  - spec/test_app/app/controllers/application_controller.rb
360
383
  - spec/test_app/app/models/user.rb
361
384
  - spec/test_app/config/database.yml
385
+ - spec/test_app/config/routes.rb
362
386
  - spec/test_app/db/schema.rb
363
387
  - spec/test_app/Rakefile
364
388
  has_rdoc: