Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'rails_helper'
- RSpec.describe Directory, type: :model do
- before :all do
- @user1 = FactoryBot.create(:user)
- @user2 = FactoryBot.create(:user)
- @root = Directory.root(@user1.user_accounts.first.account)
- end
- describe 'crete new permissions' do
- before :each do
- @directory1 = @root.children.create!(FactoryBot.attributes_for(:directory, name: 'Root'))
- @directory2 = @directory1.children.create!(FactoryBot.attributes_for(:directory, name: 'directory2'))
- @directory3 = @directory2.children.create!(FactoryBot.attributes_for(:directory, name: 'directory3'))
- @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s))
- @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user2.id.to_s, access_type: :write))
- children_reload
- end
- context 'when add permission to parent file' do
- it 'permission is added to file' do
- [@directory1, @directory2, @directory3].each do |dir|
- expect(dir.file_permissions.count).to be(2)
- end
- end
- it 'children inherit permissions from parent' do
- [@directory2, @directory3].each do |dir|
- expect(dir.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true))
- expect(dir.file_permissions).to include(have_attributes(user_id: @user2.id, _access_type: :write, inherited: true))
- end
- end
- end
- context 'update access type in children' do
- it 'cos tam' do
- permission = @directory2.file_permissions.find_by(user_id: @user1.id, _access_type: :read_only, inherited: true)
- puts permission
- permission.update!(access_type: :write)
- children_reload
- [@directory2, @directory3].each do |dir|
- expect(dir.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :write))
- end
- end
- end
- context 'delete root permission' do
- it 'cos tam' do
- permission = @directory2.file_permissions.find_by(user_id: @user1.id, _access_type: :read_only, inherited: true)
- puts permission
- permission.update!(access_type: :write)
- @directory1.file_permissions.where(user_id: @user1.id.to_s).destroy_all
- children_reload
- [@directory2, @directory3].each do |dir|
- expect(dir.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :write))
- end
- end
- end
- end
- describe 'modify higher permissions' do
- before :each do
- @directory1 = @root.children.create!(FactoryBot.attributes_for(:directory, name: 'Root'))
- @directory2 = @directory1.children.create!(FactoryBot.attributes_for(:directory, name: 'directory2'))
- @directory3 = @directory2.children.create!(FactoryBot.attributes_for(:directory, name: 'directory3'))
- end
- context 'when add higher permission' do
- it ' overwrite lower permission with higher inherited permission' do
- @directory2.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s))
- @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :write))
- children_reload
- expect(@directory2.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :write, inherited: true, overwritten: true))
- expect(@directory3.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :write, inherited: true, overwritten: false))
- end
- end
- context 'when delete higher permission' do
- it ' overwrited lower permission is returned' do
- @directory2.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s))
- @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :write))
- @directory1.file_permissions.where(user_id: @user1.id.to_s).destroy_all
- children_reload
- expect(@directory2.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: false, overwritten: false))
- expect(@directory3.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true, overwritten: false))
- end
- end
- end
- describe 'move directory' do
- before :each do
- @directory1 = @root.children.create!(FactoryBot.attributes_for(:directory, name: 'Root'))
- @directory2 = @directory1.children.create!(FactoryBot.attributes_for(:directory, name: 'directory2'))
- @directory3 = @directory2.children.create!(FactoryBot.attributes_for(:directory, name: 'directory3'))
- @directory4 = @root.children.create!(FactoryBot.attributes_for(:directory, name: 'directory4'))
- end
- it 'inherit permissions from new parent' do
- @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :write))
- @directory2.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user2.id.to_s, access_type: :write))
- @directory4.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :read_only))
- @directory2.update!(parent: @directory4)
- children_reload
- expect(@directory2.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true, overwritten: false))
- expect(@directory2.file_permissions).to include(have_attributes(user_id: @user2.id, _access_type: :write, inherited: false, overwritten: false))
- expect(@directory3.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true, overwritten: false))
- expect(@directory3.file_permissions).to include(have_attributes(user_id: @user2.id, _access_type: :write, inherited: true, overwritten: false))
- end
- end
- describe 'delete permissions' do
- before :each do
- @directory1 = @root.children.create!(FactoryBot.attributes_for(:directory, name: 'Root'))
- @directory2 = @directory1.children.create!(FactoryBot.attributes_for(:directory, name: 'directory2'))
- @directory3 = @directory2.children.create!(FactoryBot.attributes_for(:directory, name: 'directory3'))
- end
- it 'deletes inherited permission from children' do
- @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :write))
- children_reload
- @directory2.file_permissions.destroy_all
- children_reload
- expect(@directory1.file_permissions.count).to be(1)
- expect(@directory2.file_permissions.count).to be(0)
- expect(@directory3.file_permissions.count).to be(0)
- end
- it 'Change root permission, with deleted children permissions' do
- @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :write))
- children_reload
- @directory2.file_permissions.destroy_all
- @directory1.file_permissions.first.update!(access_type: :read_only)
- children_reload
- expect(@directory1.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: false, overwritten: false))
- expect(@directory2.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true, overwritten: false))
- expect(@directory3.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true, overwritten: false))
- end
- end
- def children_reload
- [@directory1, @directory2, @directory3].each do |dir|
- dir.reload
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement