Add specs for avatar upload
This commit is contained in:
parent
3b67a8791c
commit
dfcdbec0dd
@ -2,20 +2,19 @@ require 'rails_helper'
|
|||||||
|
|
||||||
RSpec.describe 'Profile settings', type: :feature do
|
RSpec.describe 'Profile settings', type: :feature do
|
||||||
let(:user) { create :user, cn: "mwahlberg" }
|
let(:user) { create :user, cn: "mwahlberg" }
|
||||||
|
let(:avatar_base64) { File.read("#{Rails.root}/spec/fixtures/files/avatar-base64.txt") }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
login_as user, :scope => :user
|
login_as user, :scope => :user
|
||||||
|
allow(user).to receive(:display_name).and_return("Mark")
|
||||||
|
allow_any_instance_of(User).to receive(:dn).and_return("cn=mwahlberg,ou=kosmos.org,cn=users,dc=kosmos,dc=org")
|
||||||
|
allow_any_instance_of(User).to receive(:ldap_entry).and_return({
|
||||||
|
uid: user.cn, ou: user.ou, display_name: "Mark"
|
||||||
|
})
|
||||||
|
allow_any_instance_of(User).to receive(:avatar).and_return(avatar_base64)
|
||||||
end
|
end
|
||||||
|
|
||||||
feature "Update display name" do
|
feature "Update display name" do
|
||||||
before do
|
|
||||||
allow(user).to receive(:display_name).and_return("Mark")
|
|
||||||
allow_any_instance_of(User).to receive(:dn).and_return("cn=mwahlberg,ou=kosmos.org,cn=users,dc=kosmos,dc=org")
|
|
||||||
allow_any_instance_of(User).to receive(:ldap_entry).and_return({
|
|
||||||
uid: user.cn, ou: user.ou, display_name: "Mark"
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
scenario 'fails with validation error' do
|
scenario 'fails with validation error' do
|
||||||
visit setting_path(:profile)
|
visit setting_path(:profile)
|
||||||
fill_in 'Display name', with: "M"
|
fill_in 'Display name', with: "M"
|
||||||
@ -42,4 +41,59 @@ RSpec.describe 'Profile settings', type: :feature do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
feature "Update avatar" do
|
||||||
|
scenario "fails with validation error for wrong content type" do
|
||||||
|
visit setting_path(:profile)
|
||||||
|
attach_file "Avatar", "#{Rails.root}/spec/fixtures/files/bitcoin.pdf"
|
||||||
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(current_url).to eq(setting_url(:profile))
|
||||||
|
within ".error-msg" do
|
||||||
|
expect(page).to have_content("must be a JPEG or PNG file")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "fails with validation error for file size too large" do
|
||||||
|
visit setting_path(:profile)
|
||||||
|
attach_file "Avatar", "#{Rails.root}/spec/fixtures/files/fsociety-irc.png"
|
||||||
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(current_url).to eq(setting_url(:profile))
|
||||||
|
within ".error-msg" do
|
||||||
|
expect(page).to have_content("file size is too large")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'works with valid JPG file' do
|
||||||
|
file_path = "#{Rails.root}/spec/fixtures/files/taipei.jpg"
|
||||||
|
|
||||||
|
expect_any_instance_of(LdapManager::UpdateAvatar).to receive(:replace_attribute)
|
||||||
|
.with(user.dn, :jpegPhoto, avatar_base64).and_return(true)
|
||||||
|
|
||||||
|
visit setting_path(:profile)
|
||||||
|
attach_file "Avatar", file_path
|
||||||
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(current_url).to eq(setting_url(:profile))
|
||||||
|
within ".flash-msg" do
|
||||||
|
expect(page).to have_content("Settings saved")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'works with valid PNG file' do
|
||||||
|
file_path = "#{Rails.root}/spec/fixtures/files/bender.png"
|
||||||
|
|
||||||
|
expect(LdapManager::UpdateAvatar).to receive(:call).and_return(true)
|
||||||
|
|
||||||
|
visit setting_path(:profile)
|
||||||
|
attach_file "Avatar", file_path
|
||||||
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(current_url).to eq(setting_url(:profile))
|
||||||
|
within ".flash-msg" do
|
||||||
|
expect(page).to have_content("Settings saved")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
1
spec/fixtures/files/avatar-base64.txt
vendored
Normal file
1
spec/fixtures/files/avatar-base64.txt
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
spec/fixtures/files/bender.png
vendored
Normal file
BIN
spec/fixtures/files/bender.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
BIN
spec/fixtures/files/bitcoin.pdf
vendored
Normal file
BIN
spec/fixtures/files/bitcoin.pdf
vendored
Normal file
Binary file not shown.
BIN
spec/fixtures/files/fsociety-irc.png
vendored
Normal file
BIN
spec/fixtures/files/fsociety-irc.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 MiB |
BIN
spec/fixtures/files/taipei.jpg
vendored
Normal file
BIN
spec/fixtures/files/taipei.jpg
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 228 KiB |
Loading…
x
Reference in New Issue
Block a user