ehsso 0.3.0 → 0.4.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: 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'