simple_roles 0.0.5
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/.rspec +1 -0
- data/Gemfile +22 -0
- data/MIT-LICENSE +20 -0
- data/README.md +81 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/app/assets/images/simple_roles/.gitkeep +0 -0
- data/app/assets/javascripts/simple_roles/.gitkeep +0 -0
- data/app/assets/stylesheets/simple_roles/.gitkeep +0 -0
- data/app/controllers/.gitkeep +0 -0
- data/app/helpers/.gitkeep +0 -0
- data/app/mailers/.gitkeep +0 -0
- data/app/models/.gitkeep +0 -0
- data/app/models/role.rb +4 -0
- data/app/models/user_role.rb +4 -0
- data/app/views/.gitkeep +0 -0
- data/config/routes.rb +2 -0
- data/db/migrate/001_create_user_roles.rb +15 -0
- data/db/migrate/002_create_roles.rb +22 -0
- data/lib/simple_roles/base.rb +111 -0
- data/lib/simple_roles/configuration.rb +33 -0
- data/lib/simple_roles/engine.rb +4 -0
- data/lib/simple_roles/macros.rb +13 -0
- data/lib/simple_roles/roles_array.rb +63 -0
- data/lib/simple_roles/version.rb +3 -0
- data/lib/simple_roles.rb +19 -0
- data/lib/tasks/simple_roles_tasks.rake +4 -0
- data/script/rails +6 -0
- data/simple_roles.gemspec +196 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +9 -0
- data/spec/dummy/app/assets/javascripts/default.js +2 -0
- data/spec/dummy/app/assets/javascripts/jquery.js +16 -0
- data/spec/dummy/app/assets/javascripts/jquery_ujs.js +169 -0
- data/spec/dummy/app/assets/javascripts/posts.js +2 -0
- data/spec/dummy/app/assets/stylesheets/application.css +7 -0
- data/spec/dummy/app/assets/stylesheets/default.css +4 -0
- data/spec/dummy/app/assets/stylesheets/posts.css +4 -0
- data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/controllers/default_controller.rb +5 -0
- data/spec/dummy/app/controllers/posts_controller.rb +83 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/helpers/default_helper.rb +2 -0
- data/spec/dummy/app/helpers/posts_helper.rb +2 -0
- data/spec/dummy/app/mailers/.gitkeep +0 -0
- data/spec/dummy/app/models/.gitkeep +0 -0
- data/spec/dummy/app/models/post.rb +2 -0
- data/spec/dummy/app/models/user.rb +15 -0
- data/spec/dummy/app/views/default/index.html.erb +4 -0
- data/spec/dummy/app/views/devise/confirmations/new.html.erb +12 -0
- data/spec/dummy/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
- data/spec/dummy/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/spec/dummy/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
- data/spec/dummy/app/views/devise/passwords/edit.html.erb +16 -0
- data/spec/dummy/app/views/devise/passwords/new.html.erb +12 -0
- data/spec/dummy/app/views/devise/registrations/edit.html.erb +25 -0
- data/spec/dummy/app/views/devise/registrations/new.html.erb +18 -0
- data/spec/dummy/app/views/devise/sessions/new.html.erb +17 -0
- data/spec/dummy/app/views/devise/shared/_links.erb +25 -0
- data/spec/dummy/app/views/devise/unlocks/new.html.erb +12 -0
- data/spec/dummy/app/views/layouts/application.html.erb +15 -0
- data/spec/dummy/app/views/posts/_form.html.erb +17 -0
- data/spec/dummy/app/views/posts/edit.html.erb +6 -0
- data/spec/dummy/app/views/posts/index.html.erb +21 -0
- data/spec/dummy/app/views/posts/new.html.erb +5 -0
- data/spec/dummy/app/views/posts/show.html.erb +5 -0
- data/spec/dummy/config/application.rb +51 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +26 -0
- data/spec/dummy/config/database_mysql.yml +29 -0
- data/spec/dummy/config/database_pgsql.yml +35 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +24 -0
- data/spec/dummy/config/environments/production.rb +52 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/devise.rb +204 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/simple_roles.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +12 -0
- data/spec/dummy/config/locales/devise.en.yml +53 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +13 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/migrate/010_devise_create_users.rb +29 -0
- data/spec/dummy/db/migrate/20110925210726_create_user_roles.rb +15 -0
- data/spec/dummy/db/migrate/20110925210727_create_roles.rb +22 -0
- data/spec/dummy/db/schema.rb +51 -0
- data/spec/dummy/db/seeds.rb +14 -0
- data/spec/dummy/log/.gitkeep +0 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/test/fixtures/posts.yml +11 -0
- data/spec/dummy/test/fixtures/users.yml +11 -0
- data/spec/dummy/test/functional/default_controller_test.rb +9 -0
- data/spec/dummy/test/functional/posts_controller_test.rb +49 -0
- data/spec/dummy/test/unit/helpers/default_helper_test.rb +4 -0
- data/spec/dummy/test/unit/helpers/posts_helper_test.rb +4 -0
- data/spec/dummy/test/unit/post_test.rb +7 -0
- data/spec/dummy/test/unit/user_test.rb +7 -0
- data/spec/dummy_spec_helper.rb +41 -0
- data/spec/integration/main_spec.rb +7 -0
- data/spec/integration/messages_spec.rb +62 -0
- data/spec/integration/requests/main_spec.rb +21 -0
- data/spec/simple_roles/base_spec.rb +191 -0
- data/spec/simple_roles/macros_spec.rb +25 -0
- data/spec/spec_helper.rb +52 -0
- data/spec/support/aliases.rb +0 -0
- data/spec/support/controller_macros.rb +26 -0
- data/spec/support/database.yml +6 -0
- data/spec/support/factories.rb +22 -0
- data/spec/support/fixtures/models/.gitkeep +0 -0
- data/spec/support/fixtures/models/user.rb +3 -0
- data/spec/support/migrations/010_create_users.rb +14 -0
- data/spec/support/rspec_helpers.rb +22 -0
- metadata +320 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class CreateUserRoles < ActiveRecord::Migration
|
|
2
|
+
def up
|
|
3
|
+
create_table :user_roles do |t|
|
|
4
|
+
t.integer :user_id
|
|
5
|
+
t.integer :role_id
|
|
6
|
+
|
|
7
|
+
t.timestamps
|
|
8
|
+
end
|
|
9
|
+
add_index :user_roles, [:user_id, :role_id]
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def down
|
|
13
|
+
drop_table :user_roles
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class CreateRoles < ActiveRecord::Migration
|
|
2
|
+
def up
|
|
3
|
+
create_table :roles do |t|
|
|
4
|
+
t.string :name
|
|
5
|
+
t.timestamps
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
create_roles
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def down
|
|
12
|
+
drop_table :roles
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def create_roles
|
|
17
|
+
SimpleRoles::Configuration.valid_roles.each do |role|
|
|
18
|
+
Role.create(:name => role.to_s)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
# This file is auto-generated from the current state of the database. Instead
|
|
3
|
+
# of editing this file, please use the migrations feature of Active Record to
|
|
4
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
|
5
|
+
#
|
|
6
|
+
# Note that this schema.rb definition is the authoritative source for your
|
|
7
|
+
# database schema. If you need to create the application database on another
|
|
8
|
+
# system, you should be using db:schema:load, not running all the migrations
|
|
9
|
+
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
|
10
|
+
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
|
11
|
+
#
|
|
12
|
+
# It's strongly recommended to check this file into your version control system.
|
|
13
|
+
|
|
14
|
+
ActiveRecord::Schema.define(:version => 20110925210727) do
|
|
15
|
+
|
|
16
|
+
create_table "roles", :force => true do |t|
|
|
17
|
+
t.string "name"
|
|
18
|
+
t.datetime "created_at"
|
|
19
|
+
t.datetime "updated_at"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
create_table "user_roles", :force => true do |t|
|
|
23
|
+
t.integer "user_id"
|
|
24
|
+
t.integer "role_id"
|
|
25
|
+
t.datetime "created_at"
|
|
26
|
+
t.datetime "updated_at"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
add_index "user_roles", ["user_id", "role_id"], :name => "index_user_roles_on_user_id_and_role_id"
|
|
30
|
+
|
|
31
|
+
create_table "users", :force => true do |t|
|
|
32
|
+
t.string "email", :default => "", :null => false
|
|
33
|
+
t.string "encrypted_password", :limit => 128, :default => "", :null => false
|
|
34
|
+
t.string "reset_password_token"
|
|
35
|
+
t.datetime "reset_password_sent_at"
|
|
36
|
+
t.datetime "remember_created_at"
|
|
37
|
+
t.integer "sign_in_count", :default => 0
|
|
38
|
+
t.datetime "current_sign_in_at"
|
|
39
|
+
t.datetime "last_sign_in_at"
|
|
40
|
+
t.string "current_sign_in_ip"
|
|
41
|
+
t.string "last_sign_in_ip"
|
|
42
|
+
t.string "name"
|
|
43
|
+
t.string "username"
|
|
44
|
+
t.datetime "created_at"
|
|
45
|
+
t.datetime "updated_at"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
|
|
49
|
+
add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
|
|
50
|
+
|
|
51
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
puts "loading seeds"
|
|
2
|
+
User.delete_all
|
|
3
|
+
|
|
4
|
+
['stanislaw', 'marixa', 'kristian', 'miloviza'].each do |name|
|
|
5
|
+
User.create!(
|
|
6
|
+
:username => name,
|
|
7
|
+
:email => "#{name}@gmail.com",
|
|
8
|
+
:password => "666666",
|
|
9
|
+
:password_confirmation => "666666"
|
|
10
|
+
)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
first_user = User.find_by_username("stanislaw")
|
|
14
|
+
second_user = User.find_by_username("marixa")
|
|
File without changes
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title>The page you were looking for doesn't exist (404)</title>
|
|
5
|
+
<style type="text/css">
|
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
|
7
|
+
div.dialog {
|
|
8
|
+
width: 25em;
|
|
9
|
+
padding: 0 4em;
|
|
10
|
+
margin: 4em auto 0 auto;
|
|
11
|
+
border: 1px solid #ccc;
|
|
12
|
+
border-right-color: #999;
|
|
13
|
+
border-bottom-color: #999;
|
|
14
|
+
}
|
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<!-- This file lives in public/404.html -->
|
|
21
|
+
<div class="dialog">
|
|
22
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
|
23
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
|
24
|
+
</div>
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title>The change you wanted was rejected (422)</title>
|
|
5
|
+
<style type="text/css">
|
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
|
7
|
+
div.dialog {
|
|
8
|
+
width: 25em;
|
|
9
|
+
padding: 0 4em;
|
|
10
|
+
margin: 4em auto 0 auto;
|
|
11
|
+
border: 1px solid #ccc;
|
|
12
|
+
border-right-color: #999;
|
|
13
|
+
border-bottom-color: #999;
|
|
14
|
+
}
|
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<!-- This file lives in public/422.html -->
|
|
21
|
+
<div class="dialog">
|
|
22
|
+
<h1>The change you wanted was rejected.</h1>
|
|
23
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
|
24
|
+
</div>
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title>We're sorry, but something went wrong (500)</title>
|
|
5
|
+
<style type="text/css">
|
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
|
7
|
+
div.dialog {
|
|
8
|
+
width: 25em;
|
|
9
|
+
padding: 0 4em;
|
|
10
|
+
margin: 4em auto 0 auto;
|
|
11
|
+
border: 1px solid #ccc;
|
|
12
|
+
border-right-color: #999;
|
|
13
|
+
border-bottom-color: #999;
|
|
14
|
+
}
|
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<!-- This file lives in public/500.html -->
|
|
21
|
+
<div class="dialog">
|
|
22
|
+
<h1>We're sorry, but something went wrong.</h1>
|
|
23
|
+
<p>We've been notified about this issue and we'll take a look at it shortly.</p>
|
|
24
|
+
</div>
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
|
3
|
+
|
|
4
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
|
5
|
+
require File.expand_path('../../config/boot', __FILE__)
|
|
6
|
+
require 'rails/commands'
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Read about fixtures at http://api.rubyonrails.org/classes/Fixtures.html
|
|
2
|
+
|
|
3
|
+
# This model initially had no columns defined. If you add columns to the
|
|
4
|
+
# model remove the '{}' from the fixture names and add the columns immediately
|
|
5
|
+
# below each fixture, per the syntax in the comments below
|
|
6
|
+
#
|
|
7
|
+
one: {}
|
|
8
|
+
# column: value
|
|
9
|
+
#
|
|
10
|
+
two: {}
|
|
11
|
+
# column: value
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Read about fixtures at http://api.rubyonrails.org/classes/Fixtures.html
|
|
2
|
+
|
|
3
|
+
# This model initially had no columns defined. If you add columns to the
|
|
4
|
+
# model remove the '{}' from the fixture names and add the columns immediately
|
|
5
|
+
# below each fixture, per the syntax in the comments below
|
|
6
|
+
#
|
|
7
|
+
one: {}
|
|
8
|
+
# column: value
|
|
9
|
+
#
|
|
10
|
+
two: {}
|
|
11
|
+
# column: value
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class PostsControllerTest < ActionController::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@post = posts(:one)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
test "should get index" do
|
|
9
|
+
get :index
|
|
10
|
+
assert_response :success
|
|
11
|
+
assert_not_nil assigns(:posts)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
test "should get new" do
|
|
15
|
+
get :new
|
|
16
|
+
assert_response :success
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test "should create post" do
|
|
20
|
+
assert_difference('Post.count') do
|
|
21
|
+
post :create, post: @post.attributes
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
assert_redirected_to post_path(assigns(:post))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
test "should show post" do
|
|
28
|
+
get :show, id: @post.to_param
|
|
29
|
+
assert_response :success
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test "should get edit" do
|
|
33
|
+
get :edit, id: @post.to_param
|
|
34
|
+
assert_response :success
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
test "should update post" do
|
|
38
|
+
put :update, id: @post.to_param, post: @post.attributes
|
|
39
|
+
assert_redirected_to post_path(assigns(:post))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
test "should destroy post" do
|
|
43
|
+
assert_difference('Post.count', -1) do
|
|
44
|
+
delete :destroy, id: @post.to_param
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
assert_redirected_to posts_path
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
$:.unshift File.dirname(__FILE__)
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
|
|
4
|
+
ENV["RAILS_ENV"] ||= 'test'
|
|
5
|
+
|
|
6
|
+
require File.expand_path("../dummy/config/environment", __FILE__)
|
|
7
|
+
require 'require_all'
|
|
8
|
+
require 'rspec/rails'
|
|
9
|
+
require 'cutter'
|
|
10
|
+
require 'capybara/rails'
|
|
11
|
+
require 'capybara/rspec'
|
|
12
|
+
#require 'shoulda'
|
|
13
|
+
require 'factory_girl'
|
|
14
|
+
require 'sugar-high/dsl'
|
|
15
|
+
require_all File.expand_path('../support', __FILE__)
|
|
16
|
+
|
|
17
|
+
#ActiveRecord::Base.logger = Logger.new(STDERR)
|
|
18
|
+
|
|
19
|
+
RSpec.configure do |config|
|
|
20
|
+
config.include Warden::Test::Helpers, :type => :request
|
|
21
|
+
config.after(:each, :type => :request) {Warden.test_reset!}
|
|
22
|
+
|
|
23
|
+
config.mock_with :rspec
|
|
24
|
+
|
|
25
|
+
config.include Factory::Syntax::Methods
|
|
26
|
+
|
|
27
|
+
config.before(:suite) do
|
|
28
|
+
with ActiveRecord::Base.connection do
|
|
29
|
+
tables.map do |table|
|
|
30
|
+
drop_table table
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
with ActiveRecord::Migrator do
|
|
35
|
+
migrate File.expand_path('../dummy/db/migrate', __FILE__)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
require "dummy/db/seeds"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require 'dummy_spec_helper'
|
|
2
|
+
|
|
3
|
+
module DeviseSessionHelpers
|
|
4
|
+
def login_with email, password
|
|
5
|
+
fill_in "Email", :with => email
|
|
6
|
+
fill_in "Password", :with => password
|
|
7
|
+
click_button "Sign in"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def login_user
|
|
11
|
+
visit new_user_session_path
|
|
12
|
+
login_with 'stanislaw@gmail.com', "666666"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
feature "Messages", %q{
|
|
17
|
+
In order to have...
|
|
18
|
+
As an user
|
|
19
|
+
I want to do something with messages} do
|
|
20
|
+
|
|
21
|
+
background do
|
|
22
|
+
Capybara.reset_sessions!
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
include DeviseSessionHelpers
|
|
26
|
+
|
|
27
|
+
scenario "Show messages index", :js => true do
|
|
28
|
+
login_user
|
|
29
|
+
visit '/carrier'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
scenario "Show concerto index to musician", :js => true do
|
|
33
|
+
pending
|
|
34
|
+
login_musician
|
|
35
|
+
# save_and_open_page
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
scenario "Show concerto to musician" do
|
|
40
|
+
pending
|
|
41
|
+
|
|
42
|
+
login_musician
|
|
43
|
+
|
|
44
|
+
visit '/concertos/one' # using friendly id :)
|
|
45
|
+
page.should have_content('one')
|
|
46
|
+
visit '/concertos/two'
|
|
47
|
+
page.should have_content('two')
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
scenario "Show concerto admin index to composer", :js => true do
|
|
51
|
+
pending
|
|
52
|
+
login_composer
|
|
53
|
+
|
|
54
|
+
visit '/concertos/admin'
|
|
55
|
+
# save_and_open_page
|
|
56
|
+
|
|
57
|
+
#puts page.body.inspect
|
|
58
|
+
page.should have_content('one')
|
|
59
|
+
page.should have_content('two')
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'dummy_spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Requests" do
|
|
4
|
+
it "truth" do
|
|
5
|
+
Rails.application.should be_kind_of(Dummy::Application)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
describe "Basic pages" do
|
|
9
|
+
before do
|
|
10
|
+
login_as(User.first)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should get root" do
|
|
14
|
+
pending
|
|
15
|
+
|
|
16
|
+
get '/'
|
|
17
|
+
response.status.should be(200)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
SimpleRoles.configure do |config|
|
|
4
|
+
config.valid_roles = [:user, :admin, :editor]
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe SimpleRoles::Base do
|
|
8
|
+
|
|
9
|
+
context "Class Methods" do
|
|
10
|
+
subject { User }
|
|
11
|
+
|
|
12
|
+
context "Scopes" do
|
|
13
|
+
before do
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
SimpleRoles::Configuration.valid_roles.each do |vr|
|
|
17
|
+
it {should respond_to(:"#{vr}s")}
|
|
18
|
+
it {should respond_to(:"#{vr}s_ids")}
|
|
19
|
+
|
|
20
|
+
its(:"#{vr}s") { should be_kind_of(Array) }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
specify { should respond_to(:valid_roles) }
|
|
25
|
+
its(:valid_roles) { should include(:user, :admin)}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context "Instance methods" do
|
|
29
|
+
subject {User.new}
|
|
30
|
+
|
|
31
|
+
[:db_roles, :user_roles].each do |meth|
|
|
32
|
+
specify { should respond_to(meth) }
|
|
33
|
+
its(:"#{meth}") { should be_empty }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
[:roles, :roles_list, :role_groups_list].each do |meth|
|
|
37
|
+
specify { should respond_to(meth) }
|
|
38
|
+
its(:"#{meth}") { should be_empty }
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
context "#roles" do
|
|
42
|
+
it "call on #roles.clear should raise error" do
|
|
43
|
+
lambda {
|
|
44
|
+
roles.clear
|
|
45
|
+
}.should raise_error
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
context "Read API" do
|
|
52
|
+
subject do
|
|
53
|
+
@user ||= User.new(:name => "stanislaw")
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "#has_role?, #has_roles?" do
|
|
57
|
+
subject.roles << :admin
|
|
58
|
+
subject.has_role?(:admin).should be_true
|
|
59
|
+
subject.has_role?(:admin, :user).should be_false
|
|
60
|
+
subject.has_roles?(:editor).should be_false
|
|
61
|
+
subject.roles << :user
|
|
62
|
+
subject.has_role?(:admin, :user).should be_true
|
|
63
|
+
subject.has_role?([:admin, :user]).should be_true
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "#admin?, #user?, #editor? ..." do
|
|
67
|
+
subject.roles << :admin
|
|
68
|
+
subject.admin?.should be_true
|
|
69
|
+
subject.is_admin?.should be_true
|
|
70
|
+
subject.user?.should be_false
|
|
71
|
+
subject.editor?.should be_false
|
|
72
|
+
subject.roles << :editor
|
|
73
|
+
subject.editor?.should be_true
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
context "Write API" do
|
|
78
|
+
subject do
|
|
79
|
+
@user ||= User.new(:name => "stanislaw")
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "#roles= should set roles" do
|
|
83
|
+
subject.roles = :admin
|
|
84
|
+
subject.roles.should == Array.new([:admin])
|
|
85
|
+
subject.roles = :user
|
|
86
|
+
subject.roles.should == Array.new([:user])
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "#roles= should set roles if array of strings passed (sh accept strings too!)" do
|
|
90
|
+
subject.roles = 'admin'
|
|
91
|
+
subject.roles.should == Array.new([:admin])
|
|
92
|
+
subject.roles = ['user', 'editor']
|
|
93
|
+
subject.roles.should == Array.new([:user, :editor])
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "#roles << should add roles" do
|
|
97
|
+
subject.roles << :admin
|
|
98
|
+
subject.roles.should == Array.new([:admin])
|
|
99
|
+
subject.roles << :user
|
|
100
|
+
subject.roles.should == Array.new([:admin, :user])
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "#remove_roles should remove roles" do
|
|
104
|
+
subject.roles << :admin
|
|
105
|
+
subject.roles << :user
|
|
106
|
+
subject.roles << :editor
|
|
107
|
+
|
|
108
|
+
subject.roles.should == Array.new([:admin, :user, :editor])
|
|
109
|
+
|
|
110
|
+
subject.remove_roles :admin
|
|
111
|
+
subject.roles.should == Array.new([:user, :editor])
|
|
112
|
+
|
|
113
|
+
subject.remove_roles :admin, :user, :editor
|
|
114
|
+
subject.roles.should == Array.new([])
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
context "Integration for roles methods" do
|
|
119
|
+
it "should work when #flatten is called over #roles" do
|
|
120
|
+
user = User.new(:name => "stanislaw")
|
|
121
|
+
user.roles << :admin
|
|
122
|
+
|
|
123
|
+
user.roles_list.should == Array.new([:admin])
|
|
124
|
+
user.roles_list.flatten.should == Array.new([:admin])
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it "should add :roles to accessible_attributes if they are Whitelisted" do
|
|
128
|
+
user = User.new(:name => "stanislaw")
|
|
129
|
+
user.roles << :admin
|
|
130
|
+
|
|
131
|
+
user.roles_list.should include(:admin)
|
|
132
|
+
user.save!
|
|
133
|
+
User.find_by_name!("stanislaw").should be_kind_of(User)
|
|
134
|
+
User.delete_all
|
|
135
|
+
|
|
136
|
+
User.attr_accessible :name
|
|
137
|
+
|
|
138
|
+
user = User.new(:name => "stanislaw")
|
|
139
|
+
user.roles << :admin
|
|
140
|
+
user.roles_list.should include(:admin)
|
|
141
|
+
user.save!
|
|
142
|
+
User.find_by_name!("stanislaw").should be_kind_of(User)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
pending "should not duplicate roles when adding" do
|
|
146
|
+
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it "should all work" do
|
|
150
|
+
admin_role = Role.find_by_name("admin")
|
|
151
|
+
user = User.new(:name => "stanislaw")
|
|
152
|
+
user.roles_list.should be_empty
|
|
153
|
+
user.has_any_role?(:admin).should be_false
|
|
154
|
+
user.roles << :admin
|
|
155
|
+
user.db_roles.should include(admin_role)
|
|
156
|
+
user.roles_list.should include(:admin)
|
|
157
|
+
user.roles.should include(:admin)
|
|
158
|
+
user.has_role?(:admin).should be_true
|
|
159
|
+
user.admin?.should be_true
|
|
160
|
+
user.is_admin?.should be_true
|
|
161
|
+
user.has_roles?(:admin).should be_true
|
|
162
|
+
user.save!
|
|
163
|
+
user.db_roles.should include(admin_role)
|
|
164
|
+
user.roles.should include(:admin)
|
|
165
|
+
user = User.find_by_name! "stanislaw"
|
|
166
|
+
user.roles.should include(:admin)
|
|
167
|
+
user.roles.remove(:admin)
|
|
168
|
+
user.roles.should be_empty
|
|
169
|
+
user.save!
|
|
170
|
+
user.roles.should be_empty
|
|
171
|
+
user.roles = [:admin, :user]
|
|
172
|
+
user.roles.should == Array.new([:admin, :user])
|
|
173
|
+
user.has_role?(:admin, :user).should be_true
|
|
174
|
+
user.has_roles?([:admin, :user]).should be_true
|
|
175
|
+
user.db_roles.size.should == 2
|
|
176
|
+
user.roles.clear!
|
|
177
|
+
user.db_roles.should be_empty
|
|
178
|
+
user.roles.should be_empty
|
|
179
|
+
user.roles << :admin
|
|
180
|
+
user.db_roles.should include(admin_role)
|
|
181
|
+
user.roles.should include(:admin)
|
|
182
|
+
user.add_role :user
|
|
183
|
+
user.roles.should include(:user, :admin)
|
|
184
|
+
user.has_any_role?(:user).should be_true
|
|
185
|
+
user.has_any_role?(:user, :admin).should be_true
|
|
186
|
+
user.has_any_role?([:user, :admin])
|
|
187
|
+
user.has_any_role?(:blip).should be_false
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe SimpleRoles::Base do
|
|
4
|
+
|
|
5
|
+
context "Macros availability" do
|
|
6
|
+
subject { Module }
|
|
7
|
+
before {
|
|
8
|
+
require 'simple_roles'
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
specify { should be_kind_of(SimpleRoles::Macros) }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "after applying macros" do
|
|
15
|
+
subject { User }
|
|
16
|
+
before do
|
|
17
|
+
class User < ActiveRecord::Base
|
|
18
|
+
simple_roles
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
specify { should be_kind_of(SimpleRoles::Macros) }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|