prx_auth 1.7.2 → 1.8.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
2
  SHA256:
3
- metadata.gz: 8db9794b5957f93a863dd566c371420ee1d02002c7ab8a681fdc3a518cbe4f1c
4
- data.tar.gz: 9938ebf515cc8c9918f8ae3e597600245a76ae48b62fecb3f102ddfbb4e2fe8c
3
+ metadata.gz: 80b52f104115aa7226438db0566660e430cec97a304798bf2098467d69a73547
4
+ data.tar.gz: a40db03c0c4a4f529231a8d7f63c80a8c6c50b5f7010c6cc84d6d63f399e5752
5
5
  SHA512:
6
- metadata.gz: 4dd977316195060b437eca1ce1c2fb8f4fa033ee8262ca406d769200e0360d1b69a95cdc72ebb5c85b9d54d149a52faf531b453f82a3612dc423abed9a3fe590
7
- data.tar.gz: 29057475f034443ef955eaf69773526044bfdd85de2e753676fcaaaa57ae275b74a64158043d0afa363961c98876c4aea169ba54887173330d1ac49c4ee57ace
6
+ metadata.gz: cb2093473b3f817c9e0b7edf4eacd9427d3efa30d3338c344956a64c004876b788e1342615f72d20f2fcfd7e3ff79a1247180da65c9691c30a960dbafd7b0e2d
7
+ data.tar.gz: ed0ee1c6557b1a5420e9f6e195067de9b5440175c59cb8d6708f668464e86018c89d162d146b8e92fddf5c81594aedc86011d4c48a670796a9b989a62af81026
@@ -43,6 +43,19 @@ module PrxAuth
43
43
  super(key.to_s, value)
44
44
  end
45
45
 
46
+ def except!(*keys)
47
+ keys.each { |key| delete(key.to_s) }
48
+ self
49
+ end
50
+
51
+ def except(*keys)
52
+ dup.except!(*keys)
53
+ end
54
+
55
+ def empty?
56
+ @wildcard.empty? && (super || values.all?(&:empty?))
57
+ end
58
+
46
59
  def condense
47
60
  condensed_wildcard = @wildcard.condense
48
61
  condensed_map = map do |resource, list|
@@ -1,3 +1,3 @@
1
1
  module PrxAuth
2
- VERSION = "1.7.2"
2
+ VERSION = "1.8.0"
3
3
  end
@@ -37,6 +37,19 @@ module Rack
37
37
  resources(::PrxAuth::Rails.configuration.namespace, scope).map(&:to_i)
38
38
  end
39
39
 
40
+ def except!(*resources)
41
+ @authorized_resources = @authorized_resources.except(*resources)
42
+ self
43
+ end
44
+
45
+ def except(*resources)
46
+ dup.except!(*resources)
47
+ end
48
+
49
+ def empty_resources?
50
+ @authorized_resources.empty?
51
+ end
52
+
40
53
  private
41
54
 
42
55
  def unpack_aur(aur)
data/prx_auth.gemspec CHANGED
@@ -23,6 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "coveralls", "~> 0"
24
24
  spec.add_development_dependency "guard"
25
25
  spec.add_development_dependency "guard-minitest"
26
+ spec.add_development_dependency "pry"
27
+ spec.add_development_dependency "pry-byebug"
26
28
  spec.add_development_dependency "standard"
27
29
 
28
30
  spec.add_dependency "rack", ">= 1.5.2"
@@ -181,4 +181,17 @@ describe PrxAuth::ResourceMap do
181
181
  refute_nil map["789"]
182
182
  end
183
183
  end
184
+
185
+ describe "#except" do
186
+ it "removes keys" do
187
+ map2 = map.except(123)
188
+
189
+ assert_equal ["123", "456"], map.keys
190
+ assert_equal ["456"], map2.keys
191
+
192
+ # the ! version modifies the map
193
+ map2.except!("456")
194
+ assert_equal [], map2.keys
195
+ end
196
+ end
184
197
  end
@@ -97,5 +97,42 @@ describe Rack::PrxAuth::TokenData do
97
97
  end
98
98
  end
99
99
  end
100
+
101
+ describe "#except" do
102
+ let(:token) { Rack::PrxAuth::TokenData.new("aur" => aur) }
103
+ let(:aur) { {"123" => "admin ns1:namespaced", "456" => "member"} }
104
+
105
+ it "removes resources from the aur" do
106
+ token2 = token.except(123)
107
+
108
+ assert token.authorized?(123, "admin")
109
+ assert token.authorized?(456, "member")
110
+
111
+ refute token2.authorized?(123, "admin")
112
+ assert token2.authorized?(456, "member")
113
+
114
+ # the ! version modifies the token
115
+ token2.except!(456)
116
+ refute token2.authorized?(456, "member")
117
+ end
118
+ end
119
+
120
+ describe "#empty_resources?" do
121
+ it "checks if the user has access to any resources" do
122
+ token = Rack::PrxAuth::TokenData.new("aur" => {"123" => "anything"})
123
+ refute token.empty_resources?
124
+ assert token.except("123").empty_resources?
125
+ end
126
+
127
+ it "checks for empty scopes" do
128
+ token = Rack::PrxAuth::TokenData.new("aur" => {"123" => ""})
129
+ assert token.empty_resources?
130
+ end
131
+
132
+ it "is not empty with wildcard auth" do
133
+ token = Rack::PrxAuth::TokenData.new("aur" => {"*" => "anything"})
134
+ refute token.empty_resources?
135
+ end
136
+ end
100
137
  end
101
138
  end
data/test/test_helper.rb CHANGED
@@ -4,6 +4,8 @@ Coveralls.wear!
4
4
  $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
5
5
  require "prx_auth"
6
6
  require "rack/prx_auth"
7
+ require "pry"
8
+ require "pry-byebug"
7
9
 
8
10
  require "minitest/autorun"
9
11
  require "minitest/spec"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prx_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eve Asher
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-05-26 00:00:00.000000000 Z
12
+ date: 2023-08-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -81,6 +81,34 @@ dependencies:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: pry
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: pry-byebug
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
84
112
  - !ruby/object:Gem::Dependency
85
113
  name: standard
86
114
  requirement: !ruby/object:Gem::Requirement