4dc28943da
The issue here is that anyone else who views my avatar will cause it to be cached, and then I can't easily bust the cache if I change my avatar.
50 lines
1.6 KiB
Ruby
50 lines
1.6 KiB
Ruby
require "test_helper"
|
|
|
|
class Users::AvatarsControllerTest < ActionDispatch::IntegrationTest
|
|
setup do
|
|
sign_in_as :david
|
|
end
|
|
|
|
test "show own initials without caching" do
|
|
get user_avatar_path(users(:david))
|
|
assert_match "image/svg+xml", @response.content_type
|
|
assert @response.cache_control[:private]
|
|
assert_equal "0", @response.cache_control[:max_age]
|
|
end
|
|
|
|
test "show other initials with caching" do
|
|
get user_avatar_path(users(:kevin))
|
|
assert_match "image/svg+xml", @response.content_type
|
|
assert @response.cache_control[:private]
|
|
assert_equal 30.minutes.to_s, @response.cache_control[:max_age]
|
|
end
|
|
|
|
test "show own image redirects to the blob url" do
|
|
users(:david).avatar.attach(io: File.open(file_fixture("moon.jpg")), filename: "moon.jpg", content_type: "image/jpeg")
|
|
assert users(:david).avatar.attached?
|
|
|
|
get user_avatar_path(users(:david))
|
|
|
|
assert_redirected_to rails_blob_url(users(:david).avatar.variant(:thumb), disposition: "inline")
|
|
end
|
|
|
|
test "show other image redirects to the blob url" do
|
|
users(:kevin).avatar.attach(io: File.open(file_fixture("moon.jpg")), filename: "moon.jpg", content_type: "image/jpeg")
|
|
assert users(:kevin).avatar.attached?
|
|
|
|
get user_avatar_path(users(:kevin))
|
|
|
|
assert_redirected_to rails_blob_url(users(:kevin).avatar.variant(:thumb), disposition: "inline")
|
|
end
|
|
|
|
test "delete self" do
|
|
delete user_avatar_path(users(:david))
|
|
assert_redirected_to users(:david)
|
|
end
|
|
|
|
test "unable to delete other" do
|
|
delete user_avatar_path(users(:kevin))
|
|
assert_response :forbidden
|
|
end
|
|
end
|