cantango-permits 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/Gemfile +39 -0
- data/Gemfile.lock +155 -0
- data/MIT-LICENSE +20 -0
- data/README.mdown +362 -0
- data/Rakefile +45 -0
- data/VERSION +1 -0
- data/lib/cantango/executor.rb +5 -0
- data/lib/cantango/executor/base.rb +9 -0
- data/lib/cantango/executor/permit.rb +7 -0
- data/lib/cantango/executor/permit/abstract.rb +27 -0
- data/lib/cantango/executor/permit/base.rb +19 -0
- data/lib/cantango/executor/permit/special.rb +9 -0
- data/lib/cantango/executor/permit_type.rb +50 -0
- data/lib/cantango/license.rb +19 -0
- data/lib/cantango/license/rules.rb +17 -0
- data/lib/cantango/permit.mdown +4 -0
- data/lib/cantango/permit.rb +5 -0
- data/lib/cantango/permit/account_type.rb +44 -0
- data/lib/cantango/permit/attribute.rb +71 -0
- data/lib/cantango/permit/base.rb +94 -0
- data/lib/cantango/permit/class_methods.rb +49 -0
- data/lib/cantango/permit/helper.rb +11 -0
- data/lib/cantango/permit/helper/execution.rb +38 -0
- data/lib/cantango/permit/helper/host.rb +13 -0
- data/lib/cantango/permit/helper/license.rb +34 -0
- data/lib/cantango/permit/helper/naming.rb +38 -0
- data/lib/cantango/permit/helper/state.rb +21 -0
- data/lib/cantango/permit/special.rb +17 -0
- data/lib/cantango/permit/user.rb +36 -0
- data/lib/cantango/permit/user_type.rb +34 -0
- data/lib/cantango/permits.rb +20 -0
- data/lib/cantango/permits_ext.rb +7 -0
- data/lib/cantango/permits_ext/ability.rb +7 -0
- data/lib/cantango/permits_ext/ability/helper.rb +9 -0
- data/lib/cantango/permits_ext/ability/helper/permits.rb +8 -0
- data/lib/cantango/permits_ext/builder.rb +7 -0
- data/lib/cantango/permits_ext/builder/permit.rb +9 -0
- data/lib/cantango/permits_ext/builder/permit/account_type.rb +13 -0
- data/lib/cantango/permits_ext/builder/permit/base.rb +94 -0
- data/lib/cantango/permits_ext/builder/permit/special.rb +13 -0
- data/lib/cantango/permits_ext/builder/permit/user_type.rb +7 -0
- data/lib/cantango/permits_ext/class_methods.rb +28 -0
- data/lib/cantango/permits_ext/config.rb +11 -0
- data/lib/cantango/permits_ext/config/engines.rb +9 -0
- data/lib/cantango/permits_ext/config/engines/permit.rb +20 -0
- data/lib/cantango/permits_ext/config/permits.rb +43 -0
- data/lib/cantango/permits_ext/config/permits/accounts.rb +15 -0
- data/lib/cantango/permits_ext/config/permits/disabling.rb +22 -0
- data/lib/cantango/permits_ext/config/permits/enabling.rb +14 -0
- data/lib/cantango/permits_ext/config/permits/execution.rb +21 -0
- data/lib/cantango/permits_ext/config/permits/key.rb +19 -0
- data/lib/cantango/permits_ext/config/permits/registration.rb +33 -0
- data/lib/cantango/permits_ext/config/permits/tracking.rb +19 -0
- data/lib/cantango/permits_ext/config/permits/types.rb +25 -0
- data/lib/cantango/permits_ext/engine.rb +7 -0
- data/lib/cantango/permits_ext/engine/permits.rb +75 -0
- data/lib/cantango/permits_ext/factory.rb +7 -0
- data/lib/cantango/permits_ext/factory/permits.rb +40 -0
- data/lib/cantango/permits_ext/finder.rb +7 -0
- data/lib/cantango/permits_ext/finder/base.rb +35 -0
- data/lib/cantango/permits_ext/finder/permit.rb +7 -0
- data/lib/cantango/permits_ext/finder/permit/account.rb +47 -0
- data/lib/cantango/permits_ext/finder/permit/base.rb +53 -0
- data/lib/cantango/permits_ext/loader.rb +7 -0
- data/lib/cantango/permits_ext/loader/categories.rb +50 -0
- data/lib/cantango/permits_ext/loader/license.rb +19 -0
- data/lib/cantango/permits_ext/macros.rb +7 -0
- data/lib/cantango/permits_ext/macros/permit.rb +32 -0
- data/lib/cantango/permits_ext/parser.rb +7 -0
- data/lib/cantango/permits_ext/parser/categories.rb +15 -0
- data/lib/cantango/permits_ext/registry.rb +7 -0
- data/lib/cantango/permits_ext/registry/permit.rb +45 -0
- data/lib/generators/cantango/account_permit/account_permit_generator.rb +37 -0
- data/lib/generators/cantango/account_permit/templates/account_permit.erb +23 -0
- data/lib/generators/cantango/base.rb +71 -0
- data/lib/generators/cantango/basic.rb +41 -0
- data/lib/generators/cantango/license/license_generator.rb +29 -0
- data/lib/generators/cantango/license/templates/license.erb +10 -0
- data/lib/generators/cantango/license_base.rb +15 -0
- data/lib/generators/cantango/licenses/licenses_generator.rb +26 -0
- data/lib/generators/cantango/permit_generator.rb +58 -0
- data/lib/generators/cantango/role_permit/role_permit_generator.rb +39 -0
- data/lib/generators/cantango/role_permit/templates/account_permit.erb +4 -0
- data/lib/generators/cantango/role_permit/templates/role_group_permit.erb +24 -0
- data/lib/generators/cantango/role_permit/templates/role_permit.erb +23 -0
- data/lib/generators/cantango/role_permits/role_permits_generator.rb +45 -0
- data/lib/generators/cantango/user_permit/templates/account_permit.erb +5 -0
- data/lib/generators/cantango/user_permit/templates/user_permit.erb +23 -0
- data/lib/generators/cantango/user_permit/user_permit_generator.rb +36 -0
- data/lib/tasks/permits_tasks.rake +4 -0
- data/spec/cantango/ability/helper/permits_spec.rb +14 -0
- data/spec/cantango/builder/permit/account_type_spec.rb +25 -0
- data/spec/cantango/builder/permit/base_spec.rb +30 -0
- data/spec/cantango/builder/permit/special_spec.rb +25 -0
- data/spec/cantango/builder/permit/user_type_spec.rb +27 -0
- data/spec/cantango/config/engines/permit_spec.rb +14 -0
- data/spec/cantango/config/engines_spec.rb +142 -0
- data/spec/cantango/config/permit_registry_ex.rb +9 -0
- data/spec/cantango/config/permit_registry_spec.rb +8 -0
- data/spec/cantango/config/permits/accounts_spec.rb +23 -0
- data/spec/cantango/config/permits/disabling_spec.rb +38 -0
- data/spec/cantango/config/permits/enabling_spec.rb +19 -0
- data/spec/cantango/config/permits/execution_spec.rb +27 -0
- data/spec/cantango/config/permits/registration_spec.rb +15 -0
- data/spec/cantango/config/permits/tracking_spec.rb +19 -0
- data/spec/cantango/config/permits/types_spec.rb +27 -0
- data/spec/cantango/config/permits_spec.rb +76 -0
- data/spec/cantango/engine/permit_cached_spec.rb +52 -0
- data/spec/cantango/engine/permit_spec.rb +58 -0
- data/spec/cantango/engine/permit_static_dynamic_spec.rb +65 -0
- data/spec/cantango/executor/custom_permit_spec.rb +65 -0
- data/spec/cantango/executor/more_permit_spec.rb +45 -0
- data/spec/cantango/executor/permit_base_spec.rb +46 -0
- data/spec/cantango/executor/permit_spec.rb +53 -0
- data/spec/cantango/executor/special_permit_spec.rb +36 -0
- data/spec/cantango/factory/permits_spec.rb +70 -0
- data/spec/cantango/finder/account_permit_spec.rb +30 -0
- data/spec/cantango/finder/permit_spec.rb +23 -0
- data/spec/cantango/license/save_license_spec.rb +24 -0
- data/spec/cantango/license_spec.rb +0 -0
- data/spec/cantango/loader/categories_spec.rb +47 -0
- data/spec/cantango/loader/license_spec.rb +7 -0
- data/spec/cantango/macros/permit_spec.rb +38 -0
- data/spec/cantango/parser/categories_spec.rb +19 -0
- data/spec/cantango/permit/account_type_spec.rb +34 -0
- data/spec/cantango/permit/attribute_permit_spec.rb +65 -0
- data/spec/cantango/permit/base_spec.rb +106 -0
- data/spec/cantango/permit/class_methods_spec.rb +34 -0
- data/spec/cantango/permit/helper/execution_spec.rb +54 -0
- data/spec/cantango/permit/helper/host_spec.rb +29 -0
- data/spec/cantango/permit/helper/license_spec.rb +37 -0
- data/spec/cantango/permit/helper/naming_spec.rb +56 -0
- data/spec/cantango/permit/helper/state_spec.rb +24 -0
- data/spec/cantango/permit/special_default_spec.rb +2 -0
- data/spec/cantango/permit/special_first_spec.rb +2 -0
- data/spec/cantango/permit/user_type_spec.rb +78 -0
- data/spec/cantango/registry/permit_spec.rb +67 -0
- data/spec/fixtures/config/cantango_permissions.yml +49 -0
- data/spec/fixtures/config/categories.yml +6 -0
- data/spec/fixtures/config/evaluator_fixtures.yml +18 -0
- data/spec/fixtures/config/licenses.yml +4 -0
- data/spec/fixtures/config/permissions.yml +60 -0
- data/spec/fixtures/config/role_group.yml +4 -0
- data/spec/fixtures/config/roles.yml +4 -0
- data/spec/fixtures/config/test_permissions.yml +55 -0
- data/spec/fixtures/config/user_permissions.yml +8 -0
- data/spec/fixtures/models.rb +15 -0
- data/spec/fixtures/models/admin.rb +2 -0
- data/spec/fixtures/models/admin_account.rb +22 -0
- data/spec/fixtures/models/items.rb +11 -0
- data/spec/fixtures/models/permission.rb +12 -0
- data/spec/fixtures/models/simple_roles.rb +49 -0
- data/spec/fixtures/models/user.rb +52 -0
- data/spec/fixtures/models/user_account.rb +21 -0
- data/spec/fixtures/tango_fixtures.rb +29 -0
- data/spec/generators/cantango/account_role_permit_generator_spec.rb +35 -0
- data/spec/generators/cantango/account_role_permits_generator_spec.rb +59 -0
- data/spec/generators/cantango/license_generator_spec.rb +33 -0
- data/spec/generators/cantango/licenses_generator_spec.rb +58 -0
- data/spec/generators/cantango/role_permit_generator_spec.rb +35 -0
- data/spec/generators/cantango/role_permits_generator_spec.rb +58 -0
- data/spec/helpers/current_user_accounts.rb +20 -0
- data/spec/helpers/current_users.rb +10 -0
- data/spec/spec_helper.rb +24 -0
- metadata +325 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
---
|
2
|
+
roles:
|
3
|
+
admin:
|
4
|
+
can:
|
5
|
+
manage:
|
6
|
+
- all
|
7
|
+
user:
|
8
|
+
can:
|
9
|
+
read:
|
10
|
+
- ^articles
|
11
|
+
- Post
|
12
|
+
write:
|
13
|
+
- Comment
|
14
|
+
cannot:
|
15
|
+
write:
|
16
|
+
- Article
|
17
|
+
role_groups:
|
18
|
+
bloggers:
|
19
|
+
can:
|
20
|
+
read:
|
21
|
+
- Article
|
22
|
+
- Comment
|
23
|
+
cannot:
|
24
|
+
write:
|
25
|
+
- Article
|
26
|
+
- Post
|
27
|
+
editors:
|
28
|
+
can:
|
29
|
+
read:
|
30
|
+
- Article
|
31
|
+
- Comment
|
32
|
+
cannot:
|
33
|
+
write:
|
34
|
+
- Article
|
35
|
+
- Post
|
36
|
+
licenses:
|
37
|
+
editors:
|
38
|
+
can:
|
39
|
+
manage:
|
40
|
+
- all
|
41
|
+
users:
|
42
|
+
kris@gmail.com:
|
43
|
+
can:
|
44
|
+
read:
|
45
|
+
- Article
|
46
|
+
user_types:
|
47
|
+
admin:
|
48
|
+
can:
|
49
|
+
manage:
|
50
|
+
- all
|
51
|
+
account_types:
|
52
|
+
editor:
|
53
|
+
can:
|
54
|
+
manage:
|
55
|
+
- all
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class AdminAccount
|
2
|
+
attr_accessor :user, :roles, :role_groups
|
3
|
+
|
4
|
+
def initialize user, options = {}
|
5
|
+
@user = user
|
6
|
+
@roles = options[:roles]
|
7
|
+
@role_groups = options[:role_groups]
|
8
|
+
end
|
9
|
+
|
10
|
+
def has_role? name
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
def roles_list
|
15
|
+
roles
|
16
|
+
end
|
17
|
+
|
18
|
+
def role_groups_list
|
19
|
+
role_groups
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module SimpleRoles
|
2
|
+
def self.included(base)
|
3
|
+
base.send :include, InstanceMethods
|
4
|
+
base.extend ClassMethods
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def is_role_in_group?(role, group)
|
9
|
+
raise "No group #{group} defined in User model" if !role_groups.has_key?(group)
|
10
|
+
role_groups[group].include?(role)
|
11
|
+
end
|
12
|
+
|
13
|
+
def role_groups
|
14
|
+
{:bloggers => [:editor]}
|
15
|
+
end
|
16
|
+
|
17
|
+
def roles
|
18
|
+
[:guest, :user, :admin, :editor]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module InstanceMethods
|
23
|
+
|
24
|
+
attr_accessor :role_groups_list
|
25
|
+
|
26
|
+
def has_role? role
|
27
|
+
roles_list.include? role
|
28
|
+
end
|
29
|
+
|
30
|
+
def has_any_role? roles
|
31
|
+
roles.include?(role.to_sym)
|
32
|
+
end
|
33
|
+
|
34
|
+
def roles_list
|
35
|
+
role.to_s.scan(/\w+/).map{|r| r.to_sym}
|
36
|
+
end
|
37
|
+
|
38
|
+
def is_in_group? group
|
39
|
+
role_groups_list.include? group
|
40
|
+
end
|
41
|
+
alias_method :in_role_group?, :is_in_group?
|
42
|
+
|
43
|
+
def role_groups_list
|
44
|
+
return role_groups.scan(/\w+/).map(&:to_sym) if respond_to?(:role_groups) && !role_groups.nil?
|
45
|
+
@role_groups_list || [] #[:bloggers]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'fixtures/models/simple_roles'
|
2
|
+
|
3
|
+
class User
|
4
|
+
attr_accessor :name, :account, :email, :roles, :role_groups
|
5
|
+
|
6
|
+
# tango_user # see macros
|
7
|
+
|
8
|
+
include ::SimpleRoles
|
9
|
+
|
10
|
+
def initialize name, email = nil, options = {}
|
11
|
+
@name = name
|
12
|
+
@email = email
|
13
|
+
set_option_vars options
|
14
|
+
end
|
15
|
+
|
16
|
+
def set_option_vars options = {}
|
17
|
+
options.each_pair do |name, value|
|
18
|
+
var = :"@#{name}"
|
19
|
+
self.instance_variable_set(var, value)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def email
|
24
|
+
@email ||= 'default@gmail.com'
|
25
|
+
end
|
26
|
+
|
27
|
+
def role
|
28
|
+
@role || ''
|
29
|
+
end
|
30
|
+
|
31
|
+
# This hash should be recalculated anytime the permissions collection changes
|
32
|
+
#
|
33
|
+
|
34
|
+
# after_update :recalculate_permissions_hash
|
35
|
+
|
36
|
+
def permissions_hash
|
37
|
+
@permissions_hash = permissions.hash
|
38
|
+
end
|
39
|
+
|
40
|
+
def permissions
|
41
|
+
@permissions ||= []
|
42
|
+
end
|
43
|
+
|
44
|
+
# allows implementation specific to ORM, fx using #all on some datastores such as Mongoid etc.
|
45
|
+
alias_method :all_permissions, :permissions
|
46
|
+
|
47
|
+
protected
|
48
|
+
|
49
|
+
def recalculate_permissions_hash
|
50
|
+
@permissions_hash = nil if self.permissions_changed?
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class UserAccount
|
2
|
+
attr_accessor :user, :roles, :role_groups
|
3
|
+
|
4
|
+
def initialize user, options = {}
|
5
|
+
@user = user
|
6
|
+
@roles = options[:roles]
|
7
|
+
@role_groups = options[:role_groups]
|
8
|
+
end
|
9
|
+
|
10
|
+
def has_role? name
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
def roles_list
|
15
|
+
roles
|
16
|
+
end
|
17
|
+
|
18
|
+
def role_groups_list
|
19
|
+
role_groups
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CanTangoFixtures
|
2
|
+
def tango_permissions
|
3
|
+
{"roles"=>{
|
4
|
+
"admin"=>{
|
5
|
+
"can"=>{
|
6
|
+
"manage"=>["all"]
|
7
|
+
}},
|
8
|
+
"user"=>{
|
9
|
+
"can"=>{
|
10
|
+
"read"=>["^articles", "Post"],
|
11
|
+
"write"=>["Comment"]
|
12
|
+
},
|
13
|
+
"cannot"=>{
|
14
|
+
"write"=>["Post"],
|
15
|
+
"write"=>["Article"]
|
16
|
+
}
|
17
|
+
}
|
18
|
+
},
|
19
|
+
"role_groups"=>{"bloggers"=>{"can"=>{"read"=>["Article", "Comment"]},
|
20
|
+
"cannot"=>{"write"=>["Article", "Post"]}},
|
21
|
+
"editors"=>{"can"=>{"read"=>["Article", "Comment"]},
|
22
|
+
"cannot"=>{"write"=>["Article", "Post"]}}},
|
23
|
+
"licenses"=>{"editors"=>{"can"=>{"manage"=>["all"]}}},
|
24
|
+
"users" => {"kris@gmail.com" => {"can" => {"read" =>["Article"] }}}
|
25
|
+
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'generator-spec'
|
3
|
+
|
4
|
+
require_generator :cantango => :role_permit
|
5
|
+
|
6
|
+
RSpec::Generator.configure do |config|
|
7
|
+
config.debug = true
|
8
|
+
config.remove_temp_dir = true #false
|
9
|
+
config.default_rails_root(__FILE__)
|
10
|
+
config.lib = File.dirname(__FILE__) + '/../lib'
|
11
|
+
config.logger = :stdout # :file
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
describe Cantango::Generators::RolePermitGenerator do
|
16
|
+
use_helpers :special, :file
|
17
|
+
|
18
|
+
setup_generator :permit do
|
19
|
+
tests Cantango::Generators::RolePermitGenerator
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'Run Permit generator' do
|
23
|
+
before :each do
|
24
|
+
@generator = with_generator do |g|
|
25
|
+
g.run_generator "admin --account admin --reads all --licenses blogging user_admin".args
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'result of running Permit generator' do
|
30
|
+
it "should create Admin permit" do
|
31
|
+
@generator.should generate_permit :admin
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'generator-spec'
|
3
|
+
|
4
|
+
require_generator :cantango => :role_permits
|
5
|
+
|
6
|
+
RSpec::Generator.configure do |config|
|
7
|
+
config.debug = true
|
8
|
+
config.remove_temp_dir = true #false
|
9
|
+
config.default_rails_root(__FILE__)
|
10
|
+
config.lib = File.dirname(__FILE__) + '/../lib'
|
11
|
+
config.logger = :stdout # :file
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
describe Cantango::Generators::RolePermitsGenerator do
|
16
|
+
use_helpers :controller, :special, :file
|
17
|
+
|
18
|
+
setup_generator :permits do
|
19
|
+
tests Cantango::Generators::RolePermitsGenerator
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'result of running generator with default profile' do
|
23
|
+
before :each do
|
24
|
+
@generator = with_generator do |g|
|
25
|
+
g.run_generator "--orm mongoid --account editor".args
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'result of running Permits generator' do
|
30
|
+
it "should create Admin permit" do
|
31
|
+
@generator.should generate_permit :admin
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should generate a permits initializer file with orm set to mongoid" do
|
35
|
+
File.read(initializer_file(:cantango)).should match /config.orm = :mongoid/
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'result of running generator with option to create permit for each registered role' do
|
41
|
+
context "Registered roles :editor, :admin" do
|
42
|
+
before :each do
|
43
|
+
@generator = with_generator do |g|
|
44
|
+
g.run_generator "admin editor".args
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should have created Guest and Admin permits" do
|
49
|
+
@generator.should have_permit_files :guest, :admin
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should have created the Editor permit for the :editor role and the permit should not use licenses" do
|
53
|
+
@generator.should have_permit_file :editor do |editor_permit|
|
54
|
+
editor_permit.should_not have_licenses :user_admin, :blogging
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end #ctx
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'generator-spec'
|
3
|
+
|
4
|
+
require_generator :cantango => :license
|
5
|
+
|
6
|
+
RSpec::Generator.configure do |config|
|
7
|
+
config.debug = true
|
8
|
+
config.remove_temp_dir = true #false
|
9
|
+
config.default_rails_root(__FILE__)
|
10
|
+
config.lib = File.dirname(__FILE__) + '/../lib'
|
11
|
+
config.logger = :stdout # :file
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
describe Cantango::Generators::LicenseGenerator do
|
16
|
+
use_helpers :special, :file
|
17
|
+
|
18
|
+
setup_generator :license do
|
19
|
+
tests CanTango::Generators::LicenseGenerator
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "License: Profile Administration" do
|
23
|
+
before :each do
|
24
|
+
@generator = with_generator do |g|
|
25
|
+
g.run_generator "profile_administration --reads all --licenses blogging".args
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have created license files" do
|
30
|
+
@generator.should have_license_file :profile_administration
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'generator-spec'
|
3
|
+
|
4
|
+
require_generator :cantango => :licenses
|
5
|
+
|
6
|
+
RSpec::Generator.configure do |config|
|
7
|
+
config.debug = true
|
8
|
+
config.remove_temp_dir = true #false
|
9
|
+
config.default_rails_root(__FILE__)
|
10
|
+
config.lib = File.dirname(__FILE__) + '/../lib'
|
11
|
+
config.logger = :stdout # :file
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
describe Cantango::Generators::LicensesGenerator do
|
16
|
+
use_helpers :controller, :special, :file
|
17
|
+
|
18
|
+
setup_generator :licenses do
|
19
|
+
tests Cantango::Generators::LicensesGenerator
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "Licenses: Profile Administration and Article Editing" do
|
23
|
+
before :each do
|
24
|
+
@generator = with_generator do |g|
|
25
|
+
g.run_generator "profile_administration article_editing".args
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have created license files" do
|
30
|
+
@generator.should have_license_files :profile_administration, :article_editing
|
31
|
+
@generator.should_not have_license_files :blogging, :user_admin
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "Licenses: Profile Administration and Article Editing" do
|
36
|
+
before :each do
|
37
|
+
@generator = with_generator do |g|
|
38
|
+
g.run_generator "profile_administration article_editing".args
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should have created license files" do
|
43
|
+
@generator.should have_license_files :profile_administration, :article_editing, :blogging, :user_admin
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should have created license file :profile_administration with the right class" do
|
47
|
+
@generator.should have_license_file :profile_administration do |license|
|
48
|
+
license.should have_license_class :profile_administration
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should have created license file :article_editing with the right class" do
|
53
|
+
@generator.should have_license_file :article_editing do |license|
|
54
|
+
license.should have_license_class :article_editing
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|