Commit 4dba87a9b0eaa585c4c1158f2e364ec82b6bf4f3
Committed by
Rafael Manzo
1 parent
c1f0c0f1
Exists in
colab
and in
4 other branches
Reading group ownerships.
Signed-off-by: Fellipe Souto <fllsouto@gmail.com> Signed-off-by: Renan Fichberg <rfichberg@gmail.com>
Showing
10 changed files
with
97 additions
and
15 deletions
Show diff stats
app/controllers/concerns/ownership_authentication.rb
1 | 1 | module OwnershipAuthentication |
2 | 2 | extend ActiveSupport::Concern |
3 | 3 | |
4 | - def check_project_ownership | |
5 | - check_ownership(params[:id]) | |
4 | + def project_owner? | |
5 | + check_project_ownership(params[:id]) | |
6 | 6 | end |
7 | 7 | |
8 | - def check_repository_ownership | |
9 | - check_ownership(params[:project_id]) | |
8 | + def repository_owner? | |
9 | + check_project_ownership(params[:project_id]) | |
10 | + end | |
11 | + | |
12 | + def reading_group_owner? | |
13 | + check_reading_group_ownership(params[:id]) | |
10 | 14 | end |
11 | 15 | |
12 | - def check_ownership(id) | |
16 | + def check_project_ownership(id) | |
13 | 17 | if current_user.project_ownerships.find_by_project_id(id).nil? |
14 | 18 | respond_to do |format| |
15 | 19 | format.html { redirect_to projects_url, notice: "You're not allowed to do this operation" } |
... | ... | @@ -17,4 +21,13 @@ module OwnershipAuthentication |
17 | 21 | end |
18 | 22 | end |
19 | 23 | end |
24 | + | |
25 | + def check_reading_group_ownership(id) | |
26 | + if current_user.reading_group_ownerships.find_by_reading_group_id(id).nil? | |
27 | + respond_to do |format| | |
28 | + format.html { redirect_to reading_group_url, notice: "You're not allowed to do this operation" } | |
29 | + format.json { head :no_content } | |
30 | + end | |
31 | + end | |
32 | + end | |
20 | 33 | end | ... | ... |
app/controllers/projects_controller.rb
... | ... | @@ -3,7 +3,7 @@ include OwnershipAuthentication |
3 | 3 | class ProjectsController < ApplicationController |
4 | 4 | before_action :authenticate_user!, |
5 | 5 | except: [:index, :show] |
6 | - before_action :check_project_ownership, only: [:edit, :update, :destroy] | |
6 | + before_action :project_owner?, only: [:edit, :update, :destroy] | |
7 | 7 | |
8 | 8 | # GET /projects/new |
9 | 9 | def new | ... | ... |
app/controllers/repositories_controller.rb
... | ... | @@ -3,7 +3,7 @@ include OwnershipAuthentication |
3 | 3 | class RepositoriesController < ApplicationController |
4 | 4 | before_action :authenticate_user!, except: [:show, :state] |
5 | 5 | before_action :set_repository, only: [:show, :edit, :update, :destroy, :state, :process_repository] |
6 | - before_action :check_repository_ownership, except: [:show, :state] | |
6 | + before_action :repository_owner?, except: [:show, :state] | |
7 | 7 | |
8 | 8 | # GET /projects/1/repositories/1 |
9 | 9 | # GET /projects/1/repositories/1.json | ... | ... |
app/models/user.rb
... | ... | @@ -9,10 +9,15 @@ class User < ActiveRecord::Base |
9 | 9 | validates :email, uniqueness: true |
10 | 10 | |
11 | 11 | has_many :project_ownerships |
12 | + | |
13 | + has_many :reading_group_ownerships | |
12 | 14 | # Alert: when adding new parameters to this model, they should also be added to registrations_controller |
13 | 15 | |
14 | 16 | def projects |
15 | - #raise project_ownerships.inspect | |
16 | 17 | project_ownerships.map { |project_ownership| project_ownership.project } |
17 | 18 | end |
19 | + | |
20 | + def reading_groups | |
21 | + reading_group_ownerships.map { |reading_group_ownership| reading_group_ownership.reading_group } | |
22 | + end | |
18 | 23 | end | ... | ... |
db/migrate/20131219115819_create_reading_group_ownerships.rb
0 → 100644
spec/controllers/repositories_controller_spec.rb
... | ... | @@ -11,7 +11,7 @@ describe RepositoriesController do |
11 | 11 | context 'when the current user owns the project' do |
12 | 12 | before :each do |
13 | 13 | Repository.expects(:repository_types).returns([]) |
14 | - subject.expects(:check_repository_ownership).returns true | |
14 | + subject.expects(:repository_owner?).returns true | |
15 | 15 | |
16 | 16 | get :new, project_id: project.id.to_s |
17 | 17 | end |
... | ... | @@ -40,7 +40,7 @@ describe RepositoriesController do |
40 | 40 | |
41 | 41 | context 'when the current user owns the project' do |
42 | 42 | before :each do |
43 | - subject.expects(:check_repository_ownership).returns true | |
43 | + subject.expects(:repository_owner?).returns true | |
44 | 44 | end |
45 | 45 | |
46 | 46 | context 'with valid fields' do |
... | ... | @@ -117,7 +117,7 @@ describe RepositoriesController do |
117 | 117 | |
118 | 118 | context 'when the user owns the project' do |
119 | 119 | before :each do |
120 | - subject.expects(:check_repository_ownership).returns true | |
120 | + subject.expects(:repository_owner?).returns true | |
121 | 121 | repository.expects(:destroy) |
122 | 122 | Repository.expects(:find).at_least_once.with(repository.id).returns(repository) |
123 | 123 | |
... | ... | @@ -159,7 +159,7 @@ describe RepositoriesController do |
159 | 159 | |
160 | 160 | context 'when the user owns the repository' do |
161 | 161 | before :each do |
162 | - subject.expects(:check_repository_ownership).returns true | |
162 | + subject.expects(:repository_owner?).returns true | |
163 | 163 | Repository.expects(:find).at_least_once.with(repository.id).returns(repository) |
164 | 164 | Repository.expects(:repository_types).returns(["SUBVERSION"]) |
165 | 165 | get :edit, id: repository.id, project_id: project.id.to_s |
... | ... | @@ -201,7 +201,7 @@ describe RepositoriesController do |
201 | 201 | |
202 | 202 | context 'when user owns the repository' do |
203 | 203 | before :each do |
204 | - subject.expects(:check_repository_ownership).returns true | |
204 | + subject.expects(:repository_owner?).returns true | |
205 | 205 | end |
206 | 206 | |
207 | 207 | context 'with valid fields' do |
... | ... | @@ -327,7 +327,7 @@ describe RepositoriesController do |
327 | 327 | let(:repository) { FactoryGirl.build(:repository) } |
328 | 328 | before :each do |
329 | 329 | sign_in FactoryGirl.create(:user) |
330 | - subject.expects(:check_repository_ownership).returns true | |
330 | + subject.expects(:repository_owner?).returns true | |
331 | 331 | repository.expects(:process) |
332 | 332 | Repository.expects(:find).at_least_once.with(repository.id).returns(repository) |
333 | 333 | KalibroGem::Entities::Configuration.expects(:find).with(repository.id).returns(FactoryGirl.build(:configuration)) | ... | ... |
... | ... | @@ -0,0 +1,22 @@ |
1 | +require 'spec_helper' | |
2 | + | |
3 | +describe ReadingGroupOwnership do | |
4 | + describe 'associations' do | |
5 | + it { should belong_to(:user) } | |
6 | + end | |
7 | + | |
8 | + describe 'methods' do | |
9 | + describe 'reading_group' do | |
10 | + subject {FactoryGirl.build(:reading_group_ownership)} | |
11 | + let(:reading_group) {FactoryGirl.build(:reading_group)} | |
12 | + | |
13 | + before :each do | |
14 | + ReadingGroup.expects(:find).with(subject.reading_group_id).returns(reading_group) | |
15 | + end | |
16 | + | |
17 | + it 'should return the reading_group' do | |
18 | + subject.reading_group.should eq(reading_group) | |
19 | + end | |
20 | + end | |
21 | + end | |
22 | +end | ... | ... |
spec/models/user_spec.rb
... | ... | @@ -11,6 +11,7 @@ describe User do |
11 | 11 | |
12 | 12 | describe 'associations' do |
13 | 13 | it { should have_many(:project_ownerships) } |
14 | + it { should have_many(:reading_group_ownerships) } | |
14 | 15 | end |
15 | 16 | |
16 | 17 | describe 'methods' do |
... | ... | @@ -27,6 +28,21 @@ describe User do |
27 | 28 | it 'should return a list of projects owned by the user' do |
28 | 29 | subject.projects.should eq([project]) |
29 | 30 | end |
30 | - end | |
31 | + end | |
32 | + | |
33 | + describe 'reading_groups' do | |
34 | + subject { FactoryGirl.build(:user) } | |
35 | + let(:reading_group) {FactoryGirl.build(:reading_group)} | |
36 | + let(:reading_group_ownership) {FactoryGirl.build(:reading_group_ownership)} | |
37 | + | |
38 | + before :each do | |
39 | + reading_group_ownership.expects(:reading_group).returns(reading_group) | |
40 | + subject.expects(:reading_group_ownerships).returns([reading_group_ownership]) | |
41 | + end | |
42 | + | |
43 | + it 'should return a list of reading groups owned by the user' do | |
44 | + subject.reading_groups.should eq([reading_group]) | |
45 | + end | |
46 | + end | |
31 | 47 | end |
32 | 48 | end | ... | ... |