omniauth-pam 1.2.1 → 1.3.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
- 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