ucb_rails_user 1.0.0 → 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
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dc5620499c364c14d79ea1c8da21d420617fc235
|
4
|
+
data.tar.gz: b801bf9e74db566224e301efc79744ca0fc9b774
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 493ed7ef342b66b11c8e36b23b4a7d1087defc96108059994678702d734a849308c19f8030e43f22eb28bd02387f70d5ff2dfce24e9dc7bcab2d587edc211f77
|
7
|
+
data.tar.gz: 70bf635518c74e56f5e8c3edb992a8328278232274315f5512fcb0838346160279322a5ee7c015dff3e5d4d4feb3d6367103cde3ee67cfdc85616106412c240b
|
data/README.md
CHANGED
@@ -8,7 +8,7 @@ A [Rails engine](http://guides.rubyonrails.org/engines.html) that provides authe
|
|
8
8
|
* controller filters that block access to resources unless user is logged in
|
9
9
|
* a default home page that reflects user's login status
|
10
10
|
* admin screens for updating and deleting user records
|
11
|
-
|
11
|
+
|
12
12
|
This engine also includes the [Datatables](https://datatables.net/) JQuery plug-in, which is used in the user management screens. Host apps can make use of this as well.
|
13
13
|
|
14
14
|
## Prerequisites
|
@@ -128,6 +128,44 @@ skip_before_action :ensure_authenticated_user
|
|
128
128
|
|
129
129
|
`UsersController` uses `ensure_admin_user` as a `before_filter`
|
130
130
|
|
131
|
+
## Testing Support
|
132
|
+
|
133
|
+
This engine comes with a few features to help with testing.
|
134
|
+
|
135
|
+
The `UcbRailsUser::UserSessionManager::TestSessionManager` is a specialized session manager designed for test cases. It overrides the `login` method to lookup the given `uid` in the `users` table of the database. As long as the user record already exists, the `login` method will return successfully.
|
136
|
+
|
137
|
+
There is also a `UcbRailsUser::SpecHelpers` module that provides some support methods. Specifically, the `login_user` method can be used in request or integration specs to perform the behind-the-scenes work needed to login a given user. This method is implemented according to the [omniauth gem documentation.](https://github.com/omniauth/omniauth/wiki/Integration-Testing)
|
138
|
+
|
139
|
+
To add the testing support, add the following lines to your `spec_helper.rb` or `rails_helper.rb` file:
|
140
|
+
|
141
|
+
```ruby
|
142
|
+
# add this line
|
143
|
+
require 'ucb_rails_user/spec_helpers'
|
144
|
+
|
145
|
+
# then, somewhere in this block...
|
146
|
+
RSpec.configure do |config|
|
147
|
+
|
148
|
+
...
|
149
|
+
|
150
|
+
# ...add these lines
|
151
|
+
config.include UcbRailsUser::SpecHelpers
|
152
|
+
UcbRailsUser.config do |config|
|
153
|
+
config.user_session_manager = "UcbRailsUser::UserSessionManager::TestSessionManager"
|
154
|
+
end
|
155
|
+
```
|
156
|
+
|
157
|
+
Then, from within any request or integration spec, you should be able to do this:
|
158
|
+
|
159
|
+
```ruby
|
160
|
+
it "should do some neato feature" do
|
161
|
+
user = create(:user) # assumes you've added FactoryBot or similiar
|
162
|
+
login_user(user)
|
163
|
+
end
|
164
|
+
```
|
165
|
+
|
166
|
+
and the user should now be logged in.
|
167
|
+
|
168
|
+
|
131
169
|
## Overriding Model And Controller Behavior
|
132
170
|
|
133
171
|
The host app can add or override behavior of the `User` model and `UserController` as needed. We've followed the conventions suggested in the [Rails guide](http://guides.rubyonrails.org/engines.html#implementing-decorator-pattern-using-activesupport-concern) to make this as easy as possible.
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#
|
2
|
+
# Session manager designed to be used in tests. This bypasses the usual LDAP lookup when
|
3
|
+
# given a uid, and instead simply looks up the user in the current database.
|
4
|
+
#
|
5
|
+
# This assumes that the user already exists in the database, so your test scenario should
|
6
|
+
# set that up before attempting a login
|
7
|
+
#
|
8
|
+
module UcbRailsUser
|
9
|
+
module UserSessionManager
|
10
|
+
class TestSessionManager < ActiveInUserTable
|
11
|
+
|
12
|
+
def login(uid)
|
13
|
+
User.find_by_ldap_uid(uid)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module UcbRailsUser
|
2
|
+
module SpecHelpers
|
3
|
+
|
4
|
+
def login_user(user)
|
5
|
+
OmniAuth.config.test_mode = true
|
6
|
+
auth_mock(user.ldap_uid)
|
7
|
+
get "/login"
|
8
|
+
follow_redirect!
|
9
|
+
follow_redirect!
|
10
|
+
end
|
11
|
+
|
12
|
+
def auth_mock(uid)
|
13
|
+
OmniAuth.config.mock_auth[:cas] = OmniAuth::AuthHash.new(
|
14
|
+
provider: "cas",
|
15
|
+
uid: uid,
|
16
|
+
user_info: {
|
17
|
+
name: "mockuser"
|
18
|
+
},
|
19
|
+
credentials: {
|
20
|
+
token: "mock_token",
|
21
|
+
secret: "mock_secret"
|
22
|
+
}
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ucb_rails_user
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Downey
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2018-08-
|
14
|
+
date: 2018-08-29 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -225,6 +225,7 @@ files:
|
|
225
225
|
- app/models/ucb_rails_user/user_session_manager/in_people_ou.rb
|
226
226
|
- app/models/ucb_rails_user/user_session_manager/in_people_ou_add_to_users_table.rb
|
227
227
|
- app/models/ucb_rails_user/user_session_manager/ldap_person_user_wrapper.rb
|
228
|
+
- app/models/ucb_rails_user/user_session_manager/test_session_manager.rb
|
228
229
|
- app/models/user.rb
|
229
230
|
- app/views/ucb_rails_user/home/logged_in.html.haml
|
230
231
|
- app/views/ucb_rails_user/home/not_logged_in.html.haml
|
@@ -248,6 +249,7 @@ files:
|
|
248
249
|
- lib/templates/erb/scaffold/_form.html.erb
|
249
250
|
- lib/ucb_rails_user.rb
|
250
251
|
- lib/ucb_rails_user/engine.rb
|
252
|
+
- lib/ucb_rails_user/spec_helpers.rb
|
251
253
|
- lib/ucb_rails_user/version.rb
|
252
254
|
homepage: https://github.com/ucb-ist-eas/ucb_rails_user
|
253
255
|
licenses:
|
@@ -269,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
269
271
|
version: '0'
|
270
272
|
requirements: []
|
271
273
|
rubyforge_project:
|
272
|
-
rubygems_version: 2.
|
274
|
+
rubygems_version: 2.4.8
|
273
275
|
signing_key:
|
274
276
|
specification_version: 4
|
275
277
|
summary: Rails engine for UCB user accounts
|