ehsso 0.3.0 → 0.4.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: 4b9f42d709131a3559722cc3301702af74de6e11
4
- data.tar.gz: 0c4397591c3bbd65225c310105e5a82935be1f1f
2
+ SHA256:
3
+ metadata.gz: 683f903f1ea816c48a57b9eda4d13dcf404f0df8b59201b3f96ecba20d1edc4d
4
+ data.tar.gz: 91902a4685398e35c4bb8eeed376c3d198e1e624115373bb308912d4cdb9fe8f
5
5
  SHA512:
6
- metadata.gz: 5583feb1942472c6e5269be1093272994e0c7712b4c42b35c757404965e252a766179d490950ed64a301e217bbf3409d05a71ce68c020035b00290fc7bffc9dd
7
- data.tar.gz: d6cfffba5063f2b3b59f54442ec65eef9389b27dceba8dd2f5a6877afb87c63265957c31f81284e7a82409b97ccb7386f65d6b8ae3f0c330fa80071f9f532fd2
6
+ metadata.gz: 5a500f497f559da02ed4108bd46d73ab2cb99c4aa83f19e9cd2564299e66ec777a60bb69b7cb610b462b7573199d70d3b7213dd8a068e2cefde6b2df14506988
7
+ data.tar.gz: 957687c29349f36dd75c09596b6ae092516b7e2cb36058c058f3ee68392ca91addf601b475d415fd6c1078cf144935f450165bd51430fc6a7e817b77154f8c28
@@ -0,0 +1,9 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "bundler"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ day: "saturday"
8
+ time: "04:00"
9
+ timezone: "Europe/Zurich"
@@ -0,0 +1,33 @@
1
+ name: cd
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+
8
+ build:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - name: Checkout current code
13
+ uses: actions/checkout@v3
14
+
15
+ - name: Set up Ruby
16
+ uses: ruby/setup-ruby@v1
17
+ with:
18
+ ruby-version: '3.1'
19
+ bundler: latest
20
+ bundler-cache: true
21
+ cache-version: 1
22
+
23
+ - name: Push to Rubygems
24
+ env:
25
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26
+ run: |
27
+ git config --global user.email "thomas.steiner@ikey.ch"
28
+ git config --global user.name "thomis"
29
+ mkdir ~/.gem
30
+ echo -e "---\n:rubygems_api_key: ${{ secrets.RUBYGEMS_API_KEY }}" > ~/.gem/credentials
31
+ chmod 600 ~/.gem/credentials
32
+ bundle exec rake release
33
+ rm ~/.gem/credentials
@@ -0,0 +1,52 @@
1
+ name: ci
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - "*"
7
+
8
+ pull_request:
9
+ branches:
10
+ - "*"
11
+
12
+ schedule:
13
+ - cron: 0 2 * * 1,3,5,6
14
+
15
+ # Allows you to run this workflow manually from the Actions tab
16
+ workflow_dispatch:
17
+
18
+ jobs:
19
+ build:
20
+ runs-on: ubuntu-latest
21
+ env:
22
+ CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ ruby: [ '3.2', '3.1', '3.0', '2.7', '2.6']
27
+
28
+ name: Ruby ${{ matrix.ruby }}
29
+ steps:
30
+ - uses: actions/checkout@v3
31
+
32
+ - name: Set up Ruby
33
+ uses: ruby/setup-ruby@v1
34
+ with:
35
+ ruby-version: ${{ matrix.ruby }}
36
+ bundler: latest
37
+ bundler-cache: true
38
+ cache-version: 1
39
+
40
+ - name: Code Climate setup test reporter
41
+ run: |
42
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
43
+ chmod +x ./cc-test-reporter
44
+ ./cc-test-reporter before-build
45
+
46
+ - name: Run default task
47
+ run: |
48
+ bundle exec rake
49
+
50
+ - name: Code Climate publish test coverage
51
+ run: |
52
+ ./cc-test-reporter after-build
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog of ehsso
2
2
 
3
+ ## 0.4.0 / 2022-11-20
4
+
5
+ * Upgrade gem dependencies
6
+ * Add ci support for ruby 3.2
7
+ * Switch to GitHub actions incl. workflow to push relase to rubygems
8
+ * Use of standard style guide, linter and formatter
9
+ * Check test coverage
10
+ * Use of Dependabot
11
+ * Remove support for ruby 2.5 and 2.6
12
+
3
13
  ## 0.3.0 / 2019-02-20
4
14
 
5
15
  * Upgrade dependencies: bundler 2.0, rspec 3.8, rake 12.3, typhoeus 1.3.1
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in ehsso.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,11 +1,22 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/ehsso.svg)](https://badge.fury.io/rb/ehsso)
2
2
  [![Maintainability](https://api.codeclimate.com/v1/badges/baea493e227c446ffe49/maintainability)](https://codeclimate.com/github/thomis/ehsso/maintainability)
3
- [![Build Status](https://travis-ci.org/thomis/ehsso.svg?branch=master)](https://travis-ci.org/thomis/ehsso)
3
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/baea493e227c446ffe49/test_coverage)](https://codeclimate.com/github/thomis/ehsso/test_coverage)
4
+ [![ci](https://github.com/thomis/ehsso/actions/workflows/ci.yml/badge.svg)](https://github.com/thomis/ehsso/actions/workflows/ci.yml)
4
5
 
5
6
  # ehsso
6
7
 
7
8
  Company specific Single Sign On for Rails applications.
8
9
 
10
+ ## Supported Ruby Versions
11
+
12
+ Currently supported and tested ruby versions are:
13
+
14
+ - 3.2
15
+ - 3.1
16
+ - 3.0
17
+ - 2.7
18
+ - 2.6
19
+
9
20
  ## Installation
10
21
 
11
22
  Simply add ehsso to your Gemfile and bundle it up.
data/Rakefile CHANGED
@@ -1,6 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ require "standard/rake"
3
4
 
4
- RSpec::Core::RakeTask.new(:spec)
5
+ RSpec::Core::RakeTask.new(:spec) do |t|
6
+ t.verbose = false
7
+ end
5
8
 
6
- task :default => :spec
9
+ task default: [:spec, :standard]
data/ehsso.gemspec CHANGED
@@ -1,31 +1,31 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'ehsso/version'
3
+ require "ehsso/version"
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "ehsso"
8
- spec.version = Ehsso::VERSION
9
- spec.date = "2017-06-14"
10
- spec.authors = ["Thomas Steiner"]
11
- spec.email = ["thomas.steiner@ikey.ch"]
6
+ spec.name = "ehsso"
7
+ spec.version = Ehsso::VERSION
8
+ spec.authors = ["Thomas Steiner"]
9
+ spec.email = ["thomas.steiner@ikey.ch"]
12
10
 
13
- spec.summary = %q{EH Single Sign On}
14
- spec.description = %q{EH Single Sign On}
15
- spec.homepage = "http://github.com/thomis/ehsso"
16
- spec.license = "MIT"
11
+ spec.summary = "EH Single Sign On"
12
+ spec.description = "EH Single Sign On"
13
+ spec.homepage = "http://github.com/thomis/ehsso"
14
+ spec.license = "MIT"
17
15
 
18
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
17
  f.match(%r{^(test|spec|features)/})
20
18
  end
21
- spec.bindir = "exe"
22
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
21
  spec.require_paths = ["lib"]
24
22
 
25
- spec.add_development_dependency "bundler", "~> 2.0"
26
- spec.add_development_dependency "rake", "~> 12.3"
27
- spec.add_development_dependency "rspec", "~> 3.8"
28
- spec.add_development_dependency "rails", "~> 5.1"
23
+ spec.add_development_dependency "bundler", "~> 2.3"
24
+ spec.add_development_dependency "rake", "~> 13.0"
25
+ spec.add_development_dependency "rspec", "~> 3.12"
26
+ spec.add_development_dependency "rails", "~> 6.1.6.1"
27
+ spec.add_development_dependency "standard", "~> 1.18"
28
+ spec.add_development_dependency "simplecov", "~> 0.21"
29
29
 
30
30
  spec.add_runtime_dependency("typhoeus", "~> 1.3")
31
31
  end
@@ -1,13 +1,12 @@
1
1
  module Ehsso
2
-
3
2
  class Configuration
4
3
  attr_accessor :module_key
5
4
  attr_accessor :base_url
6
5
  attr_accessor :username_and_password
7
6
 
8
7
  def initialize
9
- @module_key = ''
10
- @base_url = ''
8
+ @module_key = ""
9
+ @base_url = ""
11
10
  @username_and_password = nil
12
11
  end
13
12
  end
@@ -20,5 +19,4 @@ module Ehsso
20
19
  self.configuration ||= Configuration.new
21
20
  yield(configuration)
22
21
  end
23
-
24
22
  end
data/lib/ehsso/engine.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'rails/engine'
2
- require 'typhoeus'
1
+ require "rails/engine"
2
+ require "typhoeus"
3
3
 
4
4
  module Ehsso
5
5
  class Engine < ::Rails::Engine
data/lib/ehsso/person.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  module Ehsso
2
-
3
2
  class Person
4
-
5
3
  attr_accessor :id
6
4
  attr_accessor :reference
7
5
  attr_accessor :first_name
@@ -13,17 +11,17 @@ module Ehsso
13
11
 
14
12
  attr_accessor :last_error_message
15
13
 
16
- def initialize(args={})
17
- @id = args[:id]
18
- @reference = args[:reference]
19
- @first_name = args[:first_name]
20
- @last_name = args[:last_name]
21
- @email = args[:email]
14
+ def initialize(args = {})
15
+ @id = args[:id]
16
+ @reference = args[:reference]
17
+ @first_name = args[:first_name]
18
+ @last_name = args[:last_name]
19
+ @email = args[:email]
22
20
 
23
21
  # for this purpose we deal with only one module
24
- @module_key = args[:module_key]
25
- @module_name = args[:module_name]
26
- @roles = args[:roles].is_a?(Array) ? args[:roles] : []
22
+ @module_key = args[:module_key]
23
+ @module_name = args[:module_name]
24
+ @roles = args[:roles].is_a?(Array) ? args[:roles] : []
27
25
  end
28
26
 
29
27
  def valid?
@@ -32,54 +30,58 @@ module Ehsso
32
30
 
33
31
  # you can use methods like guest?, user?, operator?, administrator? etc.
34
32
  def method_missing(method)
35
- raise "Method [#{method}] not defined or allowed" unless method[-1] == '?'
33
+ raise "Method [#{method}] not defined or allowed" unless method[-1] == "?"
36
34
  @roles.include?(method[0..-2].upcase)
37
35
  end
38
36
 
37
+ def respond_to_missing?(method)
38
+ true if method[-1] == "?"
39
+ end
40
+
39
41
  def full_name
40
- return nil if self.last_name.nil? && self.first_name.nil?
41
- [self.last_name, self.first_name].compact.join(" ")
42
+ return nil if last_name.nil? && first_name.nil?
43
+ [last_name, first_name].compact.join(" ")
42
44
  end
43
45
 
44
- def self.parse_from_request_header(header={})
45
- person = Ehsso::Person.new()
46
+ def self.parse_from_request_header(header = {})
47
+ person = Ehsso::Person.new
46
48
 
47
49
  # reference (mandatory)
48
- if header['HTTP_NIBR521'].nil? || header['HTTP_NIBR521'].size == 0
50
+ if header["HTTP_NIBR521"].nil? || header["HTTP_NIBR521"].size == 0
49
51
  person.last_error_message = "Unable to extract HTTP_NIBR* porperties from request header"
50
52
  return person
51
53
  end
52
54
 
53
- person.reference = header['HTTP_NIBR521'].downcase
55
+ person.reference = header["HTTP_NIBR521"].downcase
54
56
 
55
57
  [
56
- [:first_name=, 'HTTP_NIBRFIRST'],
57
- [:last_name=, 'HTTP_NIBRLAST'],
58
- [:email=, 'HTTP_NIBREMAIL']
58
+ [:first_name=, "HTTP_NIBRFIRST"],
59
+ [:last_name=, "HTTP_NIBRLAST"],
60
+ [:email=, "HTTP_NIBREMAIL"]
59
61
  ].each do |method, key|
60
62
  person.send(method, header[key]) if header[key] && header[key].strip.size > 0
61
63
  end
62
64
 
63
- return person
65
+ person
64
66
  rescue => e
65
67
  person.last_error_message = e.to_s
66
- return person
68
+ person
67
69
  end
68
70
 
69
71
  def fetch
70
- handle_service_call(action: 'people.modules.roles')
72
+ handle_service_call(action: "people.modules.roles")
71
73
  end
72
74
 
73
75
  def fetch_or_create
74
- handle_service_call(action: 'people_with_guest_registration_if_missing.modules.roles')
76
+ handle_service_call(action: "people_with_guest_registration_if_missing.modules.roles")
75
77
  end
76
78
 
77
79
  private
78
80
 
79
- def payload(args={})
81
+ def payload(args = {})
80
82
  {
81
- type: 'request',
82
- action: args[:action] || 'people.modules.roles',
83
+ type: "request",
84
+ action: args[:action] || "people.modules.roles",
83
85
  request: [
84
86
  {
85
87
  reference: @reference,
@@ -96,8 +98,8 @@ module Ehsso
96
98
  }
97
99
  end
98
100
 
99
- def handle_service_call(args={})
100
- url = [Ehsso.configuration.base_url, 'people'].join('/')
101
+ def handle_service_call(args = {})
102
+ url = [Ehsso.configuration.base_url, "people"].join("/")
101
103
  userpwd = Ehsso.configuration.username_and_password
102
104
 
103
105
  # allows to mock class for rspec
@@ -112,17 +114,17 @@ module Ehsso
112
114
  begin
113
115
  data = JSON.parse(response.body)
114
116
 
115
- item = data['response'][0]
116
- @id = item['id']
117
- @reference = item['reference']
118
- @first_name = item['first_name']
119
- @last_name = item['last_name']
120
- @email = item['email']
121
-
122
- modul = item['modules'][0]
123
- @module_key = modul['reference']
124
- @module_name = modul['name']
125
- @roles = modul['roles']
117
+ item = data["response"][0]
118
+ @id = item["id"]
119
+ @reference = item["reference"]
120
+ @first_name = item["first_name"]
121
+ @last_name = item["last_name"]
122
+ @email = item["email"]
123
+
124
+ modul = item["modules"][0]
125
+ @module_key = modul["reference"]
126
+ @module_name = modul["name"]
127
+ @roles = modul["roles"]
126
128
  @last_error_message = nil
127
129
  rescue
128
130
  @last_error_message = "Unable to parse service response data"
@@ -132,13 +134,11 @@ module Ehsso
132
134
  begin
133
135
  # try to parse the body to get valid error message
134
136
  data = JSON.parse(response.body)
135
- @last_error_message = data['response_message']
137
+ @last_error_message = data["response_message"]
136
138
  rescue
137
139
  @last_error_message = "#{response.request.url}: [#{response.code}] #{response.return_message}"
138
140
  end
139
141
  end
140
142
  end
141
-
142
143
  end
143
-
144
144
  end
data/lib/ehsso/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ehsso
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/ehsso.rb CHANGED
@@ -1,9 +1,9 @@
1
- require 'json'
1
+ require "json"
2
2
 
3
- require 'ehsso/version'
4
- require 'ehsso/configuration'
5
- require 'ehsso/engine'
6
- require 'ehsso/person'
3
+ require "ehsso/version"
4
+ require "ehsso/configuration"
5
+ require "ehsso/engine"
6
+ require "ehsso/person"
7
7
 
8
8
  module Ehsso
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ehsso
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Steiner
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-14 00:00:00.000000000 Z
11
+ date: 2022-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,56 +16,84 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '2.3'
20
20
  type: :development
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: '2.0'
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '12.3'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '12.3'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.8'
47
+ version: '3.12'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.8'
54
+ version: '3.12'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '5.1'
61
+ version: 6.1.6.1
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '5.1'
68
+ version: 6.1.6.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: standard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.18'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.18'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.21'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.21'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: typhoeus
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -87,9 +115,11 @@ executables: []
87
115
  extensions: []
88
116
  extra_rdoc_files: []
89
117
  files:
118
+ - ".github/dependabot.yml"
119
+ - ".github/workflows/cd.yml"
120
+ - ".github/workflows/ci.yml"
90
121
  - ".gitignore"
91
122
  - ".rspec"
92
- - ".travis.yml"
93
123
  - CHANGELOG.md
94
124
  - Gemfile
95
125
  - README.md
@@ -119,8 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
149
  - !ruby/object:Gem::Version
120
150
  version: '0'
121
151
  requirements: []
122
- rubyforge_project:
123
- rubygems_version: 2.6.14
152
+ rubygems_version: 3.3.7
124
153
  signing_key:
125
154
  specification_version: 4
126
155
  summary: EH Single Sign On
data/.travis.yml DELETED
@@ -1,15 +0,0 @@
1
- language: ruby
2
- os:
3
- - linux
4
- - osx
5
- osx_image: xcode9.1
6
- rvm:
7
- - 2.6.1
8
- - 2.6.0
9
- - 2.5.3
10
- - 2.5.0
11
- - 2.4.2
12
- - 2.4.1
13
- - 2.3.1
14
- before_install:
15
- - gem install bundler --version '~> 2.0.1'