perm 0.0.1 → 0.0.2
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 +4 -4
- data/lib/perm/version.rb +1 -1
- data/test/authorizer_test.rb +117 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5374535f076e9f2f48a6d5f83e2a601afda7f79
|
4
|
+
data.tar.gz: 283b6018f0690aa50362e37d763dac8e25c7877b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45345d4954fe9cd46cbf84ecb0b5fcb38787780248465a4f1a390673fdde4af7def2c6c20fc9c5de0b32f7ad6fd09cea6bf83d8c10836f1160c0112b04d4d3d1
|
7
|
+
data.tar.gz: f9c7cf0b73028c0c7dbec87e0b5e55eab69bb08a9b568e5335d5423785a8bbd5d159d5699be0211ec8f0280dffc93c5f0891e695c5eb7f7a10228446660c9737
|
data/lib/perm/version.rb
CHANGED
@@ -0,0 +1,117 @@
|
|
1
|
+
require "simplecov"
|
2
|
+
require 'coveralls'
|
3
|
+
|
4
|
+
SimpleCov.start
|
5
|
+
SimpleCov.command_name "mt"
|
6
|
+
Coveralls.wear!
|
7
|
+
|
8
|
+
require_relative "../lib/perm"
|
9
|
+
|
10
|
+
module Perm
|
11
|
+
class AuthorizerTest < MicroTest::Test
|
12
|
+
class User
|
13
|
+
include Roleup::HasRoles
|
14
|
+
attr_reader :posts
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@posts = []
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class Post
|
22
|
+
attr_accessor :user, :title, :published
|
23
|
+
end
|
24
|
+
|
25
|
+
class PostAuthorizer < Perm::Authorizer
|
26
|
+
def can_read?(post)
|
27
|
+
return true if user.has_one_role?(:admin, :editor)
|
28
|
+
return true if user == post.user
|
29
|
+
post.published
|
30
|
+
end
|
31
|
+
|
32
|
+
def can_update?(post)
|
33
|
+
return true if user.has_one_role?(:admin, :editor)
|
34
|
+
user == post.user
|
35
|
+
end
|
36
|
+
|
37
|
+
def can_delete?(post)
|
38
|
+
return true if user.has_role?(:admin)
|
39
|
+
user == post.user
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
before do
|
44
|
+
mary = User.new
|
45
|
+
mary.roles = [:admin]
|
46
|
+
@mary = PostAuthorizer.new(mary)
|
47
|
+
|
48
|
+
john = User.new
|
49
|
+
john.roles = [:editor, :writer]
|
50
|
+
@john = PostAuthorizer.new(john)
|
51
|
+
|
52
|
+
beth = User.new
|
53
|
+
beth.roles = [:writer]
|
54
|
+
@beth = PostAuthorizer.new(beth)
|
55
|
+
|
56
|
+
@drew = PostAuthorizer.new(User.new)
|
57
|
+
|
58
|
+
@post = Post.new
|
59
|
+
@post.title = "Authorization made easy"
|
60
|
+
@post.user = beth
|
61
|
+
end
|
62
|
+
|
63
|
+
test "mary can read" do
|
64
|
+
assert @mary.can_read?(@post)
|
65
|
+
end
|
66
|
+
|
67
|
+
test "mary can update" do
|
68
|
+
assert @mary.can_update?(@post)
|
69
|
+
end
|
70
|
+
|
71
|
+
test "mary can delete" do
|
72
|
+
assert @mary.can_delete?(@post)
|
73
|
+
end
|
74
|
+
|
75
|
+
test "john can read" do
|
76
|
+
assert @john.can_read?(@post)
|
77
|
+
end
|
78
|
+
|
79
|
+
test "john can update" do
|
80
|
+
assert @john.can_update?(@post)
|
81
|
+
end
|
82
|
+
|
83
|
+
test "john cannot delete" do
|
84
|
+
assert !@john.can_delete?(@post)
|
85
|
+
end
|
86
|
+
|
87
|
+
test "beth can read" do
|
88
|
+
assert @beth.can_read?(@post)
|
89
|
+
end
|
90
|
+
|
91
|
+
test "beth can update" do
|
92
|
+
assert @beth.can_update?(@post)
|
93
|
+
end
|
94
|
+
|
95
|
+
test "beth can delete" do
|
96
|
+
assert @beth.can_delete?(@post)
|
97
|
+
end
|
98
|
+
|
99
|
+
test "drew cannot read" do
|
100
|
+
assert !@drew.can_read?(@post)
|
101
|
+
end
|
102
|
+
|
103
|
+
test "drew cannot update" do
|
104
|
+
assert !@drew.can_update?(@post)
|
105
|
+
end
|
106
|
+
|
107
|
+
test "drew cannot delete" do
|
108
|
+
assert !@drew.can_delete?(@post)
|
109
|
+
end
|
110
|
+
|
111
|
+
test "drew can read after published" do
|
112
|
+
@post.published = true
|
113
|
+
assert @drew.can_read?(@post)
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Hopkins
|
@@ -90,6 +90,7 @@ files:
|
|
90
90
|
- lib/perm.rb
|
91
91
|
- lib/perm/authorizer.rb
|
92
92
|
- lib/perm/version.rb
|
93
|
+
- test/authorizer_test.rb
|
93
94
|
homepage: https://github.com/hopsoft/perm
|
94
95
|
licenses:
|
95
96
|
- MIT
|
@@ -114,4 +115,5 @@ rubygems_version: 2.2.2
|
|
114
115
|
signing_key:
|
115
116
|
specification_version: 4
|
116
117
|
summary: Simple permission management
|
117
|
-
test_files:
|
118
|
+
test_files:
|
119
|
+
- test/authorizer_test.rb
|