devise_saml_authenticatable 1.6.2 → 1.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +6 -0
  3. data/.github/workflows/ci.yml +62 -0
  4. data/.gitignore +1 -0
  5. data/.ruby-version +1 -0
  6. data/Gemfile +12 -2
  7. data/README.md +62 -26
  8. data/app/controllers/devise/saml_sessions_controller.rb +33 -27
  9. data/devise_saml_authenticatable.gemspec +2 -1
  10. data/lib/devise_saml_authenticatable/logger.rb +2 -2
  11. data/lib/devise_saml_authenticatable/model.rb +17 -3
  12. data/lib/devise_saml_authenticatable/saml_config.rb +28 -6
  13. data/lib/devise_saml_authenticatable/strategy.rb +23 -5
  14. data/lib/devise_saml_authenticatable/version.rb +1 -1
  15. data/lib/devise_saml_authenticatable.rb +16 -2
  16. data/spec/controllers/devise/saml_sessions_controller_spec.rb +205 -147
  17. data/spec/devise_saml_authenticatable/model_spec.rb +137 -19
  18. data/spec/devise_saml_authenticatable/saml_config_spec.rb +69 -22
  19. data/spec/devise_saml_authenticatable/strategy_spec.rb +58 -9
  20. data/spec/features/saml_authentication_spec.rb +19 -6
  21. data/spec/support/Gemfile.rails5.2 +2 -13
  22. data/spec/support/Gemfile.rails6 +18 -0
  23. data/spec/support/Gemfile.rails6.1 +24 -0
  24. data/spec/support/idp_settings_adapter.rb.erb +19 -9
  25. data/spec/support/idp_template.rb +5 -13
  26. data/spec/support/rails_app.rb +6 -7
  27. data/spec/support/ruby_saml_support.rb +10 -0
  28. data/spec/support/saml_idp_controller.rb.erb +1 -6
  29. data/spec/support/sp_template.rb +22 -19
  30. metadata +14 -12
  31. data/.travis.yml +0 -52
  32. data/spec/support/Gemfile.rails4 +0 -41
  33. data/spec/support/Gemfile.rails5 +0 -25
  34. data/spec/support/Gemfile.rails5.1 +0 -25
@@ -0,0 +1,18 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in devise_saml_authenticatable.gemspec
4
+ gemspec path: '../..'
5
+
6
+ group :test do
7
+ gem 'rake'
8
+ gem 'rspec', '~> 3.0'
9
+ gem 'rails', '~> 6.0.0'
10
+ gem 'rspec-rails', '~> 5.0'
11
+ gem 'sqlite3', '~> 1.4.0'
12
+ gem 'capybara'
13
+ gem 'selenium-webdriver'
14
+
15
+ if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new("3.0")
16
+ gem 'webrick'
17
+ end
18
+ end
@@ -0,0 +1,24 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in devise_saml_authenticatable.gemspec
4
+ gemspec path: '../..'
5
+
6
+ group :test do
7
+ gem 'rake'
8
+ gem 'rspec', '~> 3.0'
9
+ gem 'rails', '~> 6.1.0'
10
+ gem 'rspec-rails', '~> 5.0'
11
+ gem 'sqlite3', '~> 1.4.0'
12
+ gem 'capybara'
13
+ gem 'selenium-webdriver'
14
+
15
+ if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new("3.0")
16
+ gem 'webrick'
17
+ end
18
+
19
+ if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new("3.1")
20
+ gem 'net-smtp', require: false
21
+ gem 'net-imap', require: false
22
+ gem 'net-pop', require: false
23
+ end
24
+ end
@@ -1,17 +1,27 @@
1
1
  class IdpSettingsAdapter
2
2
  def self.settings(idp_entity_id)
3
3
  if idp_entity_id == "http://localhost:8020/saml/metadata"
4
- {
5
- assertion_consumer_service_url: "http://localhost:8020/users/saml/auth",
6
- assertion_consumer_service_binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
7
- name_identifier_format: "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
8
- issuer: "sp_issuer",
9
- idp_entity_id: "http://localhost:8020/saml/metadata",
10
- authn_context: "",
4
+ base = {
5
+ assertion_consumer_service_url: "http://localhost:8020/users/saml/auth",
6
+ assertion_consumer_service_binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
7
+ name_identifier_format: "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
8
+ sp_entity_id: "sp_issuer",
9
+ idp_entity_id: "http://localhost:8020/saml/metadata",
10
+ authn_context: "",
11
+ idp_cert_fingerprint: "9E:65:2E:03:06:8D:80:F2:86:C7:6C:77:A1:D9:14:97:0A:4D:F4:4D"
12
+ }
13
+ if Gem::Version.new(OneLogin::RubySaml::VERSION) >= Gem::Version.new("1.12.0")
14
+ base.merge!(
15
+ idp_slo_service_url: "http://localhost:8010/saml/logout",
16
+ idp_sso_service_url: "http://localhost:8010/saml/auth",
17
+ )
18
+ else
19
+ base.merge!(
11
20
  idp_slo_target_url: "http://localhost:8010/saml/logout",
12
21
  idp_sso_target_url: "http://localhost:8010/saml/auth",
13
- idp_cert_fingerprint: "9E:65:2E:03:06:8D:80:F2:86:C7:6C:77:A1:D9:14:97:0A:4D:F4:4D"
14
- }
22
+ )
23
+ end
24
+ base
15
25
  else
16
26
  {}
17
27
  end
@@ -5,22 +5,14 @@
5
5
  @include_subject_in_attributes = ENV.fetch('INCLUDE_SUBJECT_IN_ATTRIBUTES')
6
6
  @valid_destination = ENV.fetch('VALID_DESTINATION', "true")
7
7
 
8
- if Rails::VERSION::MAJOR < 5 || (Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR < 2)
9
- gsub_file 'config/secrets.yml', /secret_key_base:.*$/, 'secret_key_base: "34814fd41f91c493b89aa01ac73c44d241a31245b5bc5542fa4b7317525e1dcfa60ba947b3d085e4e229456fdee0d8af6aac6a63cf750d807ea6fe5d853dff4a"'
10
- end
11
-
12
- gem 'ruby-saml-idp', '~> 0.3.3'
8
+ gem 'stub_saml_idp'
13
9
  gem 'thin'
14
10
 
15
- insert_into_file('Gemfile', after: /\z/) {
16
- <<-GEMFILE
17
- # Lock down versions of gems for older versions of Ruby
18
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.1")
19
- gem 'devise', '~> 3.5'
20
- gem 'nokogiri', '~> 1.6.8'
11
+ if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new("3.1")
12
+ gem 'net-smtp', require: false
13
+ gem 'net-imap', require: false
14
+ gem 'net-pop', require: false
21
15
  end
22
- GEMFILE
23
- }
24
16
 
25
17
  route "get '/saml/auth' => 'saml_idp#new'"
26
18
  route "post '/saml/auth' => 'saml_idp#create'"
@@ -19,14 +19,13 @@ end
19
19
 
20
20
  def create_app(name, env = {})
21
21
  puts "[#{name}] Creating Rails app"
22
- rails_new_options = %w[-T -J -S --skip-spring --skip-listen --skip-bootsnap]
22
+ rails_new_options = %w[-A -G -C -T -J -S --skip-spring --skip-listen --skip-bootsnap --skip-action-mailbox --skip-jbuilder --skip-active-storage]
23
23
  rails_new_options << "-O" if name == "idp"
24
- with_clean_env do
25
- Dir.chdir(working_directory) do
26
- FileUtils.rm_rf(name)
27
- puts("rails _#{Rails.version}_ new #{name} #{rails_new_options.join(" ")} -m #{File.expand_path("../#{name}_template.rb", __FILE__)}")
28
- system(env, "rails", "_#{Rails.version}_", "new", name, *rails_new_options, "-m", File.expand_path("../#{name}_template.rb", __FILE__))
29
- end
24
+ env.merge!("RUBY_SAML_VERSION" => OneLogin::RubySaml::VERSION)
25
+ Dir.chdir(working_directory) do
26
+ FileUtils.rm_rf(name)
27
+ puts("[#{working_directory}] rails _#{Rails.version}_ new #{name} #{rails_new_options.join(" ")} -m #{File.expand_path("../#{name}_template.rb", __FILE__)}")
28
+ system(env, "rails", "_#{Rails.version}_", "new", name, *rails_new_options, "-m", File.expand_path("../#{name}_template.rb", __FILE__))
30
29
  end
31
30
  end
32
31
 
@@ -0,0 +1,10 @@
1
+ module RubySamlSupport
2
+ VERSION_1_12 = Gem::Version.new("1.12.0")
3
+ def with_ruby_saml_1_12_or_greater(body, args = {else_do: nil})
4
+ if Gem::Version.new(OneLogin::RubySaml::VERSION) >= VERSION_1_12
5
+ body.call
6
+ else
7
+ args[:else_do].call
8
+ end
9
+ end
10
+ end
@@ -1,4 +1,4 @@
1
- class SamlIdpController < SamlIdp::IdpController
1
+ class SamlIdpController < StubSamlIdp::IdpController
2
2
  def new
3
3
  if session[:user_id]
4
4
  @saml_response = idp_make_saml_response(session[:user_id])
@@ -79,13 +79,8 @@ class SamlIdpController < SamlIdp::IdpController
79
79
  end
80
80
 
81
81
  # == SLO functionality, see https://github.com/lawrencepit/ruby-saml-idp/pull/10
82
- <% if Rails::VERSION::MAJOR < 5 %>
83
- skip_before_filter :validate_saml_request, :only => [:logout, :sp_sign_out]
84
- before_filter :validate_saml_slo_request, :only => [:logout]
85
- <% else %>
86
82
  skip_before_action :validate_saml_request, :only => [:logout, :sp_sign_out]
87
83
  before_action :validate_saml_slo_request, :only => [:logout]
88
- <% end %>
89
84
 
90
85
  public
91
86
 
@@ -6,28 +6,20 @@ attribute_map_resolver = ENV.fetch("ATTRIBUTE_MAP_RESOLVER", "nil")
6
6
  saml_session_index_key = ENV.fetch('SAML_SESSION_INDEX_KEY', ":session_index")
7
7
  use_subject_to_authenticate = ENV.fetch('USE_SUBJECT_TO_AUTHENTICATE')
8
8
  idp_settings_adapter = ENV.fetch('IDP_SETTINGS_ADAPTER', "nil")
9
- idp_entity_id_reader = ENV.fetch('IDP_ENTITY_ID_READER', "DeviseSamlAuthenticatable::DefaultIdpEntityIdReader")
9
+ idp_entity_id_reader = ENV.fetch('IDP_ENTITY_ID_READER', '"DeviseSamlAuthenticatable::DefaultIdpEntityIdReader"')
10
10
  saml_failed_callback = ENV.fetch('SAML_FAILED_CALLBACK', "nil")
11
-
12
- if Rails::VERSION::MAJOR < 5 || (Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR < 2)
13
- gsub_file 'config/secrets.yml', /secret_key_base:.*$/, 'secret_key_base: "8b5889df1fcf03f76c7d66da02d8776bcc85b06bed7d9c592f076d9c8a5455ee6d4beae45986c3c030b40208db5e612f2a6ef8283036a352e3fae83c5eda36be"'
14
- end
11
+ ruby_saml_version = ENV.fetch("RUBY_SAML_VERSION")
15
12
 
16
13
  gem 'devise_saml_authenticatable', path: File.expand_path("../../..", __FILE__)
17
- gem 'ruby-saml', OneLogin::RubySaml::VERSION
14
+ gem 'ruby-saml', ruby_saml_version
18
15
  gem 'thin'
19
16
 
20
- insert_into_file('Gemfile', after: /\z/) {
21
- <<-GEMFILE
22
- # Lock down versions of gems for older versions of Ruby
23
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.1")
24
- gem 'devise', '~> 3.5'
25
- gem 'nokogiri', '~> 1.6.8'
26
- elsif Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.4")
27
- gem 'responders', '~> 2.4'
17
+ if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new("3.1")
18
+ gem 'net-smtp', require: false
19
+ gem 'net-imap', require: false
20
+ gem 'net-pop', require: false
28
21
  end
29
- GEMFILE
30
- }
22
+
31
23
  if Rails::VERSION::MAJOR < 6
32
24
  # sqlite3 is hard-coded in Rails < 6 to v1.3.x
33
25
  gsub_file 'Gemfile', /^gem 'sqlite3'.*$/, "gem 'sqlite3', '~> 1.3.6'"
@@ -91,14 +83,25 @@ after_bundle do
91
83
 
92
84
  config.saml_configure do |settings|
93
85
  settings.assertion_consumer_service_url = "http://localhost:8020/users/saml/auth"
94
- settings.issuer = "http://localhost:8020/saml/metadata"
95
- settings.idp_slo_target_url = "http://localhost:8009/saml/logout"
96
- settings.idp_sso_target_url = "http://localhost:8009/saml/auth"
86
+ settings.sp_entity_id = "http://localhost:8020/saml/metadata"
97
87
  settings.idp_cert_fingerprint = "9E:65:2E:03:06:8D:80:F2:86:C7:6C:77:A1:D9:14:97:0A:4D:F4:4D"
98
88
  settings.name_identifier_format = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
99
89
  end
100
90
  end
101
91
  CONFIG
92
+ if Gem::Version.new(ruby_saml_version) >= Gem::Version.new("1.12.0")
93
+ gsub_file 'config/initializers/devise.rb', /^ config\.saml_configure do \|settings\|$/, <<CONFIG
94
+ config.saml_configure do |settings|
95
+ settings.idp_slo_service_url = "http://localhost:8009/saml/logout"
96
+ settings.idp_sso_service_url = "http://localhost:8009/saml/auth"
97
+ CONFIG
98
+ else
99
+ gsub_file 'config/initializers/devise.rb', /^ config\.saml_configure do \|settings\|$/, <<CONFIG
100
+ config.saml_configure do |settings|
101
+ settings.idp_slo_target_url = "http://localhost:8009/saml/logout"
102
+ settings.idp_sso_target_url = "http://localhost:8009/saml/auth"
103
+ CONFIG
104
+ end
102
105
 
103
106
  generate :controller, 'home', 'index'
104
107
  insert_into_file('app/controllers/home_controller.rb', after: "class HomeController < ApplicationController\n") {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_saml_authenticatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: 1.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josef Sauter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-28 00:00:00.000000000 Z
11
+ date: 2023-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: devise
@@ -45,9 +45,11 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
+ - ".github/dependabot.yml"
49
+ - ".github/workflows/ci.yml"
48
50
  - ".gitignore"
49
51
  - ".rspec"
50
- - ".travis.yml"
52
+ - ".ruby-version"
51
53
  - Gemfile
52
54
  - LICENSE
53
55
  - README.md
@@ -78,20 +80,20 @@ files:
78
80
  - spec/rails_helper.rb
79
81
  - spec/routes/routes_spec.rb
80
82
  - spec/spec_helper.rb
81
- - spec/support/Gemfile.rails4
82
- - spec/support/Gemfile.rails5
83
- - spec/support/Gemfile.rails5.1
84
83
  - spec/support/Gemfile.rails5.2
84
+ - spec/support/Gemfile.rails6
85
+ - spec/support/Gemfile.rails6.1
85
86
  - spec/support/attribute-map.yml
86
87
  - spec/support/attribute_map_resolver.rb.erb
87
88
  - spec/support/idp_settings_adapter.rb.erb
88
89
  - spec/support/idp_template.rb
89
90
  - spec/support/rails_app.rb
90
91
  - spec/support/response_encrypted_nameid.xml.base64
92
+ - spec/support/ruby_saml_support.rb
91
93
  - spec/support/saml_idp-saml_slo_post.html.erb
92
94
  - spec/support/saml_idp_controller.rb.erb
93
95
  - spec/support/sp_template.rb
94
- homepage: ''
96
+ homepage: https://github.com/apokalipto/devise_saml_authenticatable
95
97
  licenses:
96
98
  - MIT
97
99
  metadata: {}
@@ -103,14 +105,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
105
  requirements:
104
106
  - - ">="
105
107
  - !ruby/object:Gem::Version
106
- version: '0'
108
+ version: 2.6.0
107
109
  required_rubygems_version: !ruby/object:Gem::Requirement
108
110
  requirements:
109
111
  - - ">="
110
112
  - !ruby/object:Gem::Version
111
113
  version: '0'
112
114
  requirements: []
113
- rubygems_version: 3.0.3
115
+ rubygems_version: 3.4.1
114
116
  signing_key:
115
117
  specification_version: 4
116
118
  summary: SAML Authentication for devise
@@ -126,16 +128,16 @@ test_files:
126
128
  - spec/rails_helper.rb
127
129
  - spec/routes/routes_spec.rb
128
130
  - spec/spec_helper.rb
129
- - spec/support/Gemfile.rails4
130
- - spec/support/Gemfile.rails5
131
- - spec/support/Gemfile.rails5.1
132
131
  - spec/support/Gemfile.rails5.2
132
+ - spec/support/Gemfile.rails6
133
+ - spec/support/Gemfile.rails6.1
133
134
  - spec/support/attribute-map.yml
134
135
  - spec/support/attribute_map_resolver.rb.erb
135
136
  - spec/support/idp_settings_adapter.rb.erb
136
137
  - spec/support/idp_template.rb
137
138
  - spec/support/rails_app.rb
138
139
  - spec/support/response_encrypted_nameid.xml.base64
140
+ - spec/support/ruby_saml_support.rb
139
141
  - spec/support/saml_idp-saml_slo_post.html.erb
140
142
  - spec/support/saml_idp_controller.rb.erb
141
143
  - spec/support/sp_template.rb
data/.travis.yml DELETED
@@ -1,52 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - "2.0.0"
4
- - "2.1.10"
5
- - "2.2.10"
6
- - "2.3.8"
7
- - "2.4.10"
8
- - "2.5.8"
9
- - "2.6.6"
10
- - "2.7.1"
11
- gemfile:
12
- - Gemfile
13
- - spec/support/Gemfile.rails5.2
14
- - spec/support/Gemfile.rails5.1
15
- - spec/support/Gemfile.rails5
16
- - spec/support/Gemfile.rails4
17
- matrix:
18
- allow_failures:
19
- - rvm: "2.0.0"
20
- gemfile: Gemfile
21
- - rvm: "2.0.0"
22
- gemfile: spec/support/Gemfile.rails5
23
- - rvm: "2.0.0"
24
- gemfile: spec/support/Gemfile.rails5.1
25
- - rvm: "2.0.0"
26
- gemfile: spec/support/Gemfile.rails5.2
27
- - rvm: "2.1.10"
28
- gemfile: Gemfile
29
- - rvm: "2.1.10"
30
- gemfile: spec/support/Gemfile.rails5
31
- - rvm: "2.1.10"
32
- gemfile: spec/support/Gemfile.rails5.1
33
- - rvm: "2.1.10"
34
- gemfile: spec/support/Gemfile.rails5.2
35
- - rvm: "2.2.10"
36
- gemfile: Gemfile
37
- - rvm: "2.2.10"
38
- gemfile: spec/support/Gemfile.rails5.2
39
- - rvm: "2.3.8"
40
- gemfile: Gemfile
41
- - rvm: "2.4.10"
42
- gemfile: Gemfile
43
- - rvm: "2.6.6"
44
- gemfile: spec/support/Gemfile.rails4
45
- - rvm: "2.7.1"
46
- gemfile: spec/support/Gemfile.rails4
47
-
48
- before_install:
49
- - command -v bundle || gem install bundler -v '~> 1.17.3'
50
-
51
- script:
52
- - bundle exec rake
@@ -1,41 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in devise_saml_authenticatable.gemspec
4
- gemspec path: '../..'
5
-
6
- group :test do
7
- gem 'rspec', '~> 3.0'
8
- gem 'rails', '~> 4.0'
9
- gem 'rspec-rails', '~> 3.9'
10
- gem 'sqlite3', '~> 1.3.6'
11
- gem 'capybara'
12
- gem 'poltergeist'
13
-
14
- # Lock down versions of gems for older versions of Ruby
15
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.1")
16
- gem 'rake', '~> 12.2'
17
- else
18
- gem 'rake'
19
- end
20
-
21
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.1")
22
- gem 'devise', '~> 3.5'
23
- gem 'minitest', '~> 5.11.0'
24
- gem 'nokogiri', '~> 1.6.8'
25
- gem 'public_suffix', '~> 2.0.5'
26
- end
27
-
28
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.1")
29
- gem 'responders', '~> 1.0'
30
- elsif Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.4")
31
- gem 'responders', '~> 2.0'
32
- end
33
-
34
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.2")
35
- gem 'byebug', '~> 9.0'
36
- elsif Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.3")
37
- gem 'byebug', '~> 10.0'
38
- elsif Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.4")
39
- gem 'byebug', '~> 11.0.0'
40
- end
41
- end
@@ -1,25 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in devise_saml_authenticatable.gemspec
4
- gemspec path: '../..'
5
-
6
- group :test do
7
- gem 'rake'
8
- gem 'rspec', '~> 3.0'
9
- gem 'rails', '~> 5.0.0'
10
- gem 'rspec-rails', '~> 3.9'
11
- gem 'sqlite3', '~> 1.3.6'
12
- gem 'capybara'
13
- gem 'poltergeist'
14
-
15
- # Lock down versions of gems for older versions of Ruby
16
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.4")
17
- gem 'responders', '~> 2.4'
18
- end
19
-
20
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.3")
21
- gem 'byebug', '~> 10.0'
22
- elsif Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.4")
23
- gem 'byebug', '~> 11.0.0'
24
- end
25
- end
@@ -1,25 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in devise_saml_authenticatable.gemspec
4
- gemspec path: '../..'
5
-
6
- group :test do
7
- gem 'rake'
8
- gem 'rspec', '~> 3.0'
9
- gem 'rails', '~> 5.1.0'
10
- gem 'rspec-rails', '~> 3.9'
11
- gem 'sqlite3', '~> 1.3.6'
12
- gem 'capybara'
13
- gem 'poltergeist'
14
-
15
- # Lock down versions of gems for older versions of Ruby
16
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.4")
17
- gem 'responders', '~> 2.4'
18
- end
19
-
20
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.3")
21
- gem 'byebug', '~> 10.0'
22
- elsif Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("2.4")
23
- gem 'byebug', '~> 11.0.0'
24
- end
25
- end