privileged 0.1.0 → 0.1.1
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.
- data/Gemfile +3 -8
- data/Gemfile.lock +12 -4
- data/Rakefile +16 -18
- data/lib/privileged/version.rb +3 -0
- data/privileged.gemspec +12 -16
- data/spec/actor_spec.rb +118 -0
- data/spec/spec_helper.rb +12 -0
- metadata +19 -18
- data/VERSION +0 -1
- data/test/helper.rb +0 -18
- data/test/test_privileged.rb +0 -7
data/Gemfile
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
2
|
|
6
|
-
# Add dependencies to develop your gem here.
|
7
|
-
# Include everything needed to run rake, tests, features, etc.
|
8
3
|
group :development do
|
9
|
-
gem "
|
4
|
+
gem "rspec", "~> 2.3.0"
|
10
5
|
gem "bundler", "~> 1.0.0"
|
11
|
-
gem "jeweler", "~> 1.
|
6
|
+
gem "jeweler", "~> 1.6.0"
|
12
7
|
gem "rcov", ">= 0"
|
13
|
-
end
|
8
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -1,20 +1,28 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
+
diff-lcs (1.1.2)
|
4
5
|
git (1.2.5)
|
5
|
-
jeweler (1.
|
6
|
+
jeweler (1.6.0)
|
6
7
|
bundler (~> 1.0.0)
|
7
8
|
git (>= 1.2.5)
|
8
9
|
rake
|
9
10
|
rake (0.8.7)
|
10
11
|
rcov (0.9.9)
|
11
|
-
|
12
|
+
rspec (2.3.0)
|
13
|
+
rspec-core (~> 2.3.0)
|
14
|
+
rspec-expectations (~> 2.3.0)
|
15
|
+
rspec-mocks (~> 2.3.0)
|
16
|
+
rspec-core (2.3.1)
|
17
|
+
rspec-expectations (2.3.0)
|
18
|
+
diff-lcs (~> 1.1.2)
|
19
|
+
rspec-mocks (2.3.0)
|
12
20
|
|
13
21
|
PLATFORMS
|
14
22
|
ruby
|
15
23
|
|
16
24
|
DEPENDENCIES
|
17
25
|
bundler (~> 1.0.0)
|
18
|
-
jeweler (~> 1.
|
26
|
+
jeweler (~> 1.6.0)
|
19
27
|
rcov
|
20
|
-
|
28
|
+
rspec (~> 2.3.0)
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
4
|
require 'bundler'
|
3
5
|
begin
|
@@ -10,37 +12,33 @@ end
|
|
10
12
|
require 'rake'
|
11
13
|
|
12
14
|
require 'jeweler'
|
15
|
+
require './lib/privileged/version.rb'
|
13
16
|
Jeweler::Tasks.new do |gem|
|
14
17
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
15
18
|
gem.name = "privileged"
|
19
|
+
gem.version = Privileged::VERSION
|
16
20
|
gem.homepage = "http://github.com/baldwindavid/privileged"
|
17
21
|
gem.license = "MIT"
|
18
|
-
gem.summary = %Q{
|
19
|
-
gem.description = %Q{
|
22
|
+
gem.summary = %Q{Simple, explicit permissions/authorization - supports Devise multiple role structure}
|
23
|
+
gem.description = %Q{Simple, explicit permissions/authorization}
|
20
24
|
gem.email = "baldwindavid@gmail.com"
|
21
25
|
gem.authors = ["David Baldwin"]
|
22
|
-
#
|
23
|
-
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
24
|
-
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
25
|
-
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
26
|
+
# dependencies defined in Gemfile
|
26
27
|
end
|
27
28
|
Jeweler::RubygemsDotOrgTasks.new
|
28
29
|
|
29
|
-
require '
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
test.verbose = true
|
30
|
+
require 'rspec/core'
|
31
|
+
require 'rspec/core/rake_task'
|
32
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
33
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
34
34
|
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
test.pattern = 'test/**/test_*.rb'
|
40
|
-
test.verbose = true
|
36
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
37
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
38
|
+
spec.rcov = true
|
41
39
|
end
|
42
40
|
|
43
|
-
task :default => :
|
41
|
+
task :default => :spec
|
44
42
|
|
45
43
|
require 'rake/rdoctask'
|
46
44
|
Rake::RDocTask.new do |rdoc|
|
@@ -50,4 +48,4 @@ Rake::RDocTask.new do |rdoc|
|
|
50
48
|
rdoc.title = "privileged #{version}"
|
51
49
|
rdoc.rdoc_files.include('README*')
|
52
50
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
|
-
end
|
51
|
+
end
|
data/privileged.gemspec
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{privileged}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["David Baldwin"]
|
12
|
-
s.date = %q{
|
13
|
-
s.description = %q{
|
12
|
+
s.date = %q{2011-05-16}
|
13
|
+
s.description = %q{Simple, explicit permissions/authorization}
|
14
14
|
s.email = %q{baldwindavid@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
@@ -23,41 +23,37 @@ Gem::Specification.new do |s|
|
|
23
23
|
"LICENSE.txt",
|
24
24
|
"README.rdoc",
|
25
25
|
"Rakefile",
|
26
|
-
"VERSION",
|
27
26
|
"lib/privileged.rb",
|
27
|
+
"lib/privileged/version.rb",
|
28
28
|
"privileged.gemspec",
|
29
|
-
"
|
30
|
-
"
|
29
|
+
"spec/actor_spec.rb",
|
30
|
+
"spec/spec_helper.rb"
|
31
31
|
]
|
32
32
|
s.homepage = %q{http://github.com/baldwindavid/privileged}
|
33
33
|
s.licenses = ["MIT"]
|
34
34
|
s.require_paths = ["lib"]
|
35
35
|
s.rubygems_version = %q{1.3.7}
|
36
36
|
s.summary = %q{Simple, explicit permissions/authorization - supports Devise multiple role structure}
|
37
|
-
s.test_files = [
|
38
|
-
"test/helper.rb",
|
39
|
-
"test/test_privileged.rb"
|
40
|
-
]
|
41
37
|
|
42
38
|
if s.respond_to? :specification_version then
|
43
39
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
44
40
|
s.specification_version = 3
|
45
41
|
|
46
42
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
47
|
-
s.add_development_dependency(%q<
|
43
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
48
44
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
49
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.
|
45
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.0"])
|
50
46
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
51
47
|
else
|
52
|
-
s.add_dependency(%q<
|
48
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
53
49
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
54
|
-
s.add_dependency(%q<jeweler>, ["~> 1.
|
50
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
|
55
51
|
s.add_dependency(%q<rcov>, [">= 0"])
|
56
52
|
end
|
57
53
|
else
|
58
|
-
s.add_dependency(%q<
|
54
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
59
55
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
60
|
-
s.add_dependency(%q<jeweler>, ["~> 1.
|
56
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
|
61
57
|
s.add_dependency(%q<rcov>, [">= 0"])
|
62
58
|
end
|
63
59
|
end
|
data/spec/actor_spec.rb
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "User" do
|
4
|
+
|
5
|
+
context "with the default privilege (false)" do
|
6
|
+
|
7
|
+
before :each do
|
8
|
+
|
9
|
+
class User
|
10
|
+
extend Privileged::Actor
|
11
|
+
privilege :can_view?, :viewable_by?
|
12
|
+
end
|
13
|
+
|
14
|
+
class Page
|
15
|
+
end
|
16
|
+
|
17
|
+
@user = User.new
|
18
|
+
@page = Page.new
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should not be able to view the page object" do
|
23
|
+
@user.can_view?(@page).should be_false
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should respond to the can_view? method" do
|
27
|
+
@user.respond_to?("can_view?").should be_true
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
context "with a default privilege manually set to true" do
|
34
|
+
|
35
|
+
before :each do
|
36
|
+
|
37
|
+
class User
|
38
|
+
extend Privileged::Actor
|
39
|
+
privilege :can_view?, :viewable_by?, :default => true
|
40
|
+
end
|
41
|
+
|
42
|
+
class Page
|
43
|
+
end
|
44
|
+
|
45
|
+
@user = User.new
|
46
|
+
@page = Page.new
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should be able to view the page object" do
|
51
|
+
@user.can_view?(@page).should be_true
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
context "with a default privilege manually set to true, but overriden to false on the Page class" do
|
58
|
+
|
59
|
+
before :each do
|
60
|
+
|
61
|
+
class User
|
62
|
+
extend Privileged::Actor
|
63
|
+
privilege :can_view?, :viewable_by?, :default => true
|
64
|
+
end
|
65
|
+
|
66
|
+
class Page
|
67
|
+
def viewable_by?(user)
|
68
|
+
false
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
@user = User.new
|
73
|
+
@page = Page.new
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should not be able to view the page object" do
|
78
|
+
@user.can_view?(@page).should be_false
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
context "with the default privilege overriden by a method on the Page class" do
|
85
|
+
|
86
|
+
before :each do
|
87
|
+
|
88
|
+
class User
|
89
|
+
extend Privileged::Actor
|
90
|
+
privilege :can_view?, :viewable_by?
|
91
|
+
attr_accessor :admin
|
92
|
+
end
|
93
|
+
|
94
|
+
class Page
|
95
|
+
def viewable_by?(user)
|
96
|
+
user.admin
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
@admin = User.new
|
101
|
+
@admin.admin = true
|
102
|
+
@non_admin = User.new
|
103
|
+
@non_admin.admin = false
|
104
|
+
@page = Page.new
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should not be able to view the page if not an admin" do
|
109
|
+
@non_admin.can_view?(@page).should be_false
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should be able to view the page if an admin" do
|
113
|
+
@admin.can_view?(@page).should be_true
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
require 'rspec'
|
4
|
+
require 'privileged'
|
5
|
+
|
6
|
+
# Requires supporting files with custom matchers and macros, etc,
|
7
|
+
# in ./support/ and its subdirectories.
|
8
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
|
12
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: privileged
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Baldwin
|
@@ -15,21 +15,23 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-05-16 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
23
|
none: false
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
hash: 3
|
28
28
|
segments:
|
29
|
+
- 2
|
30
|
+
- 3
|
29
31
|
- 0
|
30
|
-
version:
|
32
|
+
version: 2.3.0
|
31
33
|
type: :development
|
32
|
-
name:
|
34
|
+
name: rspec
|
33
35
|
prerelease: false
|
34
36
|
version_requirements: *id001
|
35
37
|
- !ruby/object:Gem::Dependency
|
@@ -54,12 +56,12 @@ dependencies:
|
|
54
56
|
requirements:
|
55
57
|
- - ~>
|
56
58
|
- !ruby/object:Gem::Version
|
57
|
-
hash:
|
59
|
+
hash: 15
|
58
60
|
segments:
|
59
61
|
- 1
|
60
|
-
-
|
61
|
-
-
|
62
|
-
version: 1.
|
62
|
+
- 6
|
63
|
+
- 0
|
64
|
+
version: 1.6.0
|
63
65
|
type: :development
|
64
66
|
name: jeweler
|
65
67
|
prerelease: false
|
@@ -78,7 +80,7 @@ dependencies:
|
|
78
80
|
name: rcov
|
79
81
|
prerelease: false
|
80
82
|
version_requirements: *id004
|
81
|
-
description:
|
83
|
+
description: Simple, explicit permissions/authorization
|
82
84
|
email: baldwindavid@gmail.com
|
83
85
|
executables: []
|
84
86
|
|
@@ -94,11 +96,11 @@ files:
|
|
94
96
|
- LICENSE.txt
|
95
97
|
- README.rdoc
|
96
98
|
- Rakefile
|
97
|
-
- VERSION
|
98
99
|
- lib/privileged.rb
|
100
|
+
- lib/privileged/version.rb
|
99
101
|
- privileged.gemspec
|
100
|
-
-
|
101
|
-
-
|
102
|
+
- spec/actor_spec.rb
|
103
|
+
- spec/spec_helper.rb
|
102
104
|
has_rdoc: true
|
103
105
|
homepage: http://github.com/baldwindavid/privileged
|
104
106
|
licenses:
|
@@ -133,6 +135,5 @@ rubygems_version: 1.3.7
|
|
133
135
|
signing_key:
|
134
136
|
specification_version: 3
|
135
137
|
summary: Simple, explicit permissions/authorization - supports Devise multiple role structure
|
136
|
-
test_files:
|
137
|
-
|
138
|
-
- test/test_privileged.rb
|
138
|
+
test_files: []
|
139
|
+
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.1.0
|
data/test/helper.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'test/unit'
|
11
|
-
require 'shoulda'
|
12
|
-
|
13
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
-
require 'privileged'
|
16
|
-
|
17
|
-
class Test::Unit::TestCase
|
18
|
-
end
|