Advertisement
Guest User

Untitled

a guest
Nov 5th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rails 7.82 KB | None | 0 0
  1. require 'rails_helper'
  2.  
  3. RSpec.describe Directory, type: :model do
  4.   before :all do
  5.     @user1 = FactoryBot.create(:user)
  6.     @user2 = FactoryBot.create(:user)
  7.     @root = Directory.root(@user1.user_accounts.first.account)
  8.   end
  9.  
  10.  
  11.   describe 'crete new permissions' do
  12.     before :each do
  13.       @directory1 = @root.children.create!(FactoryBot.attributes_for(:directory, name: 'Root'))
  14.       @directory2 = @directory1.children.create!(FactoryBot.attributes_for(:directory, name: 'directory2'))
  15.       @directory3 = @directory2.children.create!(FactoryBot.attributes_for(:directory, name: 'directory3'))
  16.       @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s))
  17.       @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user2.id.to_s, access_type: :write))
  18.       children_reload
  19.     end
  20.  
  21.     context 'when add permission to parent file' do
  22.       it 'permission is added to file' do
  23.         [@directory1, @directory2, @directory3].each do |dir|
  24.           expect(dir.file_permissions.count).to be(2)
  25.         end
  26.       end
  27.  
  28.       it 'children inherit permissions from parent' do
  29.         [@directory2, @directory3].each do |dir|
  30.           expect(dir.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true))
  31.           expect(dir.file_permissions).to include(have_attributes(user_id: @user2.id, _access_type: :write, inherited: true))
  32.         end
  33.       end
  34.     end
  35.     context 'update access type in children' do
  36.       it 'cos tam' do
  37.         permission = @directory2.file_permissions.find_by(user_id: @user1.id, _access_type: :read_only, inherited: true)
  38.         puts permission
  39.         permission.update!(access_type: :write)
  40.         children_reload
  41.         [@directory2, @directory3].each do |dir|
  42.           expect(dir.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :write))
  43.         end
  44.  
  45.       end
  46.     end
  47.  
  48.     context 'delete root permission' do
  49.       it 'cos tam' do
  50.         permission = @directory2.file_permissions.find_by(user_id: @user1.id, _access_type: :read_only, inherited: true)
  51.         puts permission
  52.         permission.update!(access_type: :write)
  53.         @directory1.file_permissions.where(user_id: @user1.id.to_s).destroy_all
  54.         children_reload
  55.         [@directory2, @directory3].each do |dir|
  56.           expect(dir.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :write))
  57.         end
  58.       end
  59.     end
  60.   end
  61.  
  62.   describe 'modify higher permissions' do
  63.     before :each do
  64.       @directory1 = @root.children.create!(FactoryBot.attributes_for(:directory, name: 'Root'))
  65.       @directory2 = @directory1.children.create!(FactoryBot.attributes_for(:directory, name: 'directory2'))
  66.       @directory3 = @directory2.children.create!(FactoryBot.attributes_for(:directory, name: 'directory3'))
  67.     end
  68.  
  69.     context 'when add higher permission' do
  70.       it ' overwrite lower permission with higher inherited permission' do
  71.         @directory2.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s))
  72.         @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :write))
  73.         children_reload
  74.         expect(@directory2.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :write, inherited: true, overwritten: true))
  75.         expect(@directory3.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :write, inherited: true, overwritten: false))
  76.  
  77.       end
  78.     end
  79.  
  80.     context 'when delete higher permission' do
  81.       it ' overwrited lower permission is returned' do
  82.         @directory2.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s))
  83.         @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :write))
  84.         @directory1.file_permissions.where(user_id: @user1.id.to_s).destroy_all
  85.         children_reload
  86.         expect(@directory2.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: false, overwritten: false))
  87.         expect(@directory3.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true, overwritten: false))
  88.  
  89.       end
  90.     end
  91.   end
  92.  
  93.   describe 'move directory' do
  94.     before :each do
  95.       @directory1 = @root.children.create!(FactoryBot.attributes_for(:directory, name: 'Root'))
  96.       @directory2 = @directory1.children.create!(FactoryBot.attributes_for(:directory, name: 'directory2'))
  97.       @directory3 = @directory2.children.create!(FactoryBot.attributes_for(:directory, name: 'directory3'))
  98.       @directory4 = @root.children.create!(FactoryBot.attributes_for(:directory, name: 'directory4'))
  99.     end
  100.     it 'inherit permissions from new parent' do
  101.       @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :write))
  102.       @directory2.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user2.id.to_s, access_type: :write))
  103.       @directory4.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :read_only))
  104.       @directory2.update!(parent: @directory4)
  105.       children_reload
  106.       expect(@directory2.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true, overwritten: false))
  107.       expect(@directory2.file_permissions).to include(have_attributes(user_id: @user2.id, _access_type: :write, inherited: false, overwritten: false))
  108.       expect(@directory3.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true, overwritten: false))
  109.       expect(@directory3.file_permissions).to include(have_attributes(user_id: @user2.id, _access_type: :write, inherited: true, overwritten: false))
  110.  
  111.     end
  112.   end
  113.  
  114.   describe 'delete permissions' do
  115.     before :each do
  116.       @directory1 = @root.children.create!(FactoryBot.attributes_for(:directory, name: 'Root'))
  117.       @directory2 = @directory1.children.create!(FactoryBot.attributes_for(:directory, name: 'directory2'))
  118.       @directory3 = @directory2.children.create!(FactoryBot.attributes_for(:directory, name: 'directory3'))
  119.     end
  120.     it 'deletes inherited permission from children' do
  121.       @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :write))
  122.       children_reload
  123.       @directory2.file_permissions.destroy_all
  124.       children_reload
  125.       expect(@directory1.file_permissions.count).to be(1)
  126.       expect(@directory2.file_permissions.count).to be(0)
  127.       expect(@directory3.file_permissions.count).to be(0)
  128.  
  129.     end
  130.  
  131.     it 'Change root permission, with deleted children permissions' do
  132.       @directory1.file_permissions.create!(FactoryBot.attributes_for(:file_permission, user_id: @user1.id.to_s, access_type: :write))
  133.       children_reload
  134.       @directory2.file_permissions.destroy_all
  135.       @directory1.file_permissions.first.update!(access_type: :read_only)
  136.       children_reload
  137.       expect(@directory1.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: false, overwritten: false))
  138.       expect(@directory2.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true, overwritten: false))
  139.       expect(@directory3.file_permissions).to include(have_attributes(user_id: @user1.id, _access_type: :read_only, inherited: true, overwritten: false))
  140.     end
  141.  
  142.   end
  143.  
  144.   def children_reload
  145.     [@directory1, @directory2, @directory3].each do |dir|
  146.       dir.reload
  147.     end
  148.   end
  149. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement