gds-sso 12.1.0 → 13.0.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 +4 -4
- data/Gemfile +1 -2
- data/README.md +2 -2
- data/Rakefile +1 -3
- data/app/controllers/api/user_controller.rb +3 -3
- data/app/controllers/authentications_controller.rb +2 -2
- data/lib/gds-sso/api_access.rb +1 -4
- data/lib/gds-sso/failure_app.rb +1 -2
- data/lib/gds-sso/version.rb +1 -1
- data/spec/controller/api_user_controller_spec.rb +6 -6
- data/spec/internal/app/controllers/example_controller.rb +5 -5
- data/spec/internal/db/combustion_test.sqlite +0 -0
- data/spec/internal/log/test.log +1132 -2976
- data/spec/requests/end_to_end_spec.rb +20 -2
- data/spec/spec_helper.rb +4 -3
- data/spec/support/backport_controller_test_params.rb +21 -0
- data/spec/unit/api_access_spec.rb +5 -3
- data/spec/unit/bearer_token_spec.rb +0 -10
- data/spec/unit/session_serialisation_spec.rb +1 -1
- data/spec/unit/user_spec.rb +4 -0
- metadata +27 -41
- data/spec/tasks/signonotron_tasks.rake +0 -65
@@ -123,11 +123,29 @@ describe "Integration of client using GDS-SSO with signonotron" do
|
|
123
123
|
|
124
124
|
expect(page).to have_content('restricted kablooie')
|
125
125
|
|
126
|
+
visit "http://localhost:4567/users/sign_out"
|
127
|
+
|
128
|
+
Timecop.travel(Time.now.utc + GDS::SSO::Config.auth_valid_for + 5.minutes) do
|
129
|
+
visit "http://#{@client_host}/restricted"
|
130
|
+
end
|
131
|
+
|
132
|
+
expect(page).to have_content("Sign in")
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should accept signonotron's remembered authentication N hours after login" do
|
136
|
+
visit "http://#{@client_host}/restricted"
|
137
|
+
expect(page).to have_content("Sign in")
|
138
|
+
fill_in "Email", :with => "test@example-client.com"
|
139
|
+
fill_in "Passphrase", :with => "q1w2e3r4t5y6u7i8o9p0"
|
140
|
+
click_on "Sign in"
|
141
|
+
|
142
|
+
expect(page).to have_content('restricted kablooie')
|
143
|
+
|
126
144
|
Timecop.travel(Time.now.utc + GDS::SSO::Config.auth_valid_for + 5.minutes) do
|
127
145
|
visit "http://#{@client_host}/restricted"
|
128
146
|
end
|
129
147
|
|
130
|
-
expect(page
|
148
|
+
expect(page).to have_content("restricted kablooie")
|
131
149
|
end
|
132
150
|
|
133
151
|
|
@@ -144,7 +162,7 @@ describe "Integration of client using GDS-SSO with signonotron" do
|
|
144
162
|
visit "http://#{@client_host}/restricted"
|
145
163
|
end
|
146
164
|
|
147
|
-
expect(page
|
165
|
+
expect(page).to have_content("restricted kablooie")
|
148
166
|
end
|
149
167
|
end
|
150
168
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -15,8 +15,9 @@ require 'capybara/mechanize'
|
|
15
15
|
|
16
16
|
include Warden::Test::Helpers
|
17
17
|
|
18
|
+
Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each {|f| require f}
|
19
|
+
|
18
20
|
RSpec.configure do |config|
|
19
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
20
21
|
config.run_all_when_everything_filtered = true
|
21
22
|
config.filter_run :focus
|
22
23
|
|
@@ -25,6 +26,6 @@ RSpec.configure do |config|
|
|
25
26
|
# the seed, which is printed after each run.
|
26
27
|
# --seed 1234
|
27
28
|
config.order = 'random'
|
28
|
-
end
|
29
29
|
|
30
|
-
|
30
|
+
config.include(BackportControllerTestParams) if Rails.version < '5'
|
31
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module BackportControllerTestParams
|
2
|
+
def delete(*args)
|
3
|
+
action, rest = *args
|
4
|
+
super(action, rest[:params])
|
5
|
+
end
|
6
|
+
|
7
|
+
def get(*args)
|
8
|
+
action, rest = *args
|
9
|
+
super(action, rest[:params])
|
10
|
+
end
|
11
|
+
|
12
|
+
def post(*args)
|
13
|
+
action, rest = *args
|
14
|
+
super(action, rest[:params])
|
15
|
+
end
|
16
|
+
|
17
|
+
def put(*args)
|
18
|
+
action, rest = *args
|
19
|
+
super(action, rest[:params])
|
20
|
+
end
|
21
|
+
end
|
@@ -6,10 +6,12 @@ describe GDS::SSO::ApiAccess do
|
|
6
6
|
ie7_accept_header = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, ' +
|
7
7
|
'application/x-shockwave-flash, application/xaml+xml, application/x-ms-xbap, ' +
|
8
8
|
'application/x-ms-application, */*'
|
9
|
-
expect(GDS::SSO::ApiAccess.api_call?('HTTP_ACCEPT' => ie7_accept_header)).to
|
9
|
+
expect(GDS::SSO::ApiAccess.api_call?('HTTP_ACCEPT' => ie7_accept_header)).to be_falsey
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
context "with a bearer token" do
|
13
|
+
it "it is considered an api call" do
|
14
|
+
expect(GDS::SSO::ApiAccess.api_call?('HTTP_AUTHORIZATION' => 'Bearer deadbeef12345678')).to be_truthy
|
15
|
+
end
|
14
16
|
end
|
15
17
|
end
|
@@ -4,16 +4,6 @@ require 'gds-sso/bearer_token'
|
|
4
4
|
describe GDS::SSO::BearerToken do
|
5
5
|
describe '.locate' do
|
6
6
|
it 'creates a new user for a token' do
|
7
|
-
response = {
|
8
|
-
user: {
|
9
|
-
uid: 'asd',
|
10
|
-
email: 'user@example.com',
|
11
|
-
name: 'A Name',
|
12
|
-
permissions: ['signin'],
|
13
|
-
organisation_slug: 'hmrc',
|
14
|
-
organisation_content_id: '67a2b78d-eee3-45b3-80e2-792e7f71cecc',
|
15
|
-
}
|
16
|
-
}
|
17
7
|
response = double(body: {
|
18
8
|
user: {
|
19
9
|
uid: 'asd',
|
data/spec/unit/user_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gds-sso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 13.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Patterson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-09-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 4.2.4
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 4.2.4
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: warden
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,20 +95,6 @@ dependencies:
|
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: 0.0.1
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
name: rack-accept
|
100
|
-
requirement: !ruby/object:Gem::Requirement
|
101
|
-
requirements:
|
102
|
-
- - "~>"
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: 0.4.4
|
105
|
-
type: :runtime
|
106
|
-
prerelease: false
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - "~>"
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: 0.4.4
|
112
98
|
- !ruby/object:Gem::Dependency
|
113
99
|
name: multi_json
|
114
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -143,56 +129,56 @@ dependencies:
|
|
143
129
|
requirements:
|
144
130
|
- - '='
|
145
131
|
- !ruby/object:Gem::Version
|
146
|
-
version:
|
132
|
+
version: 2.8.0
|
147
133
|
type: :development
|
148
134
|
prerelease: false
|
149
135
|
version_requirements: !ruby/object:Gem::Requirement
|
150
136
|
requirements:
|
151
137
|
- - '='
|
152
138
|
- !ruby/object:Gem::Version
|
153
|
-
version:
|
139
|
+
version: 2.8.0
|
154
140
|
- !ruby/object:Gem::Dependency
|
155
141
|
name: rspec-rails
|
156
142
|
requirement: !ruby/object:Gem::Requirement
|
157
143
|
requirements:
|
158
144
|
- - '='
|
159
145
|
- !ruby/object:Gem::Version
|
160
|
-
version:
|
146
|
+
version: 3.5.2
|
161
147
|
type: :development
|
162
148
|
prerelease: false
|
163
149
|
version_requirements: !ruby/object:Gem::Requirement
|
164
150
|
requirements:
|
165
151
|
- - '='
|
166
152
|
- !ruby/object:Gem::Version
|
167
|
-
version:
|
153
|
+
version: 3.5.2
|
168
154
|
- !ruby/object:Gem::Dependency
|
169
155
|
name: capybara-mechanize
|
170
156
|
requirement: !ruby/object:Gem::Requirement
|
171
157
|
requirements:
|
172
158
|
- - '='
|
173
159
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
160
|
+
version: 1.5.0
|
175
161
|
type: :development
|
176
162
|
prerelease: false
|
177
163
|
version_requirements: !ruby/object:Gem::Requirement
|
178
164
|
requirements:
|
179
165
|
- - '='
|
180
166
|
- !ruby/object:Gem::Version
|
181
|
-
version:
|
167
|
+
version: 1.5.0
|
182
168
|
- !ruby/object:Gem::Dependency
|
183
169
|
name: combustion
|
184
170
|
requirement: !ruby/object:Gem::Requirement
|
185
171
|
requirements:
|
186
172
|
- - '='
|
187
173
|
- !ruby/object:Gem::Version
|
188
|
-
version: 0.5.
|
174
|
+
version: 0.5.4
|
189
175
|
type: :development
|
190
176
|
prerelease: false
|
191
177
|
version_requirements: !ruby/object:Gem::Requirement
|
192
178
|
requirements:
|
193
179
|
- - '='
|
194
180
|
- !ruby/object:Gem::Version
|
195
|
-
version: 0.5.
|
181
|
+
version: 0.5.4
|
196
182
|
- !ruby/object:Gem::Dependency
|
197
183
|
name: gem_publisher
|
198
184
|
requirement: !ruby/object:Gem::Requirement
|
@@ -279,9 +265,9 @@ files:
|
|
279
265
|
- spec/internal/public/favicon.ico
|
280
266
|
- spec/requests/end_to_end_spec.rb
|
281
267
|
- spec/spec_helper.rb
|
268
|
+
- spec/support/backport_controller_test_params.rb
|
282
269
|
- spec/support/signonotron2_integration_helpers.rb
|
283
270
|
- spec/support/timecop.rb
|
284
|
-
- spec/tasks/signonotron_tasks.rake
|
285
271
|
- spec/unit/api_access_spec.rb
|
286
272
|
- spec/unit/bearer_token_spec.rb
|
287
273
|
- spec/unit/session_serialisation_spec.rb
|
@@ -298,7 +284,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
298
284
|
requirements:
|
299
285
|
- - ">="
|
300
286
|
- !ruby/object:Gem::Version
|
301
|
-
version:
|
287
|
+
version: 2.2.2
|
302
288
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
303
289
|
requirements:
|
304
290
|
- - ">="
|
@@ -311,25 +297,25 @@ signing_key:
|
|
311
297
|
specification_version: 4
|
312
298
|
summary: Client for GDS' OAuth 2-based SSO
|
313
299
|
test_files:
|
314
|
-
- spec/
|
315
|
-
- spec/unit/user_spec.rb
|
316
|
-
- spec/unit/api_access_spec.rb
|
317
|
-
- spec/unit/session_serialisation_spec.rb
|
318
|
-
- spec/unit/bearer_token_spec.rb
|
300
|
+
- spec/requests/end_to_end_spec.rb
|
319
301
|
- spec/spec_helper.rb
|
320
|
-
- spec/support/
|
302
|
+
- spec/support/backport_controller_test_params.rb
|
321
303
|
- spec/support/signonotron2_integration_helpers.rb
|
322
|
-
- spec/
|
323
|
-
- spec/internal/app/controllers/application_controller.rb
|
304
|
+
- spec/support/timecop.rb
|
324
305
|
- spec/internal/app/models/user.rb
|
325
|
-
- spec/internal/
|
326
|
-
- spec/internal/
|
306
|
+
- spec/internal/app/controllers/application_controller.rb
|
307
|
+
- spec/internal/app/controllers/example_controller.rb
|
308
|
+
- spec/internal/config/routes.rb
|
327
309
|
- spec/internal/config/initializers/gds-sso.rb
|
328
310
|
- spec/internal/config/database.yml
|
329
|
-
- spec/internal/config/routes.rb
|
330
311
|
- spec/internal/db/schema.rb
|
331
312
|
- spec/internal/db/combustion_test.sqlite
|
332
|
-
- spec/
|
313
|
+
- spec/internal/public/favicon.ico
|
314
|
+
- spec/internal/log/test.log
|
315
|
+
- spec/controller/api_user_controller_spec.rb
|
316
|
+
- spec/unit/user_spec.rb
|
317
|
+
- spec/unit/bearer_token_spec.rb
|
318
|
+
- spec/unit/session_serialisation_spec.rb
|
319
|
+
- spec/unit/api_access_spec.rb
|
333
320
|
- spec/fixtures/integration/signonotron2.sql
|
334
321
|
- spec/fixtures/integration/authorize_api_users.sql
|
335
|
-
- spec/tasks/signonotron_tasks.rake
|
@@ -1,65 +0,0 @@
|
|
1
|
-
namespace :signonotron do
|
2
|
-
desc "Start signonotron (for integration tests)"
|
3
|
-
task :start => :stop do
|
4
|
-
|
5
|
-
@app_to_launch = "signonotron2"
|
6
|
-
|
7
|
-
puts "Launching: #{@app_to_launch}"
|
8
|
-
|
9
|
-
gem_root = Pathname.new(File.dirname(__FILE__)) + '..' + '..'
|
10
|
-
FileUtils.mkdir_p(gem_root + 'tmp')
|
11
|
-
Dir.chdir gem_root + 'tmp' do
|
12
|
-
if File.exist? @app_to_launch
|
13
|
-
Dir.chdir @app_to_launch do
|
14
|
-
puts `git clean -fdx`
|
15
|
-
puts `git fetch origin`
|
16
|
-
puts `git reset --hard origin/master`
|
17
|
-
end
|
18
|
-
else
|
19
|
-
puts `git clone git@github.com:alphagov/#{@app_to_launch}`
|
20
|
-
end
|
21
|
-
|
22
|
-
if signon_commitish = ENV['SIGNON_COMMITISH']
|
23
|
-
puts "Checking out non-master of signon: #{signon_commitish}"
|
24
|
-
Dir.chdir(@app_to_launch) do
|
25
|
-
system `git checkout #{signon_commitish}` || raise("Unable to checkout #{signon_commitish}")
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
Dir.chdir gem_root + 'tmp' + @app_to_launch do
|
31
|
-
env_to_clear = %w(BUNDLE_GEMFILE BUNDLE_BIN_PATH RUBYOPT GEM_HOME GEM_PATH RBENV_VERSION)
|
32
|
-
|
33
|
-
env_stuff = case `uname`.strip
|
34
|
-
when "Darwin"
|
35
|
-
env_to_clear.map { |e| "unset #{e}" }.join(" && ") + " && "
|
36
|
-
else
|
37
|
-
"/usr/bin/env " + env_to_clear.map { |e| "-u #{e}" }.join(" ")
|
38
|
-
end
|
39
|
-
env_stuff += " RAILS_ENV=test"
|
40
|
-
if ENV.has_key?('ORIGINAL_PATH')
|
41
|
-
env_stuff += " PATH=#{ENV.fetch('ORIGINAL_PATH')}"
|
42
|
-
end
|
43
|
-
|
44
|
-
puts "Running bundler"
|
45
|
-
puts `#{env_stuff} bundle install --path=#{gem_root + 'tmp' + "#{@app_to_launch}_bundle"}`
|
46
|
-
puts `#{env_stuff} bundle exec rake db:drop db:create db:schema:load`
|
47
|
-
|
48
|
-
puts "Starting signonotron instance in the background"
|
49
|
-
fork do
|
50
|
-
Process.daemon(true)
|
51
|
-
exec "#{env_stuff} bundle exec rails s -p 4567"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
desc "Stop running signonotron (for integration tests)"
|
57
|
-
task :stop do
|
58
|
-
pid_output = `lsof -Fp -i :4567`.chomp
|
59
|
-
if pid_output =~ /\Ap(\d+)\z/
|
60
|
-
puts "Stopping running instance of Signonotron (pid #{$1})"
|
61
|
-
Process.kill(:INT, $1.to_i)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|