Add specs for avatar upload
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing

This commit is contained in:
Râu Cao committed 2023-09-07 11:42:42 +02:00
1 parent 3b67a8791c
commit dfcdbec0dd
6 files changed
+63 -8

No files matched your search

+62 -8
View File
@@ -2,20 +2,19 @@ require 'rails_helper'
RSpec.describe 'Profile settings', type: :feature do
let(:user) { create :user, cn: "mwahlberg" }
let(:avatar_base64) { File.read("#{Rails.root}/spec/fixtures/files/avatar-base64.txt") }
before do
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
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
visit setting_path(:profile)
fill_in 'Display name', with: "M"
@@ -42,4 +41,59 @@ RSpec.describe 'Profile settings', type: :feature do
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
+1
View File
@@ -0,0 +1 @@
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 truncated
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
View File
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB