restful_acl 3.0.1 → 3.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.
- data/VERSION +1 -1
- data/lib/restful_acl/url_parser.rb +9 -6
- data/restful_acl.gemspec +5 -3
- data/spec/lib/url_parser.rb +157 -0
- data/spec/spec_helper.rb +4 -0
- metadata +4 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.
|
1
|
+
3.0.2
|
@@ -10,7 +10,7 @@ class UrlParser
|
|
10
10
|
TypesOfURLs = [
|
11
11
|
{:name => "parent_with_specific_child", :controller_bit => 3, :object_id_bit => 4, :regex => /\/(\w+)\/(\d+)[\w-]*\/(\w+)\/(\d+)[\w-]*$/},
|
12
12
|
{:name => "parent_with_edit_child", :controller_bit => 3, :object_id_bit => 4, :regex => /\/(\w+)\/(\d+)[\w-]*\/(\w+)\/(\d+)[\w-]*\/edit$/},
|
13
|
-
{:name => "parent_with_child_index", :controller_bit => 3, :object_id_bit => nil, :regex => /\/(\w+)\/(\d+)
|
13
|
+
{:name => "parent_with_child_index", :controller_bit => 3, :object_id_bit => nil, :regex => /\/(\w+)\/(\d+)\/\b(?!edit\b)(\w+)$/},
|
14
14
|
{:name => "parent_with_new_child", :controller_bit => 3, :object_id_bit => nil, :regex => /\/(\w+)\/(\d+)[\w-]*\/(\w+)\/new$/},
|
15
15
|
{:name => "edit_singleton_child", :controller_bit => 3, :object_id_bit => nil, :regex => /\/(\w+)\/(\d+)[\w-]*\/(\w+)\/edit$/},
|
16
16
|
{:name => "new_singleton_child", :controller_bit => 3, :object_id_bit => nil, :regex => /\/(\w+)\/(\d+)[\w-]*\/(\w+)\/new$/},
|
@@ -92,11 +92,14 @@ class UrlParser
|
|
92
92
|
def requested_action(controller_name)
|
93
93
|
return "destroy" if @text =~ DestroyURL
|
94
94
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
95
|
+
if @url =~ EditURL
|
96
|
+
"edit"
|
97
|
+
elsif @url =~ NewURL
|
98
|
+
"new"
|
99
|
+
elsif @url =~ ObjectURL || controller_name.singular?
|
100
|
+
"show"
|
101
|
+
else
|
102
|
+
"index"
|
100
103
|
end
|
101
104
|
end
|
102
105
|
|
data/restful_acl.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{restful_acl}
|
8
|
-
s.version = "3.0.
|
8
|
+
s.version = "3.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Matt Darby"]
|
12
|
-
s.date = %q{2009-12-
|
12
|
+
s.date = %q{2009-12-08}
|
13
13
|
s.description = %q{A Ruby on Rails plugin that provides fine grained access control to RESTful resources.}
|
14
14
|
s.email = %q{matt@matt-darby.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -32,6 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
"lib/restful_acl/url_parser.rb",
|
33
33
|
"rails/init.rb",
|
34
34
|
"restful_acl.gemspec",
|
35
|
+
"spec/lib/url_parser.rb",
|
35
36
|
"spec/spec_helper.rb",
|
36
37
|
"uninstall.rb"
|
37
38
|
]
|
@@ -41,7 +42,8 @@ Gem::Specification.new do |s|
|
|
41
42
|
s.rubygems_version = %q{1.3.5}
|
42
43
|
s.summary = %q{A Ruby on Rails plugin that provides fine grained access control to RESTful resources.}
|
43
44
|
s.test_files = [
|
44
|
-
"spec/
|
45
|
+
"spec/lib/url_parser.rb",
|
46
|
+
"spec/spec_helper.rb"
|
45
47
|
]
|
46
48
|
|
47
49
|
if s.respond_to? :specification_version then
|
@@ -0,0 +1,157 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe UrlParser do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@user = mock('user')
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "deducing the requested action" do
|
10
|
+
|
11
|
+
describe "parent_widget resources" do
|
12
|
+
|
13
|
+
it "should recognize parent_widget index URLs" do
|
14
|
+
expected = {
|
15
|
+
:controller_name => "parent_widgets",
|
16
|
+
:object_id => nil,
|
17
|
+
:action => "index",
|
18
|
+
:uri => "/parent_widgets",
|
19
|
+
:user => @user
|
20
|
+
}
|
21
|
+
|
22
|
+
UrlParser.new(@user){url("/parent_widgets")}.options_hash.should == expected
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should recognize parent_widget edit URLs" do
|
26
|
+
expected = {
|
27
|
+
:controller_name => "parent_widgets",
|
28
|
+
:object_id => "1",
|
29
|
+
:action => "edit",
|
30
|
+
:uri => "/parent_widgets/1/edit",
|
31
|
+
:user => @user
|
32
|
+
}
|
33
|
+
|
34
|
+
UrlParser.new(@user){url("/parent_widgets/1/edit")}.options_hash.should == expected
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should recognize new parent_widget URLs" do
|
38
|
+
expected = {
|
39
|
+
:controller_name => "parent_widgets",
|
40
|
+
:object_id => nil,
|
41
|
+
:action => "new",
|
42
|
+
:uri => "/parent_widgets/new",
|
43
|
+
:user => @user
|
44
|
+
}
|
45
|
+
|
46
|
+
UrlParser.new(@user){url("/parent_widgets/new")}.options_hash.should == expected
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should recognize show parent_widget URLs" do
|
50
|
+
expected = {
|
51
|
+
:controller_name => "parent_widgets",
|
52
|
+
:object_id => "1",
|
53
|
+
:action => "show",
|
54
|
+
:uri => "/parent_widgets/1",
|
55
|
+
:user => @user
|
56
|
+
}
|
57
|
+
|
58
|
+
UrlParser.new(@user){url("/parent_widgets/1")}.options_hash.should == expected
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "child resources" do
|
64
|
+
|
65
|
+
it "should recognize child index URLs" do
|
66
|
+
expected = {
|
67
|
+
:controller_name => "child_widgets",
|
68
|
+
:object_id => nil,
|
69
|
+
:action => "index",
|
70
|
+
:uri => "/parent_widgets/1/child_widgets",
|
71
|
+
:user => @user
|
72
|
+
}
|
73
|
+
|
74
|
+
UrlParser.new(@user){url("/parent_widgets/1/child_widgets")}.options_hash.should == expected
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should recognize child edit URLs" do
|
78
|
+
expected = {
|
79
|
+
:controller_name => "child_widgets",
|
80
|
+
:object_id => "1",
|
81
|
+
:action => "edit",
|
82
|
+
:uri => "/parent_widgets/1/child_widgets/1/edit",
|
83
|
+
:user => @user
|
84
|
+
}
|
85
|
+
|
86
|
+
UrlParser.new(@user){url("/parent_widgets/1/child_widgets/1/edit")}.options_hash.should == expected
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should recognize new child URLs" do
|
90
|
+
expected = {
|
91
|
+
:controller_name => "child_widgets",
|
92
|
+
:object_id => nil,
|
93
|
+
:action => "new",
|
94
|
+
:uri => "/parent_widgets/1/child_widgets/new",
|
95
|
+
:user => @user
|
96
|
+
}
|
97
|
+
|
98
|
+
UrlParser.new(@user){url("/parent_widgets/1/child_widgets/new")}.options_hash.should == expected
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should recognize show child URLs" do
|
102
|
+
expected = {
|
103
|
+
:controller_name => "child_widgets",
|
104
|
+
:object_id => "1",
|
105
|
+
:action => "show",
|
106
|
+
:uri => "/parent_widgets/1/child_widgets/1",
|
107
|
+
:user => @user
|
108
|
+
}
|
109
|
+
|
110
|
+
UrlParser.new(@user){url("/parent_widgets/1/child_widgets/1")}.options_hash.should == expected
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
describe "singleton resources" do
|
116
|
+
|
117
|
+
it "should recognize singleton_widget edit URLs" do
|
118
|
+
expected = {
|
119
|
+
:controller_name => "singleton_widget",
|
120
|
+
:object_id => nil,
|
121
|
+
:action => "edit",
|
122
|
+
:uri => "/parent_widgets/1/singleton_widget/edit",
|
123
|
+
:user => @user
|
124
|
+
}
|
125
|
+
|
126
|
+
UrlParser.new(@user){url("/parent_widgets/1/singleton_widget/edit")}.options_hash.should == expected
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should recognize new singleton_widget URLs" do
|
130
|
+
expected = {
|
131
|
+
:controller_name => "singleton_widget",
|
132
|
+
:object_id => nil,
|
133
|
+
:action => "new",
|
134
|
+
:uri => "/parent_widgets/1/singleton_widget/new",
|
135
|
+
:user => @user
|
136
|
+
}
|
137
|
+
|
138
|
+
UrlParser.new(@user){url("/parent_widgets/1/singleton_widget/new")}.options_hash.should == expected
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should recognize show singleton_widget URLs" do
|
142
|
+
expected = {
|
143
|
+
:controller_name => "singleton_widget",
|
144
|
+
:object_id => nil,
|
145
|
+
:action => "show",
|
146
|
+
:uri => "/parent_widgets/1/singleton_widget",
|
147
|
+
:user => @user
|
148
|
+
}
|
149
|
+
|
150
|
+
UrlParser.new(@user){url("/parent_widgets/1/singleton_widget")}.options_hash.should == expected
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restful_acl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Darby
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-08 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -47,6 +47,7 @@ files:
|
|
47
47
|
- lib/restful_acl/url_parser.rb
|
48
48
|
- rails/init.rb
|
49
49
|
- restful_acl.gemspec
|
50
|
+
- spec/lib/url_parser.rb
|
50
51
|
- spec/spec_helper.rb
|
51
52
|
- uninstall.rb
|
52
53
|
has_rdoc: true
|
@@ -78,4 +79,5 @@ signing_key:
|
|
78
79
|
specification_version: 3
|
79
80
|
summary: A Ruby on Rails plugin that provides fine grained access control to RESTful resources.
|
80
81
|
test_files:
|
82
|
+
- spec/lib/url_parser.rb
|
81
83
|
- spec/spec_helper.rb
|