omniauth-idcard 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,3 +2,7 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ coverage/*
6
+ tmp/*
7
+ .DS_Store
8
+ spec/certificates/*
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format nested
data/Gemfile CHANGED
@@ -2,3 +2,11 @@ source "http://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in omniauth-idcard.gemspec
4
4
  gemspec
5
+
6
+ group :development, :test do
7
+ gem 'guard'
8
+ gem 'guard-rspec'
9
+ gem 'guard-bundler'
10
+ gem 'growl'
11
+ gem 'rb-fsevent'
12
+ end
data/Guardfile ADDED
@@ -0,0 +1,10 @@
1
+ guard 'rspec', :version => 2 do
2
+ watch(%r{^spec/.+_spec\.rb$})
3
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
+ watch('spec/spec_helper.rb') { "spec" }
5
+ end
6
+
7
+ guard 'bundler' do
8
+ watch('Gemfile')
9
+ watch(/^.+\.gemspec/)
10
+ end
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
+ #!/usr/bin/env rake
1
2
  require "bundler/gem_tasks"
3
+ require 'rspec/core/rake_task'
4
+
5
+ desc 'Default: run specs.'
6
+ task :default => :spec
7
+
8
+ desc "Run specs"
9
+ RSpec::Core::RakeTask.new
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module Idcard
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -55,13 +55,19 @@ module OmniAuth
55
55
 
56
56
  def parse_client_certificate(data)
57
57
  cert = OpenSSL::X509::Certificate.new(data)
58
- subject_dn = unescape(cert.subject.to_s).unpack("C*").pack("U*").scan(/./mu) {|s| s[0].chr }
59
-
58
+
59
+ # from 2011-07-01 Common Name is encoded in UTF-8
60
+ subject_dn = if cert.not_before.to_date >= Date.parse('2011-07-01')
61
+ unescape(cert.subject.to_s).force_encoding('UTF-8')
62
+ else
63
+ unescape(cert.subject.to_s).unpack("C*").pack("U*").scan(/./mu) {|s| s[0].chr }.gsub("\u0000", '')
64
+ end
65
+
60
66
  debug "Subject DN: #{subject_dn}"
61
-
62
- subject_dn.mb_chars.split('/').inject(Hash.new) do |memo, part|
67
+
68
+ subject_dn.split('/').inject(Hash.new) do |memo, part|
63
69
  item = part.split('=')
64
- memo[item.first.to_s] = item.last
70
+ memo[item.first.to_s] = item.last if item.last
65
71
  memo
66
72
  end
67
73
  end
@@ -19,4 +19,9 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_dependency 'omniauth-oauth', '~> 1.0'
22
+
23
+ s.add_development_dependency 'rspec', '~> 2.12.0'
24
+ s.add_development_dependency 'webmock'
25
+ s.add_development_dependency 'simplecov'
26
+ s.add_development_dependency 'rack-test'
22
27
  end
@@ -0,0 +1,32 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe OmniAuth::Strategies::Idcard do
5
+ subject do
6
+ OmniAuth::Strategies::Idcard.new({})
7
+ end
8
+
9
+ context '#parse_client_certificate' do
10
+ before do
11
+ @hash = subject.parse_client_certificate(File.read(File.join('spec', 'certificates', "#{ssl_client_cert}.pem")))
12
+ end
13
+
14
+ let(:ssl_client_cert) { '' }
15
+
16
+ context 'UCS2' do
17
+ let(:ssl_client_cert) {'UCS2'}
18
+
19
+ it 'parses lastname' do
20
+ @hash['SN'].should == 'JÄRV'
21
+ end
22
+ end
23
+
24
+ context 'UTF-8' do
25
+ let(:ssl_client_cert) {'UTF8'}
26
+
27
+ it 'parses firstname' do
28
+ @hash['GN'].should == 'ÜLLE'
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,22 @@
1
+ $:.unshift File.expand_path('..', __FILE__)
2
+ $:.unshift File.expand_path('../../lib', __FILE__)
3
+ Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
4
+ require 'simplecov'
5
+ SimpleCov.start
6
+ require 'rspec'
7
+ require 'rack/test'
8
+ require 'webmock/rspec'
9
+ require 'omniauth'
10
+ require 'omniauth-oauth'
11
+ require 'omniauth-idcard'
12
+
13
+ RSpec.configure do |config|
14
+ config.treat_symbols_as_metadata_keys_with_true_values = true
15
+ config.filter_run :focus => true
16
+ config.run_all_when_everything_filtered = true
17
+
18
+ config.mock_with :rspec
19
+ config.include WebMock::API
20
+ config.include Rack::Test::Methods
21
+ config.extend OmniAuth::Test::StrategyMacros, :type => :strategy
22
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-idcard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-02 00:00:00.000000000 Z
12
+ date: 2013-01-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: omniauth-oauth
@@ -27,6 +27,70 @@ dependencies:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: '1.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 2.12.0
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.12.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: webmock
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: simplecov
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rack-test
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
30
94
  description: OmniAuth strategy for Estonian ID-Card
31
95
  email:
32
96
  - tarmo.talu@gmail.com
@@ -35,12 +99,16 @@ extensions: []
35
99
  extra_rdoc_files: []
36
100
  files:
37
101
  - .gitignore
102
+ - .rspec
38
103
  - Gemfile
104
+ - Guardfile
39
105
  - Rakefile
40
106
  - lib/omniauth-idcard.rb
41
107
  - lib/omniauth-idcard/version.rb
42
108
  - lib/omniauth/strategies/idcard.rb
43
109
  - omniauth-idcard.gemspec
110
+ - spec/omniauth/strategies/idcard_spec.rb
111
+ - spec/spec_helper.rb
44
112
  homepage: http://github.com/tarmotalu/omniauth-idcard
45
113
  licenses: []
46
114
  post_install_message:
@@ -65,4 +133,6 @@ rubygems_version: 1.8.24
65
133
  signing_key:
66
134
  specification_version: 3
67
135
  summary: OmniAuth strategy for Estonian ID-Card
68
- test_files: []
136
+ test_files:
137
+ - spec/omniauth/strategies/idcard_spec.rb
138
+ - spec/spec_helper.rb