62 lines
1.7 KiB
Ruby
62 lines
1.7 KiB
Ruby
require 'test_helper'
|
|
|
|
class IpAddressesControllerTest < ActionDispatch::IntegrationTest
|
|
context "The IP addresses controller" do
|
|
setup do
|
|
@mod = create(:mod_user, last_ip_addr: "1.2.3.4")
|
|
@user = create(:user, last_ip_addr: "5.6.7.8")
|
|
|
|
CurrentUser.scoped(@user, "5.6.7.9") do
|
|
@note = create(:note)
|
|
@artist = create(:artist)
|
|
end
|
|
end
|
|
|
|
context "index action" do
|
|
should "list all IP addresses" do
|
|
get_auth ip_addresses_path, @mod
|
|
assert_response :success
|
|
end
|
|
|
|
should "allow searching by subnet" do
|
|
get_auth ip_addresses_path(search: { ip_addr: "5.0.0.0/8" }), @mod, as: :json
|
|
|
|
assert_response :success
|
|
assert(response.parsed_body.present?)
|
|
end
|
|
|
|
should "allow grouping by user" do
|
|
get_auth ip_addresses_path(search: { ip_addr: @user.last_ip_addr, group_by: "user" }), @mod
|
|
assert_response :success
|
|
end
|
|
|
|
should "allow grouping by IP" do
|
|
get_auth ip_addresses_path(search: { user_id: @user.id, group_by: "ip_addr" }), @mod
|
|
assert_response :success
|
|
end
|
|
|
|
should "not allow non-moderators to view IP addresses" do
|
|
get_auth ip_addresses_path, @user
|
|
assert_response 403
|
|
end
|
|
end
|
|
|
|
context "show action" do
|
|
should "be visible to mods" do
|
|
get_auth ip_address_path("1.2.3.4"), @mod
|
|
assert_response :success
|
|
end
|
|
|
|
should "not be visible to members" do
|
|
get_auth ip_address_path("1.2.3.4"), @user
|
|
assert_response 403
|
|
end
|
|
|
|
should "work for a Tor address" do
|
|
get_auth ip_address_path("2405:8100:8000::1"), @mod
|
|
assert_response :success
|
|
end
|
|
end
|
|
end
|
|
end
|