kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
3.5 KiB
142 lines
3.5 KiB
shared_examples_for "an action checked for required login" do
|
|
describe "WITH no login required" do
|
|
before do
|
|
allow(Setting).to receive(:login_required?).and_return(false)
|
|
action
|
|
end
|
|
|
|
it "should be success" do
|
|
expect(response).to be_success
|
|
end
|
|
end
|
|
|
|
describe "WITH login required" do
|
|
before do
|
|
allow(Setting).to receive(:login_required?).and_return(true)
|
|
action
|
|
end
|
|
|
|
it "should redirect to the login page" do
|
|
expect(response).to redirect_to signin_path(back_url: redirect_path)
|
|
end
|
|
end
|
|
end
|
|
|
|
shared_examples_for "an action requiring login" do
|
|
let(:current) { FactoryBot.create(:user) }
|
|
|
|
before do
|
|
allow(User).to receive(:current).and_return(current)
|
|
end
|
|
|
|
describe "without beeing logged in" do
|
|
before do
|
|
allow(User).to receive(:current).and_return AnonymousUser.first
|
|
|
|
action
|
|
end
|
|
|
|
it { expect(response).to redirect_to signin_path(back_url: redirect_path) }
|
|
end
|
|
|
|
describe "with beeing logged in" do
|
|
before do
|
|
action
|
|
end
|
|
|
|
it { expect(response).to be_success }
|
|
end
|
|
end
|
|
|
|
shared_examples_for "an action requiring admin" do
|
|
let(:current) { FactoryBot.create(:admin) }
|
|
|
|
before do
|
|
allow(User).to receive(:current).and_return(current)
|
|
end
|
|
|
|
describe "without beeing logged in" do
|
|
before do
|
|
allow(User).to receive(:current).and_return AnonymousUser.first
|
|
|
|
action
|
|
end
|
|
|
|
it { expect(response).to redirect_to signin_path(back_url: redirect_path) }
|
|
end
|
|
|
|
describe "with beeing logged in as a normal user" do
|
|
before do
|
|
allow(User).to receive(:current).and_return FactoryBot.create(:user)
|
|
|
|
action
|
|
end
|
|
|
|
it { expect(response.response_code).to eq(403) }
|
|
end
|
|
|
|
describe "with beeing logged in as admin" do
|
|
before do
|
|
action
|
|
end
|
|
|
|
it do
|
|
if respond_to? :successful_response
|
|
successful_response
|
|
else
|
|
expect(response).to be_success
|
|
end
|
|
end
|
|
end
|
|
end
|
|
#
|
|
shared_context "there are users with and without avatars" do
|
|
let(:base_path) { File.expand_path '../fixtures/', __FILE__ }
|
|
let(:user_without_avatar) { FactoryBot.create :user }
|
|
let(:user_with_avatar) do
|
|
u = FactoryBot.create :user
|
|
u.attachments = [FactoryBot.build(:avatar_attachment, author: u)]
|
|
u
|
|
end
|
|
let(:avatar_file) do
|
|
file = File.new(File.join(base_path, 'valid.jpg'), 'r')
|
|
testfile = Rack::Test::UploadedFile.new(file.path, 'valid.jpg')
|
|
allow(testfile).to receive(:tempfile).and_return(file)
|
|
testfile
|
|
end
|
|
let(:large_avatar_file) do
|
|
file = File.new(File.join(base_path, 'too_big.jpg'), 'r')
|
|
testfile = Rack::Test::UploadedFile.new(file.path, 'too_big.jpg')
|
|
allow(testfile).to receive(:tempfile).and_return(file)
|
|
testfile
|
|
end
|
|
|
|
let(:bogus_avatar_file) do
|
|
file = File.new(File.join(base_path, 'invalid.jpg'), 'r')
|
|
testfile = Rack::Test::UploadedFile.new(file.path, 'invalid.jpg')
|
|
allow(testfile).to receive(:tempfile).and_return(file)
|
|
testfile
|
|
end
|
|
end
|
|
#
|
|
shared_examples_for "an action with an invalid user" do
|
|
it do
|
|
do_action
|
|
expect(response).not_to be_success
|
|
expect(response.code).to eq("404")
|
|
end
|
|
end
|
|
|
|
shared_examples_for "an action with stubbed User.find" do
|
|
before do
|
|
allow(user).to receive(:save).and_return true if user
|
|
allow(User).to receive(:find) { |id, _args| id.to_s == "0" ? nil : user }
|
|
end
|
|
end
|
|
#
|
|
shared_examples_for "an action that deletes the user's avatar" do
|
|
it do
|
|
expect_any_instance_of(Attachment).to receive(:destroy).and_call_original
|
|
do_action
|
|
end
|
|
end
|
|
|