omniauth-pam 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b8fbb686758b548b9cb92beff12b856f296917bd
4
- data.tar.gz: 66eeb3d1ae5cfab7b1c081c5b5ef3512920fac2e
2
+ SHA256:
3
+ metadata.gz: 3ad17e332ef7ec8d88db799e55709bd4a37c0f066c7dbf009ff9fd89aa4f3055
4
+ data.tar.gz: f2b8dc59720e592fc6e60171bc61b28e4d506475fd26be7269c2730ee49f57ae
5
5
  SHA512:
6
- metadata.gz: 3db044f0ae0813b5bd3e43b803ebeb4dd74a5e2c32860f1968a6da423382ba01aedcf40a17bf01b1123ca95ab41f946152b1f6de72f78c93dd2f2a030037c592
7
- data.tar.gz: 985c0e077c041bd3668a3f5beb85ace4fa31e1f16e5680af758148cf6b6f9432fd9a940ff2126a7023b08fe7d4d383a9070a8ac1909aedc66eca749d6c07bb64
6
+ metadata.gz: 5459da25741c89ec011f234cc4e634ccfffcf025ce94ee739eedcd86116a551e14810b7ddaa065ad55ef432c7fef8df9f5a85b31ccdac0c8895311dc9a123aa4
7
+ data.tar.gz: 911e2c60b64f08c52405b29991fcefc81555f2a0a9965b395ffe8ffa8dedd50d5b7e0ea9df446fe82ea583bb0e1304103939a274eb8c40f1fa4865bdcdc6ee57
data/.gitignore CHANGED
@@ -1,4 +1,28 @@
1
- *.gem
2
- .bundle
3
1
  Gemfile.lock
4
- pkg/*
2
+ *.gem
3
+ *.rbc
4
+ /.config
5
+ /coverage/
6
+ /InstalledFiles
7
+ /pkg/
8
+ /spec/reports/
9
+ /spec/examples.txt
10
+ /test/tmp/
11
+ /test/version_tmp/
12
+ /tmp/
13
+
14
+ ## Specific to RubyMotion:
15
+ .dat*
16
+ .repl_history
17
+ build/
18
+
19
+ ## Documentation cache and generated files:
20
+ /.yardoc/
21
+ /_yardoc/
22
+ /doc/
23
+ /rdoc/
24
+
25
+ ## Environment normalisation:
26
+ /.bundle/
27
+ /vendor/bundle
28
+ /lib/bundler/man/
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ language: ruby
3
+ rvm:
4
+ 2.5.1
5
+ addons:
6
+ apt:
7
+ packages:
8
+ - libpam0g-dev
data/CHANGELOG.md ADDED
@@ -0,0 +1,41 @@
1
+ # CHANGELOG
2
+
3
+ ## 1.3.0 (2018-05-19)
4
+
5
+ * Update the README.
6
+ * Add this CHANGELOG.
7
+ * Update the dependencies ([12][]).
8
+ * List the correct port in the README ([10][]).
9
+ * Add a more standard Ruby gitignore ([15][]).
10
+ * Add Travis for CI ([14][]).
11
+ * Add tests ([13][]).
12
+ * Update Vagrantfile.
13
+ * Handle cases where `gecos` data is missing.
14
+
15
+ [13]: https://github.com/nickcharlton/omniauth-pam/pull/13
16
+ [14]: https://github.com/nickcharlton/omniauth-pam/pull/14
17
+ [15]: https://github.com/nickcharlton/omniauth-pam/pull/15
18
+ [10]: https://github.com/nickcharlton/omniauth-pam/pull/10
19
+ [12]: https://github.com/nickcharlton/omniauth-pam/pull/12
20
+
21
+ ## 1.2.1 (2012-11-15)
22
+
23
+ * Adds a license file.
24
+ * Improves the README.
25
+
26
+ ## 1.2.0 (2013-11-09)
27
+
28
+ * Add missing OmniAuth interface requirements.
29
+ * Add `etc` to fetch info fields.
30
+ * Add a basic Sinatra example.
31
+ * Add a Vagrantfile for testing.
32
+ * Add a configurable `email` field.
33
+
34
+ ## 1.0.1 (2012-02-26)
35
+
36
+ * Fix load path issues.
37
+ * Specify `rpam-ruby19` version dependency.
38
+
39
+ ## 1.0.0 (2012-01-15)
40
+
41
+ * Initial Release.
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # omniauth-pam
2
2
 
3
- An OmniAuth strategy to allow you to authentication against Pluggable Authentication
4
- Modules (PAM).
3
+ An [OmniAuth][] strategy to allow you to authentication against
4
+ [Pluggable Authentication Modules][pam] (PAM).
5
5
 
6
6
  ## Installation
7
7
 
@@ -13,33 +13,37 @@ gem install omniauth-pam
13
13
 
14
14
  ## Usage
15
15
 
16
- It has been tested under Ruby 1.9 and 2.0 on both Debian Wheezy (7.0) and Ubuntu
17
- Precise (12.04). [Ruby 1.8 can be made to work with small adjustments][oldruby].
18
- Under both Debian and Ubuntu you'll need the `libpam0g-dev` package to compile the
19
- `rpam` dependency.
16
+ `libpam0g-dev` is needed to install on Debian and Ubuntu. An example
17
+ `Vagrantfile` is provided to test this out.
20
18
 
21
- The included `Vagrantfile` provides a Debian Wheezy environment and the `example/`
22
- directory provides a working Sinatra example.
23
-
24
- ### Simple Sinatra Example
25
-
26
- But, getting it working is as simple as this:
19
+ ### Sinatra Example
27
20
 
28
21
  ```ruby
29
- require 'omniauth'
30
- require 'omniauth-pam'
22
+ require "omniauth"
23
+ require "omniauth-pam"
31
24
 
32
- use Rack::Session::Cookie
25
+ use Rack::Session::Cookie, secret: "a_random_hash"
33
26
  use OmniAuth::Strategies::PAM
34
27
 
35
- get '/auth/:provider/callback' do
36
- puts request.env['omniauth.auth']
28
+ get "/auth/:provider/callback" do
29
+ puts request.env['omniauth.auth']
37
30
  end
38
31
  ```
39
32
 
40
- ## Author
33
+ See the [example/][] directory.
41
34
 
42
- Copyright (c) 2013 Nick Charlton and contributors. MIT Licensed.
35
+ ## Contributing
36
+
37
+ 1. Fork it ( https://github.com/nickcharlton/omniauth-pam/fork )
38
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
39
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
40
+ 4. Push to the branch (`git push origin my-new-feature`)
41
+ 5. Create a new Pull Request
42
+
43
+ ## Author
43
44
 
44
- [oldruby]: http://nickcharlton.net/post/pam-for-omniauth
45
+ Copyright (c) 2018 Nick Charlton. MIT Licensed.
45
46
 
47
+ [OmniAuth]: https://github.com/omniauth/omniauth
48
+ [pam]: https://en.wikipedia.org/wiki/Pluggable_authentication_module<Paste>
49
+ [example/]: /example
data/Rakefile CHANGED
@@ -1 +1,14 @@
1
+ begin
2
+ require "bundler/setup"
3
+ rescue LoadError
4
+ puts "You must `gem install bundler` and `bundle install` to run rake tasks"
5
+ end
6
+
1
7
  require "bundler/gem_tasks"
8
+
9
+ require "rspec/core"
10
+ require "rspec/core/rake_task"
11
+
12
+ RSpec::Core::RakeTask.new
13
+
14
+ task default: :spec
data/Vagrantfile CHANGED
@@ -1,15 +1,13 @@
1
1
  # -*- mode: ruby -*-
2
2
  # vi: set ft=ruby :
3
3
 
4
- Vagrant.configure('2') do |config|
5
- config.vm.hostname = 'omniauth-pam'
6
- config.vm.box = 'boxes-wheezy64-chef'
7
- config.vm.box_url = 'http://boxes.nickcharlton.net/wheezy64-chef-virtualbox.box'
4
+ Vagrant.configure("2") do |config|
5
+ config.vm.hostname = "omniauth-pam"
6
+ config.vm.box = "boxesio/ruby"
8
7
 
9
- # forward a port for testing
10
- config.vm.network "forwarded_port", guest: 5000, host: 8080, auto_correct: true
8
+ config.vm.network "forwarded_port", guest: 5000,
9
+ host: 8080,
10
+ auto_correct: true
11
11
 
12
- # ensure the basic packages exist to get it all working
13
- config.vm.provision 'shell', inline: 'sudo apt-get -yqq install git libpam0g-dev;'\
14
- 'sudo gem install bundler foreman'
12
+ config.vm.provision "shell", inline: "sudo apt-get -yq install libpam0g-dev"
15
13
  end
data/example/Gemfile CHANGED
@@ -1,6 +1,5 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
- gem 'sinatra', '~> 1.3.2', require: 'sinatra/base'
4
- gem 'omniauth', '~> 1.0.2'
5
- gem 'omniauth-pam', path: File.join(__FILE__, '../..')
6
- gem 'unicorn'
3
+ gem "omniauth", "~> 1.5"
4
+ gem "omniauth-pam", path: File.join(__FILE__, "../..")
5
+ gem "sinatra", "~> 2.0", require: "sinatra/base"
data/example/README.md CHANGED
@@ -6,17 +6,18 @@ primitive [Sinatra][] application.
6
6
  You can start it by doing:
7
7
 
8
8
  ```bash
9
- [sudo] gem install bundler foreman
10
- bundle install
11
- foreman start
9
+ sudo apt-get install bundler # or: sudo gem install bundler
10
+ bundle install --path vendor/bundle
11
+ bundle exec rackup
12
12
  ```
13
13
 
14
14
  Preferably from within the Vagrantfile included in the root of the repository.
15
15
 
16
16
  ## Usage
17
17
 
18
- 1. Go to http://localhost:5000
18
+ 1. Go to http://localhost:9292
19
19
  2. You'll be redirected to a login page.
20
20
  3. Enter a system user account (for example: vagrant/vagrant).
21
21
  4. Then, you'll be redirected to another page listing the auth hash details.
22
22
 
23
+ [Sinatra]: http://www.sinatrarb.com
data/example/app.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  class App < Sinatra::Base
2
2
  use Rack::Session::Cookie
3
- use OmniAuth::Strategies::PAM
3
+ use OmniAuth::Strategies::PAM, email_domain: "localhost.localdomain"
4
4
 
5
5
  helpers do
6
6
  def ensure_auth
data/lib/omniauth-pam.rb CHANGED
@@ -1,7 +1,2 @@
1
- # depends upon rpam and etc
2
- require "rpam"
3
- require "etc"
4
-
5
- # then the rest of the strategy
6
1
  require "omniauth-pam/version"
7
- require "omniauth/strategies/pam"
2
+ require "omniauth/pam"
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module PAM
3
- VERSION = "1.2.1"
3
+ VERSION = "1.3.0".freeze
4
4
  end
5
5
  end
@@ -0,0 +1,9 @@
1
+ require "omniauth"
2
+ require "rpam"
3
+ require "etc"
4
+
5
+ module OmniAuth
6
+ module Strategies
7
+ autoload :PAM, "omniauth/strategies/pam"
8
+ end
9
+ end
@@ -9,6 +9,8 @@ module OmniAuth
9
9
 
10
10
  # this map is used to return gecos in info
11
11
  option :gecos_map, [:name, :location, :phone, :home_phone, :description]
12
+ # option :email_domain - if defined, info.email is build using uid@email_domain if not found from gecos
13
+ # option :service - pam service name passed to rpam (/etc/pam.d/service_name), if not given rpam uses 'rpam'
12
14
 
13
15
  def request_phase
14
16
  OmniAuth::Form.build(
@@ -31,27 +33,27 @@ module OmniAuth
31
33
  super
32
34
  end
33
35
 
36
+ uid do
37
+ request['username']
38
+ end
39
+
40
+ info do
41
+ info = { :nickname => uid, :name => uid }
42
+ info[:email] = "#{uid}@#{options[:email_domain]}" if options.has_key?(:email_domain)
43
+ info.merge!(parse_gecos || {})
44
+ end
45
+
46
+ private
47
+
34
48
  def parse_gecos
35
49
  if options[:gecos_map].kind_of?(Array)
36
50
  begin
37
51
  gecos = Etc.getpwnam(uid).gecos.split(',')
38
- Hash[options[:gecos_map].zip(gecos)].delete_if { |k, v| v.nil? }
52
+ Hash[options[:gecos_map].zip(gecos)].delete_if { |k, v| v.nil? || v.empty? }
39
53
  rescue
40
54
  end
41
55
  end
42
56
  end
43
-
44
- uid do
45
- request['username']
46
- end
47
-
48
- info do
49
- {
50
- :nickname => uid,
51
- :name => uid,
52
- :email => "#{uid}#{ options.has_key?(:email) ? options[:email] : ''}"
53
- }.merge!(parse_gecos)
54
- end
55
57
  end
56
58
  end
57
59
  end
data/omniauth-pam.gemspec CHANGED
@@ -1,25 +1,29 @@
1
- # encoding: UTF-8
2
- require File.expand_path('../lib/omniauth-pam/version', __FILE__)
1
+ $:.push File.expand_path("lib", __dir__)
2
+
3
+ require "omniauth-pam/version"
3
4
 
4
5
  Gem::Specification.new do |s|
5
- s.name = 'omniauth-pam'
6
+ s.name = "omniauth-pam"
6
7
  s.version = OmniAuth::PAM::VERSION
7
- s.authors = ['Nick Charlton']
8
- s.email = ['hello@nickcharlton.net']
9
- s.homepage = 'https://github.com/nickcharlton/omniauth-pam'
10
- s.license = 'MIT'
11
- s.summary = 'A PAM strategy for OmniAuth.'
12
- s.description = 'An OmniAuth strategy to allow you to authenticate '\
13
- 'against Pluggable Authentication Modules (PAM).'
14
-
15
- s.rubyforge_project = 'omniauth-pam'
8
+ s.authors = ["Nick Charlton"]
9
+ s.email = ["nick@nickcharlton.net"]
10
+ s.homepage = "https://github.com/nickcharlton/omniauth-pam"
11
+ s.license = "MIT"
12
+ s.summary = "A PAM strategy for OmniAuth."
13
+ s.description = "An OmniAuth strategy to allow you to authenticate " \
14
+ "against Pluggable Authentication Modules (PAM)."
16
15
 
17
- s.files = `git ls-files`.split("\n")
18
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
- s.require_paths = ['lib']
16
+ s.files = `git ls-files`.split($RS)
17
+ s.executables = s.files.grep(/^exe/) { |f| File.basename(f) }
18
+ s.test_files = s.files.grep(/^(test|spec|features)/)
19
+ s.require_paths = ["lib"]
21
20
 
22
- s.add_runtime_dependency 'omniauth', '~> 1.0'
21
+ s.add_runtime_dependency "omniauth", "~> 1.5"
23
22
  s.add_runtime_dependency 'rpam-ruby19', '~> 1.2.1'
24
23
  s.add_runtime_dependency 'etc'
24
+
25
+ s.add_development_dependency "pry"
26
+ s.add_development_dependency "rack-test"
27
+ s.add_development_dependency "rake"
28
+ s.add_development_dependency "rspec"
25
29
  end
@@ -0,0 +1,79 @@
1
+ require "spec_helper"
2
+
3
+ describe OmniAuth::Strategies::PAM do
4
+ describe "#request_phase" do
5
+ it "displays a form" do
6
+ get "/auth/pam"
7
+
8
+ expect(last_response.body).to include("<form")
9
+ end
10
+ end
11
+
12
+ describe "#callback_phase" do
13
+ context "with valid credentials" do
14
+ it "populates the auth hash" do
15
+ mock_rpam(valid_credentials.merge(opts: {})).and_return(true)
16
+ mock_etc
17
+
18
+ post "/auth/pam/callback", valid_credentials
19
+
20
+ expect(auth_hash["provider"]).to eq("pam")
21
+ expect(auth_hash["uid"]).to eq("authur")
22
+ expect(auth_hash["info"]["name"]).to eq("Authur Dent")
23
+ expect_rpam_to_be_called(valid_credentials.merge(opts: {}))
24
+ end
25
+ end
26
+
27
+ context "with invalid credentials" do
28
+ it "redirects to /auth/failure" do
29
+ mock_rpam(invalid_credentials.merge(opts: {}))
30
+
31
+ post "/auth/pam/callback", invalid_credentials
32
+
33
+ expect(last_response).to be_redirect
34
+ expect(last_response.headers["Location"]).to eq(
35
+ "/auth/failure?message=invalid_credentials&strategy=pam",
36
+ )
37
+ expect_rpam_to_be_called(invalid_credentials.merge(opts: {}))
38
+ end
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def app
45
+ Rack::Builder.new do
46
+ use Rack::Session::Cookie, secret: "xyz"
47
+ use OmniAuth::Strategies::PAM
48
+
49
+ run lambda { |env| [404, { "env" => env }, ["PAM Strategy App"]] }
50
+ end.to_app
51
+ end
52
+
53
+ def auth_hash
54
+ last_response.headers["env"]["omniauth.auth"]
55
+ end
56
+
57
+ def valid_credentials
58
+ { username: "authur", password: "a_password" }
59
+ end
60
+
61
+ def invalid_credentials
62
+ { username: "not_a_valid_user", password: "not_a_valid_password" }
63
+ end
64
+
65
+ def mock_rpam(username:, password:, opts:)
66
+ allow(Rpam).to receive(:auth).with(username, password, opts)
67
+ end
68
+
69
+ def expect_rpam_to_be_called(username:, password:, opts: {})
70
+ expect(Rpam).to have_received(:auth).with(username, password, opts)
71
+ end
72
+
73
+ def mock_etc
74
+ etc_struct = Etc::Passwd.new
75
+ etc_struct.gecos = "Authur Dent,,"
76
+
77
+ expect(Etc).to receive(:getpwnam).with("authur").and_return(etc_struct)
78
+ end
79
+ end
@@ -0,0 +1,9 @@
1
+ require "bundler"
2
+ Bundler.setup :default, :development, :test
3
+
4
+ require "rack/test"
5
+ require "omniauth/pam"
6
+
7
+ RSpec.configure do |config|
8
+ config.include Rack::Test::Methods
9
+ end
metadata CHANGED
@@ -1,66 +1,124 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-pam
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Charlton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-15 00:00:00.000000000 Z
11
+ date: 2018-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: '1.5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.0'
26
+ version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rpam-ruby19
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.2.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.2.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: etc
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rack-test
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
53
109
  - !ruby/object:Gem::Version
54
110
  version: '0'
55
111
  description: An OmniAuth strategy to allow you to authenticate against Pluggable Authentication
56
112
  Modules (PAM).
57
113
  email:
58
- - hello@nickcharlton.net
114
+ - nick@nickcharlton.net
59
115
  executables: []
60
116
  extensions: []
61
117
  extra_rdoc_files: []
62
118
  files:
63
- - .gitignore
119
+ - ".gitignore"
120
+ - ".travis.yml"
121
+ - CHANGELOG.md
64
122
  - Gemfile
65
123
  - LICENSE
66
124
  - README.md
@@ -73,8 +131,11 @@ files:
73
131
  - example/config.ru
74
132
  - lib/omniauth-pam.rb
75
133
  - lib/omniauth-pam/version.rb
134
+ - lib/omniauth/pam.rb
76
135
  - lib/omniauth/strategies/pam.rb
77
136
  - omniauth-pam.gemspec
137
+ - spec/omniauth/strategies/pam_spec.rb
138
+ - spec/spec_helper.rb
78
139
  homepage: https://github.com/nickcharlton/omniauth-pam
79
140
  licenses:
80
141
  - MIT
@@ -85,18 +146,20 @@ require_paths:
85
146
  - lib
86
147
  required_ruby_version: !ruby/object:Gem::Requirement
87
148
  requirements:
88
- - - '>='
149
+ - - ">="
89
150
  - !ruby/object:Gem::Version
90
151
  version: '0'
91
152
  required_rubygems_version: !ruby/object:Gem::Requirement
92
153
  requirements:
93
- - - '>='
154
+ - - ">="
94
155
  - !ruby/object:Gem::Version
95
156
  version: '0'
96
157
  requirements: []
97
- rubyforge_project: omniauth-pam
98
- rubygems_version: 2.0.3
158
+ rubyforge_project:
159
+ rubygems_version: 2.7.6
99
160
  signing_key:
100
161
  specification_version: 4
101
162
  summary: A PAM strategy for OmniAuth.
102
- test_files: []
163
+ test_files:
164
+ - spec/omniauth/strategies/pam_spec.rb
165
+ - spec/spec_helper.rb