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 | ... | ... |