snuffleupagus 0.2.2 → 0.3.2

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
2
  SHA256:
3
- metadata.gz: 81c2fe0d377038f07a9bcead3e719634ed5ab03708f32d0e057ad7e79aab2cf7
4
- data.tar.gz: 8502a478b9e5eacebf04968d7a7c3205677893264ac8402545c029d7e43c44a2
3
+ metadata.gz: f0f98ff72084d4ba25ea4bfa6c54b116f164e288c85f078bba36c7184edb99ce
4
+ data.tar.gz: f6b5e1e61fa86ec5e283d0816a08de1863e57b1035b390969102380cd980d039
5
5
  SHA512:
6
- metadata.gz: efd8380cac1395bb7c8d5c87e76c954ce82d710305095b2300879c6bdc9376d031370ec53566b6dfda0218856d3972c8953b8b0722abcb2748b672cfa89cfb38
7
- data.tar.gz: 7ed16f47b22a43b1bfc06716f865f1ea7a9914071f93c27f5ecca7109e63b8fabd5b69c0d4f0256367b1a84bc0d5c9986d872adf1745b50af90783b48966602e
6
+ metadata.gz: 19c93b218f0a606a9f2b4fdc46b5b480782cf31bb38f7f0ce017669de6667a8e0ff2788f3d33369131b0c064e070195c135d3fe4fad8d594d078233da8bb1135
7
+ data.tar.gz: 79beadaf365531b40d51b771f1bfb910f561a679ff1f6a786a67fe17040ce99c6972376b5c45a93e96a3d0b999cd5e71bdedfbd65af5964c40417cd459af53f8
@@ -0,0 +1,29 @@
1
+ name: Test Snuffleupagus Ruby gem
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['3.0', '3.1', '3.2', '3.3']
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+
19
+ - name: Set up Ruby
20
+ uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: ${{ matrix.ruby-version }}
23
+ bundler-cache: true
24
+
25
+ - name: Lint code - Rubocop
26
+ run: bundle exec rubocop
27
+
28
+ - name: Run tests
29
+ run: bundle exec rake
data/.rubocop.yml CHANGED
@@ -1,10 +1,14 @@
1
+ require:
2
+ - rubocop-rake
3
+ - rubocop-rspec
4
+
1
5
  AllCops:
2
6
  NewCops: enable
3
- TargetRubyVersion: 2.5
7
+ TargetRubyVersion: 3.0
4
8
 
5
9
  Metrics/BlockLength:
6
10
  Exclude:
7
11
  - 'spec/**/*'
8
12
 
9
- Metrics/LineLength:
10
- IgnoredPatterns: ['\A +#']
13
+ RSpec/NestedGroups:
14
+ Max: 4
data/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
3
3
  ## Unreleased
4
4
  - none
5
5
 
6
+ ## [0.3.2](releases/tag/v0.3.2) - 2024-04-28
7
+ ### Added
8
+ - Add support for Ruby 3.2 and 3.3 (#4)
9
+
10
+ ## [0.3.1](releases/tag/v0.3.1) - 2022-08-19
11
+ ### Added
12
+ - Add support for Ruby 3.1 (#3)
13
+ ### Updated
14
+ - Use Github actions in favour of Travis CI (#3)
15
+
16
+ ## [0.2.2](releases/tag/v0.2.2) - 2021-12-22
17
+ ### Added
18
+ - Add support for Ruby 3.0 (#2)
19
+
6
20
  ## [0.1.1](releases/tag/v0.1.1) - 2020-10-21
7
21
  ### Updated
8
22
  - Use named parameters when creating and validating tokens
data/Gemfile CHANGED
@@ -2,3 +2,10 @@
2
2
 
3
3
  source 'http://rubygems.org'
4
4
  gemspec
5
+
6
+ gem 'rake', '~> 12.3', '>= 12.3.3'
7
+ gem 'rspec', '~> 3'
8
+ gem 'rubocop', '~> 1.26'
9
+ gem 'rubocop-rake', '~> 0.6'
10
+ gem 'rubocop-rspec', '~> 2.9'
11
+ gem 'timecop', '~> 0'
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Studiosity
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -61,7 +61,7 @@ module Snuffleupagus
61
61
  raise ArgumentError, 'Data is too short' unless data.length >= 16
62
62
 
63
63
  salt = data[8..15]
64
- data = data[16..-1]
64
+ data = data[16..]
65
65
  setup_cipher(:decrypt, salt)
66
66
  cipher.update(data) + cipher.final
67
67
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Snuffleupagus
4
- VERSION = '0.2.2'
4
+ VERSION = '0.3.2'
5
5
  end
@@ -9,15 +9,18 @@ Gem::Specification.new do |s|
9
9
  s.authors = ['Andrew Bromwich']
10
10
  s.email = ['abromwich@studiosity.com']
11
11
  s.homepage = 'https://github.com/Studiosity/snuffleupagus'
12
+ s.license = 'MIT'
12
13
  s.description = 'Simple auth token generator/validator'
13
14
  s.summary = "snuffleupagus-#{s.version}"
14
15
  s.required_rubygems_version = '> 1.3.6'
15
- s.required_ruby_version = ['>= 2.5.0', '< 3.1.0']
16
+ s.required_ruby_version = ['>= 3.0.0', '< 3.4.0']
16
17
 
17
- s.add_development_dependency 'rake', '~> 12.3', '>= 12.3.3'
18
- s.add_development_dependency 'rspec', '~> 3'
19
- s.add_development_dependency 'rubocop', '~> 0.49'
20
- s.add_development_dependency 'timecop', '~> 0'
18
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
19
+ # delete this section to allow pushing this gem to any host.
20
+ raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless s.respond_to?(:metadata)
21
+
22
+ s.metadata['allowed_push_host'] = 'https://rubygems.org'
23
+ s.metadata['rubygems_mfa_required'] = 'true'
21
24
 
22
25
  s.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
23
26
  s.executables = `git ls-files`.split("\n").map do |f|
@@ -4,18 +4,18 @@ require './lib/snuffleupagus'
4
4
  require 'timecop'
5
5
 
6
6
  describe Snuffleupagus::AuthToken do
7
- let(:snuffy) { Snuffleupagus::AuthToken.new('sup3r4w3s0m3p4ssw0rd') }
7
+ let(:snuffy) { described_class.new('sup3r4w3s0m3p4ssw0rd') }
8
8
 
9
9
  describe '#create_token' do
10
- subject { snuffy.create_token context: 'my-context' }
10
+ subject(:create_token) { snuffy.create_token context: 'my-context' }
11
11
 
12
12
  it { is_expected.to be_a String }
13
- it { expect(subject.length).to eq 96 }
13
+ it { expect(create_token.length).to eq 96 }
14
14
  it { is_expected.to match(/\A[a-f0-9]{96}\z/) }
15
15
  end
16
16
 
17
17
  describe '#token_valid?' do
18
- subject { snuffy.token_valid?(token: token, context: 'my-context') }
18
+ subject(:token_valid?) { snuffy.token_valid?(token: token, context: 'my-context') }
19
19
 
20
20
  context 'with a valid token' do
21
21
  let(:token) { snuffy.create_token context: 'my-context' }
@@ -47,31 +47,31 @@ describe Snuffleupagus::AuthToken do
47
47
  it { is_expected.to be_falsey }
48
48
  end
49
49
 
50
- context 'testing expired tokens' do
50
+ context 'with an expired token' do
51
51
  let(:token) { snuffy.create_token context: 'my-context' }
52
52
 
53
53
  before { token } # pre-load the token
54
54
  after { Timecop.return }
55
55
 
56
- context 'just inside the time difference (expired token)' do
56
+ context 'when just inside the time difference (expired token)' do
57
57
  before { Timecop.freeze Time.now - 119 }
58
58
 
59
59
  it { is_expected.to be_truthy }
60
60
  end
61
61
 
62
- context 'just outside the time difference (expired token)' do
62
+ context 'when just outside the time difference (expired token)' do
63
63
  before { Timecop.freeze Time.now - 120 }
64
64
 
65
65
  it { is_expected.to be_falsey }
66
66
  end
67
67
 
68
- context 'just inside the time difference (future token)' do
68
+ context 'when just inside the time difference (future token)' do
69
69
  before { Timecop.freeze Time.now + 119 }
70
70
 
71
71
  it { is_expected.to be_truthy }
72
72
  end
73
73
 
74
- context 'just outside the time difference (future token)' do
74
+ context 'when just outside the time difference (future token)' do
75
75
  before { Timecop.freeze Time.now + 120 }
76
76
 
77
77
  it { is_expected.to be_falsey }
metadata CHANGED
@@ -1,77 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snuffleupagus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Bromwich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-22 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '12.3'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 12.3.3
23
- type: :development
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '12.3'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 12.3.3
33
- - !ruby/object:Gem::Dependency
34
- name: rspec
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '3'
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '3'
47
- - !ruby/object:Gem::Dependency
48
- name: rubocop
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '0.49'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '0.49'
61
- - !ruby/object:Gem::Dependency
62
- name: timecop
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '0'
11
+ date: 2024-04-28 00:00:00.000000000 Z
12
+ dependencies: []
75
13
  description: Simple auth token generator/validator
76
14
  email:
77
15
  - abromwich@studiosity.com
@@ -79,11 +17,12 @@ executables: []
79
17
  extensions: []
80
18
  extra_rdoc_files: []
81
19
  files:
20
+ - ".github/workflows/test.yml"
82
21
  - ".gitignore"
83
22
  - ".rubocop.yml"
84
- - ".travis.yml"
85
23
  - CHANGELOG.md
86
24
  - Gemfile
25
+ - LICENSE
87
26
  - README.md
88
27
  - Rakefile
89
28
  - Snuffy.png
@@ -91,10 +30,13 @@ files:
91
30
  - lib/snuffleupagus/auth_token.rb
92
31
  - lib/snuffleupagus/version.rb
93
32
  - snuffleupagus.gemspec
94
- - spec/snuffleupagus_spec.rb
33
+ - spec/snuffleupagus/auth_token_spec.rb
95
34
  homepage: https://github.com/Studiosity/snuffleupagus
96
- licenses: []
97
- metadata: {}
35
+ licenses:
36
+ - MIT
37
+ metadata:
38
+ allowed_push_host: https://rubygems.org
39
+ rubygems_mfa_required: 'true'
98
40
  post_install_message:
99
41
  rdoc_options: []
100
42
  require_paths:
@@ -103,18 +45,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
45
  requirements:
104
46
  - - ">="
105
47
  - !ruby/object:Gem::Version
106
- version: 2.5.0
48
+ version: 3.0.0
107
49
  - - "<"
108
50
  - !ruby/object:Gem::Version
109
- version: 3.1.0
51
+ version: 3.4.0
110
52
  required_rubygems_version: !ruby/object:Gem::Requirement
111
53
  requirements:
112
54
  - - ">"
113
55
  - !ruby/object:Gem::Version
114
56
  version: 1.3.6
115
57
  requirements: []
116
- rubygems_version: 3.0.9
58
+ rubygems_version: 3.3.7
117
59
  signing_key:
118
60
  specification_version: 4
119
- summary: snuffleupagus-0.2.2
61
+ summary: snuffleupagus-0.3.2
120
62
  test_files: []
data/.travis.yml DELETED
@@ -1,14 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.5
5
- - 2.6
6
- - 2.7
7
- - 3.0
8
-
9
- install:
10
- - bundle install --retry=3
11
-
12
- script:
13
- - bundle exec rubocop
14
- - bundle exec rake