cm-devise_token_auth 0.1.30.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +13 -0
  3. data/README.md +688 -0
  4. data/Rakefile +34 -0
  5. data/app/controllers/devise_token_auth/application_controller.rb +17 -0
  6. data/app/controllers/devise_token_auth/concerns/set_user_by_token.rb +109 -0
  7. data/app/controllers/devise_token_auth/confirmations_controller.rb +31 -0
  8. data/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb +171 -0
  9. data/app/controllers/devise_token_auth/passwords_controller.rb +155 -0
  10. data/app/controllers/devise_token_auth/registrations_controller.rb +123 -0
  11. data/app/controllers/devise_token_auth/sessions_controller.rb +98 -0
  12. data/app/controllers/devise_token_auth/token_validations_controller.rb +23 -0
  13. data/app/models/devise_token_auth/concerns/user.rb +231 -0
  14. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  15. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  16. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  17. data/app/views/devise_token_auth/omniauth_failure.html.erb +2 -0
  18. data/app/views/devise_token_auth/omniauth_success.html.erb +8 -0
  19. data/app/views/layouts/omniauth_response.html.erb +31 -0
  20. data/config/initializers/devise.rb +203 -0
  21. data/config/locales/devise.en.yml +59 -0
  22. data/config/routes.rb +5 -0
  23. data/lib/devise_token_auth.rb +7 -0
  24. data/lib/devise_token_auth/controllers/helpers.rb +129 -0
  25. data/lib/devise_token_auth/controllers/url_helpers.rb +8 -0
  26. data/lib/devise_token_auth/engine.rb +25 -0
  27. data/lib/devise_token_auth/rails/routes.rb +65 -0
  28. data/lib/devise_token_auth/version.rb +3 -0
  29. data/lib/generators/devise_token_auth/USAGE +31 -0
  30. data/lib/generators/devise_token_auth/install_generator.rb +115 -0
  31. data/lib/generators/devise_token_auth/install_views_generator.rb +16 -0
  32. data/lib/generators/devise_token_auth/templates/devise_token_auth.rb +22 -0
  33. data/lib/generators/devise_token_auth/templates/devise_token_auth_create_users.rb.erb +54 -0
  34. data/lib/generators/devise_token_auth/templates/user.rb +3 -0
  35. data/lib/tasks/devise_token_auth_tasks.rake +4 -0
  36. data/test/controllers/demo_group_controller_test.rb +126 -0
  37. data/test/controllers/demo_mang_controller_test.rb +263 -0
  38. data/test/controllers/demo_user_controller_test.rb +262 -0
  39. data/test/controllers/devise_token_auth/confirmations_controller_test.rb +107 -0
  40. data/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +167 -0
  41. data/test/controllers/devise_token_auth/passwords_controller_test.rb +287 -0
  42. data/test/controllers/devise_token_auth/registrations_controller_test.rb +458 -0
  43. data/test/controllers/devise_token_auth/sessions_controller_test.rb +221 -0
  44. data/test/controllers/overrides/confirmations_controller_test.rb +44 -0
  45. data/test/controllers/overrides/omniauth_callbacks_controller_test.rb +44 -0
  46. data/test/controllers/overrides/passwords_controller_test.rb +62 -0
  47. data/test/controllers/overrides/registrations_controller_test.rb +40 -0
  48. data/test/controllers/overrides/sessions_controller_test.rb +33 -0
  49. data/test/controllers/overrides/token_validations_controller_test.rb +38 -0
  50. data/test/dummy/README.rdoc +28 -0
  51. data/test/dummy/Rakefile +6 -0
  52. data/test/dummy/app/assets/images/logo.jpg +0 -0
  53. data/test/dummy/app/assets/images/omniauth-provider-settings.png +0 -0
  54. data/test/dummy/app/assets/javascripts/application.js +13 -0
  55. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  56. data/test/dummy/app/controllers/application_controller.rb +16 -0
  57. data/test/dummy/app/controllers/demo_group_controller.rb +13 -0
  58. data/test/dummy/app/controllers/demo_mang_controller.rb +12 -0
  59. data/test/dummy/app/controllers/demo_user_controller.rb +12 -0
  60. data/test/dummy/app/controllers/overrides/confirmations_controller.rb +32 -0
  61. data/test/dummy/app/controllers/overrides/omniauth_callbacks_controller.rb +14 -0
  62. data/test/dummy/app/controllers/overrides/passwords_controller.rb +39 -0
  63. data/test/dummy/app/controllers/overrides/registrations_controller.rb +27 -0
  64. data/test/dummy/app/controllers/overrides/sessions_controller.rb +43 -0
  65. data/test/dummy/app/controllers/overrides/token_validations_controller.rb +23 -0
  66. data/test/dummy/app/helpers/application_helper.rb +1065 -0
  67. data/test/dummy/app/models/evil_user.rb +3 -0
  68. data/test/dummy/app/models/mang.rb +3 -0
  69. data/test/dummy/app/models/user.rb +18 -0
  70. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  71. data/test/dummy/bin/bundle +3 -0
  72. data/test/dummy/bin/rails +8 -0
  73. data/test/dummy/bin/rake +8 -0
  74. data/test/dummy/bin/spring +18 -0
  75. data/test/dummy/config.ru +16 -0
  76. data/test/dummy/config/application.rb +23 -0
  77. data/test/dummy/config/application.yml.bk +0 -0
  78. data/test/dummy/config/boot.rb +5 -0
  79. data/test/dummy/config/database.yml +31 -0
  80. data/test/dummy/config/environment.rb +5 -0
  81. data/test/dummy/config/environments/development.rb +44 -0
  82. data/test/dummy/config/environments/production.rb +82 -0
  83. data/test/dummy/config/environments/test.rb +40 -0
  84. data/test/dummy/config/initializers/assets.rb +8 -0
  85. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  86. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  87. data/test/dummy/config/initializers/devise_token_auth.rb +22 -0
  88. data/test/dummy/config/initializers/figaro.rb +1 -0
  89. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  90. data/test/dummy/config/initializers/inflections.rb +16 -0
  91. data/test/dummy/config/initializers/mime_types.rb +4 -0
  92. data/test/dummy/config/initializers/omniauth.rb +8 -0
  93. data/test/dummy/config/initializers/session_store.rb +3 -0
  94. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  95. data/test/dummy/config/locales/en.yml +23 -0
  96. data/test/dummy/config/routes.rb +30 -0
  97. data/test/dummy/config/secrets.yml +22 -0
  98. data/test/dummy/config/spring.rb +1 -0
  99. data/test/dummy/db/migrate/20140715061447_devise_token_auth_create_users.rb +56 -0
  100. data/test/dummy/db/migrate/20140715061805_devise_token_auth_create_mangs.rb +56 -0
  101. data/test/dummy/db/migrate/20140829044006_add_operating_thetan_to_user.rb +6 -0
  102. data/test/dummy/db/migrate/20140916224624_add_favorite_color_to_mangs.rb +5 -0
  103. data/test/dummy/db/migrate/20140928231203_devise_token_auth_create_evil_users.rb +57 -0
  104. data/test/dummy/db/schema.rb +114 -0
  105. data/test/dummy/public/404.html +67 -0
  106. data/test/dummy/public/422.html +67 -0
  107. data/test/dummy/public/500.html +66 -0
  108. data/test/dummy/public/favicon.ico +0 -0
  109. data/test/fixtures/evil_users.yml +29 -0
  110. data/test/fixtures/mangs.yml +29 -0
  111. data/test/fixtures/users.yml +29 -0
  112. data/test/integration/navigation_test.rb +10 -0
  113. data/test/lib/generators/devise_token_auth/install_generator_test.rb +178 -0
  114. data/test/lib/generators/devise_token_auth/install_views_generator_test.rb +23 -0
  115. data/test/models/user_test.rb +90 -0
  116. data/test/test_helper.rb +60 -0
  117. metadata +310 -0
@@ -0,0 +1,8 @@
1
+ module DeviseTokenAuth
2
+ module Controllers
3
+ module UrlHelpers
4
+ def self.define_helpers(mapping)
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,25 @@
1
+ require 'devise_token_auth/rails/routes'
2
+
3
+ module DeviseTokenAuth
4
+ class Engine < ::Rails::Engine
5
+ isolate_namespace DeviseTokenAuth
6
+
7
+ initializer "devise_token_auth.url_helpers" do
8
+ Devise.helpers << DeviseTokenAuth::Controllers::Helpers
9
+ end
10
+ end
11
+
12
+ mattr_accessor :change_headers_on_each_request,
13
+ :token_lifespan,
14
+ :batch_request_buffer_throttle,
15
+ :omniauth_prefix
16
+
17
+ self.change_headers_on_each_request = true
18
+ self.token_lifespan = 2.weeks
19
+ self.batch_request_buffer_throttle = 5.seconds
20
+ self.omniauth_prefix = '/omniauth'
21
+
22
+ def self.setup(&block)
23
+ yield self
24
+ end
25
+ end
@@ -0,0 +1,65 @@
1
+ module ActionDispatch::Routing
2
+ class Mapper
3
+ def mount_devise_token_auth_for(resource, opts)
4
+ # ensure objects exist to simplify attr checks
5
+ opts[:controllers] ||= {}
6
+ opts[:skip] ||= []
7
+
8
+ # check for ctrl overrides, fall back to defaults
9
+ sessions_ctrl = opts[:controllers][:sessions] || "devise_token_auth/sessions"
10
+ registrations_ctrl = opts[:controllers][:registrations] || "devise_token_auth/registrations"
11
+ passwords_ctrl = opts[:controllers][:passwords] || "devise_token_auth/passwords"
12
+ confirmations_ctrl = opts[:controllers][:confirmations] || "devise_token_auth/confirmations"
13
+ token_validations_ctrl = opts[:controllers][:token_validations] || "devise_token_auth/token_validations"
14
+ omniauth_ctrl = opts[:controllers][:omniauth_callbacks] || "devise_token_auth/omniauth_callbacks"
15
+
16
+ # define devise controller mappings
17
+ controllers = {:sessions => sessions_ctrl,
18
+ :registrations => registrations_ctrl,
19
+ :passwords => passwords_ctrl,
20
+ :confirmations => confirmations_ctrl,
21
+ :omniauth_callbacks => omniauth_ctrl}
22
+
23
+ # remove any unwanted devise modules
24
+ opts[:skip].each{|item| controllers.delete(item)}
25
+
26
+ scope opts[:at] do
27
+ devise_for resource.pluralize.underscore.to_sym,
28
+ :class_name => resource,
29
+ :module => :devise,
30
+ :path => "",
31
+ :controllers => controllers
32
+
33
+ devise_scope resource.underscore.to_sym do
34
+ # path to verify token validity
35
+ get "validate_token", to: "#{token_validations_ctrl}#validate_token"
36
+
37
+ # omniauth routes. only define if omniauth is installed and not skipped.
38
+ if defined?(::OmniAuth) and not opts[:skip].include?(:omniauth_callbacks)
39
+ get "failure", to: "#{omniauth_ctrl}#omniauth_failure"
40
+ get ":provider/callback", to: "#{omniauth_ctrl}#omniauth_success"
41
+
42
+ # preserve the resource class thru oauth authentication by setting name of
43
+ # resource as "resource_class" param
44
+ match ":provider", to: redirect{|params, request|
45
+ # get the current querystring
46
+ qs = CGI::parse(request.env["QUERY_STRING"])
47
+
48
+ # append name of current resource
49
+ qs["resource_class"] = [resource]
50
+
51
+ # re-construct the path for omniauth
52
+ "#{::OmniAuth::config.path_prefix}/#{params[:provider]}?#{{}.tap {|hash| qs.each{|k, v| hash[k] = v.first}}.to_param}"
53
+ }, via: [:get]
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ # ignore error about omniauth/multiple model support
60
+ def set_omniauth_path_prefix!(path_prefix)
61
+ ::OmniAuth.config.path_prefix = path_prefix
62
+ end
63
+
64
+ end
65
+ end
@@ -0,0 +1,3 @@
1
+ module DeviseTokenAuth
2
+ VERSION = "0.1.30.1"
3
+ end
@@ -0,0 +1,31 @@
1
+ Description:
2
+ This generator will install all the necessary configuration and migration
3
+ files for the devies_token_auth gem. See
4
+ https://github.com/lynndylanhurley/devise_token_auth for more information.
5
+
6
+ Arguments:
7
+ USER_CLASS # The name of the class to use for user authentication. Default is
8
+ # 'User'
9
+ MOUNT_PATH # The path at which to mount the authentication routes. Default is
10
+ # 'auth'. More detail documentation is here:
11
+ # https://github.com/lynndylanhurley/devise_token_auth#usage
12
+
13
+ Example:
14
+ rails generate devise_token_auth:install User auth
15
+
16
+ This will create:
17
+ config/initializers/devise_token_auth.rb
18
+ db/migrate/<%= Time.now.utc.strftime("%Y%m%d%H%M%S") %>_create_devise_token_auth_create_users.rb
19
+ app/models/user.rb
20
+
21
+ If 'app/models/user.rb' already exists, the following line will be inserted
22
+ after the class definition:
23
+ include DeviseTokenAuth::Concerns::User
24
+
25
+ The following line will be inserted into your application controller at
26
+ app/controllers/application_controller.rb:
27
+ include DeviseTokenAuth::Concerns::SetUserByToken
28
+
29
+ The following line will be inserted at the top of 'config/routes.rb' if it
30
+ does not already exist:
31
+ mount_devise_token_auth_for "User", at: '/auth'
@@ -0,0 +1,115 @@
1
+ module DeviseTokenAuth
2
+ class InstallGenerator < Rails::Generators::Base
3
+ include Rails::Generators::Migration
4
+
5
+ source_root File.expand_path('../templates', __FILE__)
6
+
7
+ argument :user_class, type: :string, default: "User"
8
+ argument :mount_path, type: :string, default: '/auth'
9
+
10
+ def create_initializer_file
11
+ copy_file("devise_token_auth.rb", "config/initializers/devise_token_auth.rb")
12
+ end
13
+
14
+ def copy_migrations
15
+ if self.class.migration_exists?("db/migrate", "devise_token_auth_create_#{ user_class.underscore }")
16
+ say_status("skipped", "Migration 'devise_token_auth_create_#{ user_class.underscore }' already exists")
17
+ else
18
+ migration_template(
19
+ "devise_token_auth_create_users.rb.erb",
20
+ "db/migrate/devise_token_auth_create_#{ user_class.pluralize.underscore }.rb"
21
+ )
22
+ end
23
+ end
24
+
25
+ def create_user_model
26
+ fname = "app/models/#{ user_class.underscore }.rb"
27
+ unless File.exist?(File.join(destination_root, fname))
28
+ template("user.rb", fname)
29
+ else
30
+ inclusion = "include DeviseTokenAuth::Concerns::User"
31
+ unless parse_file_for_line(fname, inclusion)
32
+ inject_into_file fname, after: "class #{user_class} < ActiveRecord::Base\n" do <<-'RUBY'
33
+ include DeviseTokenAuth::Concerns::User
34
+ RUBY
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ def include_controller_concerns
41
+ fname = "app/controllers/application_controller.rb"
42
+ line = "include DeviseTokenAuth::Concerns::SetUserByToken"
43
+
44
+ if File.exist?(File.join(destination_root, fname))
45
+ if parse_file_for_line(fname, line)
46
+ say_status("skipped", "Concern is already included in the application controller.")
47
+ else
48
+ inject_into_file fname, after: "class ApplicationController < ActionController::Base\n" do <<-'RUBY'
49
+ include DeviseTokenAuth::Concerns::SetUserByToken
50
+ RUBY
51
+ end
52
+ end
53
+ else
54
+ say_status("skipped", "app/controllers/application_controller.rb not found. Add 'include DeviseTokenAuth::Concerns::SetUserByToken' to any controllers that require authentication.")
55
+ end
56
+ end
57
+
58
+ def add_route_mount
59
+ f = "config/routes.rb"
60
+ str = "mount_devise_token_auth_for '#{user_class}', at: '#{mount_path}'"
61
+
62
+ if File.exist?(File.join(destination_root, f))
63
+ line = parse_file_for_line(f, "mount_devise_token_auth_for")
64
+
65
+ unless line
66
+ line = "Rails.application.routes.draw do"
67
+ existing_user_class = false
68
+ else
69
+ existing_user_class = true
70
+ end
71
+
72
+ if parse_file_for_line(f, str)
73
+ say_status("skipped", "Routes already exist for #{user_class} at #{mount_path}")
74
+ else
75
+ insert_after_line(f, line, str)
76
+
77
+ if existing_user_class
78
+ scoped_routes = ""+
79
+ "as :#{user_class.underscore} do\n"+
80
+ " # Define routes for #{user_class} within this block.\n"+
81
+ " end\n"
82
+ insert_after_line(f, str, scoped_routes)
83
+ end
84
+ end
85
+ else
86
+ say_status("skipped", "config/routes.rb not found. Add \"mount_devise_token_auth_for '#{user_class}', at: '#{mount_path}'\" to your routes file.")
87
+ end
88
+ end
89
+
90
+ private
91
+
92
+ def self.next_migration_number(path)
93
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
94
+ end
95
+
96
+ def insert_after_line(filename, line, str)
97
+ gsub_file filename, /(#{Regexp.escape(line)})/mi do |match|
98
+ "#{match}\n #{str}"
99
+ end
100
+ end
101
+
102
+ def parse_file_for_line(filename, str)
103
+ match = false
104
+
105
+ File.open(File.join(destination_root, filename)) do |f|
106
+ f.each_line do |line|
107
+ if line =~ /(#{Regexp.escape(str)})/mi
108
+ match = line
109
+ end
110
+ end
111
+ end
112
+ match
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,16 @@
1
+ module DeviseTokenAuth
2
+ class InstallViewsGenerator < Rails::Generators::Base
3
+ source_root File.expand_path('../../../../app/views/devise/mailer', __FILE__)
4
+
5
+ def copy_mailer_templates
6
+ copy_file(
7
+ "confirmation_instructions.html.erb",
8
+ "app/views/devise/mailer/confirmation_instructions.html.erb"
9
+ )
10
+ copy_file(
11
+ "reset_password_instructions.html.erb",
12
+ "app/views/devise/mailer/reset_password_instructions.html.erb"
13
+ )
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ DeviseTokenAuth.setup do |config|
2
+ # By default the authorization headers will change after each request. The
3
+ # client is responsible for keeping track of the changing tokens. Change
4
+ # this to false to prevent the Authorization header from changing after
5
+ # each request.
6
+ #config.change_headers_on_each_request = true
7
+
8
+ # By default, users will need to re-authenticate after 2 weeks. This setting
9
+ # determines how long tokens will remain valid after they are issued.
10
+ #config.token_lifespan = 2.weeks
11
+
12
+ # Sometimes it's necessary to make several requests to the API at the same
13
+ # time. In this case, each request in the batch will need to share the same
14
+ # auth token. This setting determines how far apart the requests can be while
15
+ # still using the same auth token.
16
+ #config.batch_request_buffer_throttle = 5.seconds
17
+
18
+ # This route will be the prefix for all oauth2 redirect callbacks. For
19
+ # example, using the default '/omniauth', the github oauth2 provider will
20
+ # redirect successful authentications to '/omniauth/github/callback'
21
+ #config.omniauth_prefix = "/omniauth"
22
+ end
@@ -0,0 +1,54 @@
1
+ class DeviseTokenAuthCreate<%= user_class.pluralize %> < ActiveRecord::Migration
2
+ def change
3
+ create_table(:<%= user_class.pluralize.underscore %>) do |t|
4
+ ## Required
5
+ t.string :provider, :null => false
6
+ t.string :uid, :null => false, :default => ""
7
+
8
+ ## Database authenticatable
9
+ t.string :encrypted_password, :null => false, :default => ""
10
+
11
+ ## Recoverable
12
+ t.string :reset_password_token
13
+ t.datetime :reset_password_sent_at
14
+
15
+ ## Rememberable
16
+ t.datetime :remember_created_at
17
+
18
+ ## Trackable
19
+ t.integer :sign_in_count, :default => 0, :null => false
20
+ t.datetime :current_sign_in_at
21
+ t.datetime :last_sign_in_at
22
+ t.string :current_sign_in_ip
23
+ t.string :last_sign_in_ip
24
+
25
+ ## Confirmable
26
+ t.string :confirmation_token
27
+ t.datetime :confirmed_at
28
+ t.datetime :confirmation_sent_at
29
+ t.string :unconfirmed_email # Only if using reconfirmable
30
+
31
+ ## Lockable
32
+ # t.integer :failed_attempts, :default => 0, :null => false # Only if lock strategy is :failed_attempts
33
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
34
+ # t.datetime :locked_at
35
+
36
+ ## User Info
37
+ t.string :name
38
+ t.string :nickname
39
+ t.string :image
40
+ t.string :email
41
+
42
+ ## Tokens
43
+ t.text :tokens
44
+
45
+ t.timestamps
46
+ end
47
+
48
+ add_index :<%= user_class.pluralize.underscore %>, :email
49
+ add_index :<%= user_class.pluralize.underscore %>, [:uid, :provider], :unique => true
50
+ add_index :<%= user_class.pluralize.underscore %>, :reset_password_token, :unique => true
51
+ # add_index :<%= user_class.pluralize.underscore %>, :confirmation_token, :unique => true
52
+ # add_index :<%= user_class.pluralize.underscore %>, :unlock_token, :unique => true
53
+ end
54
+ end
@@ -0,0 +1,3 @@
1
+ class <%= user_class %> < ActiveRecord::Base
2
+ include DeviseTokenAuth::Concerns::User
3
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :devise_token_auth do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,126 @@
1
+ require 'test_helper'
2
+
3
+ # was the web request successful?
4
+ # was the user redirected to the right page?
5
+ # was the user successfully authenticated?
6
+ # was the correct object stored in the response?
7
+ # was the appropriate message delivered in the json payload?
8
+
9
+ class DemoGroupControllerTest < ActionDispatch::IntegrationTest
10
+ describe DemoGroupController do
11
+ describe "Token access" do
12
+ before do
13
+ # user
14
+ @resource = users(:confirmed_email_user)
15
+ @resource.skip_confirmation!
16
+ @resource.save!
17
+
18
+ @resource_auth_headers = @resource.create_new_auth_token
19
+
20
+ @resource_token = @resource_auth_headers['access-token']
21
+ @resource_client_id = @resource_auth_headers['client']
22
+ @resource_expiry = @resource_auth_headers['expiry']
23
+
24
+ # mang
25
+ @mang = mangs(:confirmed_email_user)
26
+ @mang.skip_confirmation!
27
+ @mang.save!
28
+
29
+ @mang_auth_headers = @mang.create_new_auth_token
30
+
31
+ @mang_token = @mang_auth_headers['access-token']
32
+ @mang_client_id = @mang_auth_headers['client']
33
+ @mang_expiry = @mang_auth_headers['expiry']
34
+ end
35
+
36
+ describe 'user access' do
37
+ before do
38
+ # ensure that request is not treated as batch request
39
+ age_token(@resource, @resource_client_id)
40
+
41
+ get '/demo/members_only_group', {}, @resource_auth_headers
42
+
43
+ @resp_token = response.headers['access-token']
44
+ @resp_client_id = response.headers['client']
45
+ @resp_expiry = response.headers['expiry']
46
+ @resp_uid = response.headers['uid']
47
+ end
48
+
49
+ test 'request is successful' do
50
+ assert_equal 200, response.status
51
+ end
52
+
53
+ describe 'devise mappings' do
54
+ it 'should define current_user' do
55
+ assert_equal @resource, @controller.current_user
56
+ end
57
+
58
+ it 'should define user_signed_in?' do
59
+ assert @controller.user_signed_in?
60
+ end
61
+
62
+ it 'should not define current_mang' do
63
+ refute_equal @resource, @controller.current_mang
64
+ end
65
+
66
+ it 'should define current_member' do
67
+ assert_equal @resource, @controller.current_member
68
+ end
69
+
70
+ it 'should define current_members' do
71
+ assert @controller.current_members.include? @resource
72
+ end
73
+
74
+ it 'should define member_signed_in?' do
75
+ assert @controller.current_members.include? @resource
76
+ end
77
+ end
78
+ end
79
+
80
+ describe 'mang access' do
81
+ before do
82
+ # ensure that request is not treated as batch request
83
+ age_token(@mang, @mang_client_id)
84
+
85
+ get '/demo/members_only_group', {}, @mang_auth_headers
86
+
87
+ @resp_token = response.headers['access-token']
88
+ @resp_client_id = response.headers['client']
89
+ @resp_expiry = response.headers['expiry']
90
+ @resp_uid = response.headers['uid']
91
+ end
92
+
93
+ test 'request is successful' do
94
+ assert_equal 200, response.status
95
+ end
96
+
97
+ describe 'devise mappings' do
98
+ it 'should define current_mang' do
99
+ assert_equal @mang, @controller.current_mang
100
+ end
101
+
102
+ it 'should define mang_signed_in?' do
103
+ assert @controller.mang_signed_in?
104
+ end
105
+
106
+ it 'should not define current_mang' do
107
+ refute_equal @mang, @controller.current_user
108
+ end
109
+
110
+ it 'should define current_member' do
111
+ assert_equal @mang, @controller.current_member
112
+ end
113
+
114
+ it 'should define current_members' do
115
+ assert @controller.current_members.include? @mang
116
+ end
117
+
118
+ it 'should define member_signed_in?' do
119
+ assert @controller.current_members.include? @mang
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
126
+