omniauth-multipassword 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +9 -0
- data/Gemfile +6 -0
- data/README.md +5 -1
- data/Rakefile +5 -2
- data/lib/omniauth/multipassword/base.rb +0 -1
- data/lib/omniauth/multipassword/version.rb +1 -1
- data/lib/omniauth/strategies/multi_password.rb +1 -1
- data/omniauth-multipassword.gemspec +1 -1
- data/spec/omniauth/multipassword/base_spec.rb +78 -0
- data/spec/omniauth/strategy/multi_password_spec.rb +57 -0
- data/spec/spec_helper.rb +30 -0
- metadata +13 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5f7c8a3656ca4686749bd2b4d273cc1460d39ba
|
4
|
+
data.tar.gz: eb372de5e8f9ead660e3631e6b66c9c8ed34a158
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 513e554cf46d322762dfbff65e764aea532ff2986de7af99770d9f84383b336b63af43492a5a95b63cb853f53cdd0f2bf0f33e190550fa0898ef955657fe07a0
|
7
|
+
data.tar.gz: c15f2b750cba4a41c170d2a983d74d8185665f3c0e70c44895ce268f7a1bdc54a1f7d713e8b7d1e5d58441ae9dd030e665b15f66bf6636ee98303b90f20ef5ad
|
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
# Omniauth::Multipassword
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/jgraichen/omniauth-multipassword.svg?branch=master)](https://travis-ci.org/jgraichen/omniauth-multipassword)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/jgraichen/omniauth-multipassword/badges/gpa.svg)](https://codeclimate.com/github/jgraichen/omniauth-multipassword)
|
5
|
+
[![Test Coverage](https://codeclimate.com/github/jgraichen/omniauth-multipassword/badges/coverage.svg)](https://codeclimate.com/github/jgraichen/omniauth-multipassword/coverage)
|
6
|
+
|
3
7
|
**omniauth-multipassword** is a [OmniAuth](https://github.com/intridea/omniauth)
|
4
|
-
strategy that allows to authenticate
|
8
|
+
strategy that allows to authenticate again different password strategies at once.
|
5
9
|
|
6
10
|
|
7
11
|
## Installation
|
data/Rakefile
CHANGED
@@ -3,7 +3,7 @@ require File.expand_path('../lib/omniauth/multipassword/version', __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Jan Graichen"]
|
6
|
-
gem.email = ["
|
6
|
+
gem.email = ["jg@altimos.de"]
|
7
7
|
gem.description = "A OmniAuth strategy to authenticate using different passwort strategies."
|
8
8
|
gem.summary = "A OmniAuth strategy to authenticate using different passwort strategies."
|
9
9
|
gem.homepage = "https://github.com/jgraichen/omniauth-multipassword"
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rack/test'
|
3
|
+
|
4
|
+
describe OmniAuth::MultiPassword::Base do
|
5
|
+
let(:app) { double 'app' }
|
6
|
+
let(:args) { [] }
|
7
|
+
let(:block) { nil }
|
8
|
+
|
9
|
+
class OmniAuth::Strategy::OneTest
|
10
|
+
include OmniAuth::Strategy
|
11
|
+
include OmniAuth::MultiPassword::Base
|
12
|
+
|
13
|
+
def authenticate(username, password)
|
14
|
+
username == 'john' && password == 'secret'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:strategy) do
|
19
|
+
OmniAuth::Strategy::OneTest.new(app, *args, &block)
|
20
|
+
end
|
21
|
+
|
22
|
+
subject { strategy }
|
23
|
+
|
24
|
+
describe '#username_id' do
|
25
|
+
subject { strategy.username_id }
|
26
|
+
|
27
|
+
it 'defaults to :username' do
|
28
|
+
is_expected.to eq :username
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when configured' do
|
32
|
+
let(:args) { [{fields: [:user, :pass]}] }
|
33
|
+
it { is_expected.to eq :user }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#password_id' do
|
38
|
+
subject { strategy.password_id }
|
39
|
+
|
40
|
+
it 'defaults to :password' do
|
41
|
+
is_expected.to eq :password
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when configured' do
|
45
|
+
let(:args) { [{fields: [:user, :pass]}] }
|
46
|
+
it { is_expected.to eq :pass }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe 'single strategy' do
|
51
|
+
include Rack::Test::Methods
|
52
|
+
|
53
|
+
let(:app) do
|
54
|
+
Rack::Builder.new {
|
55
|
+
use OmniAuth::Test::PhonySession
|
56
|
+
use OmniAuth::Strategies::OneTest
|
57
|
+
run ->(env) { [404, {'Content-Type' => 'text/plain'}, [env.key?('omniauth.auth').to_s]] }
|
58
|
+
}.to_app
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'shows login FORM' do
|
62
|
+
get '/auth/onetest'
|
63
|
+
|
64
|
+
expect(last_response.body).to include '<form'
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'redirect on wrong password' do
|
68
|
+
post '/auth/onetest/callback', username: 'john', password: 'wrong'
|
69
|
+
expect(last_response).to be_redirect
|
70
|
+
expect(last_response.headers['Location']).to eq '/auth/failure?message=invalid_credentials&strategy=onetest'
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'authenticates john with correct password' do
|
74
|
+
post '/auth/onetest/callback', username: 'john', password: 'secret'
|
75
|
+
expect(last_response.body).to eq 'true'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rack/test'
|
3
|
+
|
4
|
+
describe OmniAuth::Strategies::MultiPassword do
|
5
|
+
include Rack::Test::Methods
|
6
|
+
|
7
|
+
class OmniAuth::Strategies::OneTest
|
8
|
+
include OmniAuth::Strategy
|
9
|
+
include OmniAuth::MultiPassword::Base
|
10
|
+
|
11
|
+
def authenticate(username, password)
|
12
|
+
username == 'john' && password == 'secret'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class OmniAuth::Strategies::TwoTest
|
17
|
+
include OmniAuth::Strategy
|
18
|
+
include OmniAuth::MultiPassword::Base
|
19
|
+
|
20
|
+
def authenticate(username, password)
|
21
|
+
username == 'jane' && password == '1234'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
let(:app) do
|
26
|
+
Rack::Builder.new {
|
27
|
+
use OmniAuth::Test::PhonySession
|
28
|
+
use OmniAuth::Strategies::MultiPassword do
|
29
|
+
authenticator :one_test
|
30
|
+
authenticator :two_test
|
31
|
+
end
|
32
|
+
run ->(env) { [404, {'Content-Type' => 'text/plain'}, [env['omniauth.auth']['uid'].to_s]] }
|
33
|
+
}.to_app
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'shows login FORM' do
|
37
|
+
get '/auth/multipassword'
|
38
|
+
|
39
|
+
expect(last_response.body).to include '<form'
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'redirect on all failed strategies' do
|
43
|
+
post '/auth/multipassword/callback', username: 'paul', password: 'wrong'
|
44
|
+
expect(last_response).to be_redirect
|
45
|
+
expect(last_response.headers['Location']).to eq '/auth/failure?message=invalid_credentials&strategy=multipassword'
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'authenticates john' do
|
49
|
+
post '/auth/multipassword/callback', username: 'john', password: 'secret'
|
50
|
+
expect(last_response.body).to eq 'john'
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'authenticates jane' do
|
54
|
+
post '/auth/multipassword/callback', username: 'jane', password: '1234'
|
55
|
+
expect(last_response.body).to eq 'jane'
|
56
|
+
end
|
57
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'simplecov'
|
3
|
+
|
4
|
+
if ENV['CI'] || (defined?(:RUBY_ENGINE) && RUBY_ENGINE != 'rbx')
|
5
|
+
begin
|
6
|
+
require 'codeclimate-test-reporter'
|
7
|
+
CodeClimate::TestReporter.start
|
8
|
+
rescue LoadError
|
9
|
+
end
|
10
|
+
SimpleCov.start
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'omniauth-multipassword'
|
14
|
+
|
15
|
+
Dir[File.expand_path('spec/support/**/*.rb')].each {|f| require f }
|
16
|
+
|
17
|
+
# Disable omniauth logger
|
18
|
+
class NullLogger < Logger
|
19
|
+
def initialize(*args)
|
20
|
+
end
|
21
|
+
|
22
|
+
def add(*args, &block)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
OmniAuth.config.logger = NullLogger.new
|
27
|
+
|
28
|
+
RSpec.configure do |config|
|
29
|
+
config.order = 'random'
|
30
|
+
end
|
metadata
CHANGED
@@ -1,37 +1,38 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-multipassword
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Graichen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-05-18 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
19
|
version: '1.0'
|
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
26
|
version: '1.0'
|
27
27
|
description: A OmniAuth strategy to authenticate using different passwort strategies.
|
28
28
|
email:
|
29
|
-
-
|
29
|
+
- jg@altimos.de
|
30
30
|
executables: []
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
-
- .gitignore
|
34
|
+
- ".gitignore"
|
35
|
+
- ".travis.yml"
|
35
36
|
- Gemfile
|
36
37
|
- LICENSE
|
37
38
|
- README.md
|
@@ -41,6 +42,9 @@ files:
|
|
41
42
|
- lib/omniauth/multipassword/version.rb
|
42
43
|
- lib/omniauth/strategies/multi_password.rb
|
43
44
|
- omniauth-multipassword.gemspec
|
45
|
+
- spec/omniauth/multipassword/base_spec.rb
|
46
|
+
- spec/omniauth/strategy/multi_password_spec.rb
|
47
|
+
- spec/spec_helper.rb
|
44
48
|
homepage: https://github.com/jgraichen/omniauth-multipassword
|
45
49
|
licenses:
|
46
50
|
- MIT
|
@@ -51,17 +55,17 @@ require_paths:
|
|
51
55
|
- lib
|
52
56
|
required_ruby_version: !ruby/object:Gem::Requirement
|
53
57
|
requirements:
|
54
|
-
- -
|
58
|
+
- - ">="
|
55
59
|
- !ruby/object:Gem::Version
|
56
60
|
version: '0'
|
57
61
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
62
|
requirements:
|
59
|
-
- -
|
63
|
+
- - ">="
|
60
64
|
- !ruby/object:Gem::Version
|
61
65
|
version: '0'
|
62
66
|
requirements: []
|
63
67
|
rubyforge_project:
|
64
|
-
rubygems_version: 2.
|
68
|
+
rubygems_version: 2.4.6
|
65
69
|
signing_key:
|
66
70
|
specification_version: 4
|
67
71
|
summary: A OmniAuth strategy to authenticate using different passwort strategies.
|