roles_data_mapper 0.1.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.
@@ -0,0 +1,99 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{roles_data_mapper}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Kristian Mandrup"]
12
+ s.date = %q{2010-09-12}
13
+ s.description = %q{Makes it easy to set a role strategy on your User model in DataMapper}
14
+ s.email = %q{kmandrup@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ ".rspec",
23
+ "LICENSE",
24
+ "README.markdown",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/generators/data_mapper/roles/roles_generator.rb",
28
+ "lib/roles_data_mapper.rb",
29
+ "lib/roles_data_mapper/base.rb",
30
+ "lib/roles_data_mapper/namespaces.rb",
31
+ "lib/roles_data_mapper/role.rb",
32
+ "lib/roles_data_mapper/strategy.rb",
33
+ "lib/roles_data_mapper/strategy/multi/many_roles.rb",
34
+ "lib/roles_data_mapper/strategy/multi/roles_mask.rb",
35
+ "lib/roles_data_mapper/strategy/single/admin_flag.rb",
36
+ "lib/roles_data_mapper/strategy/single/one_role.rb",
37
+ "lib/roles_data_mapper/strategy/single/role_string.rb",
38
+ "roles_data_mapper.gemspec",
39
+ "spec/generator_spec_helper.rb",
40
+ "spec/roles_data_mapper/generators/roles_generator_spec.rb",
41
+ "spec/roles_data_mapper/strategy/admin_flag_spec.rb",
42
+ "spec/roles_data_mapper/strategy/many_roles_spec.rb",
43
+ "spec/roles_data_mapper/strategy/one_role_spec.rb",
44
+ "spec/roles_data_mapper/strategy/role_string_spec.rb",
45
+ "spec/roles_data_mapper/strategy/roles_mask_spec.rb",
46
+ "spec/spec_helper.rb",
47
+ "tmp/rails/config/routes.rb"
48
+ ]
49
+ s.homepage = %q{http://github.com/kristianmandrup/roles_for_dm}
50
+ s.rdoc_options = ["--charset=UTF-8"]
51
+ s.require_paths = ["lib"]
52
+ s.rubygems_version = %q{1.3.7}
53
+ s.summary = %q{Implementation of Roles generic API for DataMapper}
54
+ s.test_files = [
55
+ "spec/generator_spec_helper.rb",
56
+ "spec/roles_data_mapper/generators/roles_generator_spec.rb",
57
+ "spec/roles_data_mapper/strategy/admin_flag_spec.rb",
58
+ "spec/roles_data_mapper/strategy/many_roles_spec.rb",
59
+ "spec/roles_data_mapper/strategy/one_role_spec.rb",
60
+ "spec/roles_data_mapper/strategy/role_string_spec.rb",
61
+ "spec/roles_data_mapper/strategy/roles_mask_spec.rb",
62
+ "spec/spec_helper.rb"
63
+ ]
64
+
65
+ if s.respond_to? :specification_version then
66
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
67
+ s.specification_version = 3
68
+
69
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
70
+ s.add_development_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
71
+ s.add_runtime_dependency(%q<dm-core>, ["~> 1.0"])
72
+ s.add_runtime_dependency(%q<dm-types>, ["~> 1.0"])
73
+ s.add_runtime_dependency(%q<dm-migrations>, ["~> 1.0"])
74
+ s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.0"])
75
+ s.add_runtime_dependency(%q<require_all>, ["~> 1.1.0"])
76
+ s.add_runtime_dependency(%q<sugar-high>, ["~> 0.2.3"])
77
+ s.add_runtime_dependency(%q<roles_generic>, ["~> 0.2.2"])
78
+ else
79
+ s.add_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
80
+ s.add_dependency(%q<dm-core>, ["~> 1.0"])
81
+ s.add_dependency(%q<dm-types>, ["~> 1.0"])
82
+ s.add_dependency(%q<dm-migrations>, ["~> 1.0"])
83
+ s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
84
+ s.add_dependency(%q<require_all>, ["~> 1.1.0"])
85
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.3"])
86
+ s.add_dependency(%q<roles_generic>, ["~> 0.2.2"])
87
+ end
88
+ else
89
+ s.add_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
90
+ s.add_dependency(%q<dm-core>, ["~> 1.0"])
91
+ s.add_dependency(%q<dm-types>, ["~> 1.0"])
92
+ s.add_dependency(%q<dm-migrations>, ["~> 1.0"])
93
+ s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
94
+ s.add_dependency(%q<require_all>, ["~> 1.1.0"])
95
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.3"])
96
+ s.add_dependency(%q<roles_generic>, ["~> 0.2.2"])
97
+ end
98
+ end
99
+
@@ -0,0 +1,13 @@
1
+ require 'rspec'
2
+ require 'rspec/autorun'
3
+ require 'rails3_artifactor'
4
+ require 'generator-spec'
5
+ require 'roles_generic'
6
+
7
+ RSpec::Generator.configure do |config|
8
+ config.debug = true #false
9
+ config.remove_temp_dir = false # true
10
+ config.default_rails_root(__FILE__)
11
+ config.lib = File.dirname(__FILE__) + '/../lib'
12
+ config.logger = :stdout
13
+ end
@@ -0,0 +1,58 @@
1
+ require 'generator_spec_helper'
2
+ require_generator :data_mapper => :roles
3
+
4
+ # root_dir = Rails3::Assist::Directory.rails_root
5
+ root_dir = File.join(Rails.application.config.root_dir, 'rails')
6
+
7
+ describe 'role strategy generator: admin_flag' do
8
+ describe 'ORM: data_mapper' do
9
+ use_orm :data_mapper
10
+
11
+ before :each do
12
+ setup_generator 'datamapper_roles_generator' do
13
+ tests DataMapper::Generators::RolesGenerator
14
+ end
15
+ remove_model :user
16
+ end
17
+
18
+ after :each do
19
+ remove_model :user
20
+ end
21
+
22
+ it "should configure 'admin_flag' strategy" do
23
+ create_model :user do
24
+ '# content'
25
+ end
26
+ with_generator do |g|
27
+ arguments = "User --strategy admin_flag --roles admin user"
28
+ puts "arguments: #{arguments}"
29
+ g.run_generator arguments.args
30
+ g.should generate_model :user do |clazz|
31
+ clazz.should include_module 'DataMapper::Resource'
32
+ clazz.should include_module 'Roles::DataMapper'
33
+ clazz.should have_call :valid_roles_are, :args => ':admin, :guest, :user'
34
+ clazz.should have_call :strategy, :args => ":admin_flag"
35
+ end
36
+ end
37
+ end
38
+
39
+ it "should configure 'one_role' strategy" do
40
+ create_model :user do
41
+ '# content'
42
+ end
43
+ with_generator do |g|
44
+ arguments = "User --strategy one_role --roles admin user"
45
+ puts "arguments: #{arguments}"
46
+ g.run_generator arguments.args
47
+ g.should generate_model :user do |clazz|
48
+ clazz.should include_module 'DataMapper::Resource'
49
+ clazz.should include_module 'Roles::DataMapper'
50
+ clazz.should have_call :valid_roles_are, :args => ':admin, :guest, :user'
51
+ clazz.should have_call :role_class, :args => ":role"
52
+ clazz.should have_call :strategy, :args => ":one_role"
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+ use_roles_strategy :admin_flag
3
+
4
+ class User
5
+ include DataMapper::Resource
6
+ include Roles::DataMapper
7
+
8
+ strategy :admin_flag, :default
9
+
10
+ property :id, Serial
11
+ property :name, String
12
+ end
13
+
14
+ DataMapper.finalize
15
+ DataMapper.auto_migrate!
16
+
17
+ User.valid_roles_are :admin, :guest
18
+
19
+ describe "Roles for Mongoid" do
20
+ before :each do
21
+
22
+ @user = User.create(:name => 'Kristian')
23
+ @user.roles = :guest
24
+ @user.save
25
+
26
+ @admin_user = User.create(:name => 'Admin user')
27
+ @admin_user.roles = :admin
28
+ @admin_user.save
29
+
30
+ puts "user: #{@user.inspect}"
31
+ puts "admin: #{@admin_user.inspect}"
32
+ end
33
+
34
+ describe "Admin flag strategy " do
35
+
36
+ describe '#in_role' do
37
+ it "should return first user maching role" do
38
+ User.in_role(:guest).first.name.should == 'Kristian'
39
+ User.in_role(:admin).first.name.should == 'Admin user'
40
+ end
41
+ end
42
+
43
+ describe 'roles API' do
44
+ it "should have admin user role to :admin" do
45
+ @admin_user.role.should == :admin
46
+ @admin_user.roles.should == [:admin]
47
+ @admin_user.admin?.should be_true
48
+
49
+ @admin_user.class.valid_roles.should == [:admin, :guest]
50
+
51
+ @admin_user.has_role?(:guest).should be_false
52
+
53
+ @admin_user.has_role?(:admin).should be_true
54
+ @admin_user.is?(:admin).should be_true
55
+ @admin_user.has_roles?(:admin).should be_true
56
+ @admin_user.has?(:admin).should be_true
57
+ end
58
+
59
+ it "should have user role to :guest" do
60
+ @user.roles.should == [:guest]
61
+ # @user.admin?.should be_false
62
+
63
+ # @user.has_role?(:guest).should be_true
64
+ # @user.has_role?(:admin).should be_false
65
+ # @user.is?(:admin).should be_false
66
+ #
67
+ # @user.has_roles?(:guest).should be_true
68
+ # @user.has?(:admin).should be_false
69
+ end
70
+
71
+ it "should set user role to :admin using =" do
72
+ @user.roles = :admin
73
+ @user.role.should == :admin
74
+ @user.has_role?(:admin).should be_true
75
+ end
76
+ end
77
+ end
78
+ end
79
+
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+ use_roles_strategy :many_roles
3
+
4
+ class User
5
+ include DataMapper::Resource
6
+ include Roles::DataMapper
7
+
8
+ strategy :many_roles, :default
9
+ role_class :role
10
+
11
+ property :id, Serial
12
+ property :name, String
13
+ end
14
+
15
+ DataMapper.finalize
16
+ DataMapper.auto_migrate!
17
+
18
+ User.valid_roles_are :admin, :guest
19
+
20
+ describe "Roles for Mongoid" do
21
+ context "default setup" do
22
+
23
+ before :each do
24
+ # DataMapper.finalize
25
+ # DataMapper.auto_migrate!
26
+
27
+ @user = User.create(:name => 'Kristian')
28
+ @user.add_roles :guest
29
+ @user.save
30
+
31
+ @admin_user = User.create(:name => 'Admin user')
32
+ @admin_user.roles = :admin
33
+ @admin_user.save
34
+ end
35
+
36
+ describe '#in_role' do
37
+ it "should return first user matching role" do
38
+ User.in_roles(:guest).first.name.should == 'Kristian'
39
+ User.in_role(:admin).first.name.should == 'Admin user'
40
+ end
41
+ end
42
+
43
+ describe "Role API" do
44
+ it "should have admin user role to :admin" do
45
+ @admin_user.roles_list.first.should == :admin
46
+ @admin_user.admin?.should be_true
47
+
48
+ @admin_user.has_role?(:guest).should be_false
49
+
50
+ @admin_user.has_role?(:admin).should be_true
51
+ @admin_user.is?(:admin).should be_true
52
+ @admin_user.has_roles?(:admin).should be_true
53
+ @admin_user.has?(:admin).should be_true
54
+ end
55
+
56
+ it "should have user role to :guest" do
57
+ @user.roles_list.first.should == :guest
58
+ @user.admin?.should be_false
59
+
60
+ @user.has_role?(:guest).should be_true
61
+ @user.has_role?(:admin).should be_false
62
+ @user.is?(:admin).should be_false
63
+
64
+ @user.has_roles?(:admin).should be_false
65
+ @user.has?(:admin).should be_false
66
+ end
67
+
68
+ it "should set user role to :admin using roles=" do
69
+ @user.roles = :admin
70
+ @user.roles_list.first.should == :admin
71
+ @user.has_role?(:admin).should be_true
72
+ end
73
+ end
74
+ end
75
+ end
76
+
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+ use_roles_strategy :one_role
3
+
4
+ class User
5
+ include DataMapper::Resource
6
+ include Roles::DataMapper
7
+
8
+ strategy :one_role, :default
9
+ role_class :role
10
+
11
+ property :id, Serial
12
+ property :name, String
13
+ end
14
+
15
+ DataMapper.finalize
16
+ DataMapper.auto_migrate!
17
+
18
+ User.valid_roles_are :admin, :guest
19
+
20
+ describe "Roles for Mongoid" do
21
+
22
+ context "default setup" do
23
+
24
+ before :each do
25
+ # DataMapper.finalize
26
+ # DataMapper.auto_migrate!
27
+
28
+ @user = User.create(:name => 'Kristian')
29
+ @user.role = :guest
30
+ @user.save
31
+
32
+ @admin_user = User.create(:name => 'Admin user')
33
+ @admin_user.role = :admin
34
+ @admin_user.save
35
+
36
+ puts "user: #{@user.inspect}"
37
+ puts "admin: #{@admin_user.inspect}"
38
+ puts "role: #{Role.first.inspect}"
39
+ end
40
+
41
+ describe '#in_role' do
42
+ it "should return first user matching role" do
43
+ User.in_role(:guest).first.name.should == 'Kristian'
44
+ User.in_role(:admin).first.name.should == 'Admin user'
45
+ end
46
+ end
47
+
48
+ describe "Role API" do
49
+ it "should have admin user role to :admin" do
50
+ @admin_user.roles_list.first.should == :admin
51
+ @admin_user.admin?.should be_true
52
+
53
+ @admin_user.has_role?(:guest).should be_false
54
+
55
+ @admin_user.has_role?(:admin).should be_true
56
+ @admin_user.is?(:admin).should be_true
57
+ @admin_user.has_roles?(:admin).should be_true
58
+ @admin_user.has?(:admin).should be_true
59
+ end
60
+
61
+ it "should have user role to :guest" do
62
+ @user.roles_list.first.should == :guest
63
+ @user.admin?.should be_false
64
+
65
+ @user.has_role?(:guest).should be_true
66
+ @user.has_role?(:admin).should be_false
67
+ @user.is?(:admin).should be_false
68
+
69
+ @user.has_roles?(:admin).should be_false
70
+ @user.has?(:admin).should be_false
71
+ end
72
+
73
+ it "should set user role to :admin using roles=" do
74
+ @user.roles = :admin
75
+ @user.roles_list.first.should == :admin
76
+ @user.has_role?(:admin).should be_true
77
+ end
78
+ end
79
+ end
80
+ end
81
+
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+ use_roles_strategy :role_string
3
+
4
+ class User
5
+ include DataMapper::Resource
6
+ include Roles::DataMapper
7
+
8
+ strategy :role_string, :default
9
+
10
+ property :id, Serial
11
+ property :name, String
12
+ end
13
+
14
+ DataMapper.finalize
15
+ DataMapper.auto_migrate!
16
+
17
+ User.valid_roles_are :admin, :guest
18
+
19
+ describe "Roles for Mongoid" do
20
+
21
+ context "default setup" do
22
+ before :each do
23
+
24
+ @user = User.create(:name => 'Kristian')
25
+ @user.role = :guest
26
+ @user.save
27
+
28
+ @admin_user = User.create(:name => 'Admin user')
29
+ @admin_user.roles = :admin
30
+ @admin_user.save
31
+ end
32
+
33
+ describe '#in_role' do
34
+ it "should return first user matching role" do
35
+ User.in_role(:guest).first.name.should == 'Kristian'
36
+ User.in_role(:admin).first.name.should == 'Admin user'
37
+ end
38
+ end
39
+
40
+ describe "Role API" do
41
+ it "should have admin user role to :admin" do
42
+ @admin_user.roles_list.first.should == :admin
43
+ @admin_user.admin?.should be_true
44
+
45
+ @admin_user.has_role?(:guest).should be_false
46
+
47
+ @admin_user.has_role?(:admin).should be_true
48
+ @admin_user.is?(:admin).should be_true
49
+ @admin_user.has_roles?(:admin).should be_true
50
+ @admin_user.has?(:admin).should be_true
51
+ end
52
+
53
+ it "should have user role to :guest" do
54
+ @user.roles_list.first.should == :guest
55
+ @user.admin?.should be_false
56
+
57
+ @user.has_role?(:guest).should be_true
58
+ @user.has_role?(:admin).should be_false
59
+ @user.is?(:admin).should be_false
60
+
61
+ @user.has_roles?(:admin).should be_false
62
+ @user.has?(:admin).should be_false
63
+ end
64
+
65
+ it "should set user role to :admin using roles=" do
66
+ @user.roles = :admin
67
+ @user.roles_list.first.should == :admin
68
+ @user.has_role?(:admin).should be_true
69
+ end
70
+ end
71
+ end
72
+ end
73
+
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+ use_roles_strategy :roles_mask
3
+
4
+ class User
5
+ include DataMapper::Resource
6
+ include Roles::DataMapper
7
+
8
+ strategy :roles_mask, :default
9
+
10
+ property :id, Serial
11
+ property :name, String
12
+ end
13
+
14
+ DataMapper.finalize
15
+ DataMapper.auto_migrate!
16
+
17
+ User.valid_roles_are :admin, :guest
18
+
19
+ describe "Roles for Mongoid" do
20
+
21
+ context "default setup" do
22
+
23
+ before :each do
24
+ @user = User.create(:name => 'Kristian')
25
+ @user.role = :guest
26
+ @user.save
27
+
28
+ @admin_user = User.create(:name => 'Admin user')
29
+ @admin_user.roles = :admin
30
+ @admin_user.save
31
+ end
32
+
33
+ describe '#in_role' do
34
+ it "should return first user matching role" do
35
+ User.in_role(:guest).first.name.should == 'Kristian'
36
+ User.in_role(:admin).first.name.should == 'Admin user'
37
+ end
38
+ end
39
+
40
+ describe "Role API" do
41
+ it "should have admin user role to :admin" do
42
+ @admin_user.roles_list.first.should == :admin
43
+ @admin_user.admin?.should be_true
44
+
45
+ @admin_user.has_role?(:guest).should be_false
46
+
47
+ @admin_user.has_role?(:admin).should be_true
48
+ @admin_user.is?(:admin).should be_true
49
+ @admin_user.has_roles?(:admin).should be_true
50
+ @admin_user.has?(:admin).should be_true
51
+ end
52
+
53
+ it "should have user role to :guest" do
54
+ @user.roles_list.first.should == :guest
55
+ @user.admin?.should be_false
56
+
57
+ @user.has_role?(:guest).should be_true
58
+ @user.has_role?(:admin).should be_false
59
+ @user.is?(:admin).should be_false
60
+
61
+ @user.has_roles?(:admin).should be_false
62
+ @user.has?(:admin).should be_false
63
+ end
64
+
65
+ it "should set user role to :admin using roles=" do
66
+ @user.roles = :admin
67
+ @user.roles_list.first.should == :admin
68
+ @user.has_role?(:admin).should be_true
69
+ end
70
+ end
71
+ end
72
+ end
73
+
@@ -0,0 +1,17 @@
1
+ require 'rspec'
2
+ require 'rspec/autorun'
3
+ require 'dm-core'
4
+ require 'dm-types'
5
+ require 'dm-migrations'
6
+ require 'roles_data_mapper'
7
+
8
+ # gem install dm-core dm-sqlite-adapter
9
+ # gem install dm-types dm-validations dm-timestamps dm-aggregates dm-adjust dm-is-list dm-is-tree dm-is-versioned dm-is-nested_set
10
+ # gem install rails_datamapper dm-migrations dm-observer
11
+
12
+ DataMapper::Logger.new($stdout, :debug)
13
+ DataMapper.setup(:default, 'sqlite::memory:')
14
+
15
+ RSpec.configure do |config|
16
+ config.mock_with :mocha
17
+ end
@@ -0,0 +1,2 @@
1
+ Rails.application.routes.draw do
2
+ end