defmodule ToweropsWeb.GraphQL.Resolvers.UnauthenticatedTest do @moduledoc """ Verifies that every public resolver function returns an authentication error when invoked without an `organization_id` in the resolution context. Catches accidental drift where someone adds a new resolver clause that accepts requests without auth. """ use ExUnit.Case, async: true alias ToweropsWeb.GraphQL.Resolvers @auth_error {:error, "Authentication required"} @no_auth %{} describe "Activity" do test "list/3 unauthenticated" do assert @auth_error = Resolvers.Activity.list(nil, %{}, @no_auth) end end describe "Agent" do test "list/3 unauthenticated" do assert @auth_error = Resolvers.Agent.list(nil, %{}, @no_auth) end test "get/3 unauthenticated" do assert @auth_error = Resolvers.Agent.get(nil, %{id: "x"}, @no_auth) end test "create/3 unauthenticated" do assert @auth_error = Resolvers.Agent.create(nil, %{name: "x"}, @no_auth) end test "delete/3 unauthenticated" do assert @auth_error = Resolvers.Agent.delete(nil, %{id: "x"}, @no_auth) end end describe "Alert" do test "list/3 unauthenticated" do assert @auth_error = Resolvers.Alert.list(nil, %{}, @no_auth) end test "get/3 unauthenticated" do assert @auth_error = Resolvers.Alert.get(nil, %{id: "x"}, @no_auth) end test "acknowledge/3 unauthenticated" do assert @auth_error = Resolvers.Alert.acknowledge(nil, %{id: "x"}, @no_auth) end test "resolve_alert/3 unauthenticated" do assert @auth_error = Resolvers.Alert.resolve_alert(nil, %{id: "x"}, @no_auth) end end describe "Device" do test "list/3 unauthenticated" do assert @auth_error = Resolvers.Device.list(nil, %{}, @no_auth) end test "get/3 unauthenticated" do assert @auth_error = Resolvers.Device.get(nil, %{id: "x"}, @no_auth) end test "create/3 unauthenticated" do assert @auth_error = Resolvers.Device.create(nil, %{input: %{}}, @no_auth) end test "update/3 unauthenticated" do assert @auth_error = Resolvers.Device.update(nil, %{id: "x", input: %{}}, @no_auth) end test "delete/3 unauthenticated" do assert @auth_error = Resolvers.Device.delete(nil, %{id: "x"}, @no_auth) end test "metrics/3 unauthenticated" do assert @auth_error = Resolvers.Device.metrics(nil, %{device_id: "x"}, @no_auth) end test "interfaces/3 unauthenticated" do assert @auth_error = Resolvers.Device.interfaces(nil, %{device_id: "x"}, @no_auth) end end describe "EscalationPolicy" do test "list/3 unauthenticated" do assert @auth_error = Resolvers.EscalationPolicy.list(nil, %{}, @no_auth) end test "get/3 unauthenticated" do assert @auth_error = Resolvers.EscalationPolicy.get(nil, %{id: "x"}, @no_auth) end test "create/3 unauthenticated" do assert @auth_error = Resolvers.EscalationPolicy.create(nil, %{input: %{}}, @no_auth) end test "update/3 unauthenticated" do assert @auth_error = Resolvers.EscalationPolicy.update(nil, %{id: "x", input: %{}}, @no_auth) end test "delete/3 unauthenticated" do assert @auth_error = Resolvers.EscalationPolicy.delete(nil, %{id: "x"}, @no_auth) end test "create_rule/3 unauthenticated" do assert @auth_error = Resolvers.EscalationPolicy.create_rule( nil, %{escalation_policy_id: "x", input: %{}}, @no_auth ) end test "update_rule/3 unauthenticated" do assert @auth_error = Resolvers.EscalationPolicy.update_rule(nil, %{id: "x", input: %{}}, @no_auth) end test "delete_rule/3 unauthenticated" do assert @auth_error = Resolvers.EscalationPolicy.delete_rule(nil, %{id: "x"}, @no_auth) end test "create_target/3 unauthenticated" do assert @auth_error = Resolvers.EscalationPolicy.create_target( nil, %{escalation_rule_id: "x", input: %{}}, @no_auth ) end test "delete_target/3 unauthenticated" do assert @auth_error = Resolvers.EscalationPolicy.delete_target(nil, %{id: "x"}, @no_auth) end end describe "Integration" do test "list/3 unauthenticated" do assert @auth_error = Resolvers.Integration.list(nil, %{}, @no_auth) end test "create/3 unauthenticated" do assert @auth_error = Resolvers.Integration.create(nil, %{input: %{}}, @no_auth) end test "update/3 unauthenticated" do assert @auth_error = Resolvers.Integration.update(nil, %{id: "x", input: %{}}, @no_auth) end test "delete/3 unauthenticated" do assert @auth_error = Resolvers.Integration.delete(nil, %{id: "x"}, @no_auth) end test "test_connection/3 unauthenticated" do assert @auth_error = Resolvers.Integration.test_connection(nil, %{id: "x"}, @no_auth) end end describe "MaintenanceWindow" do test "list/3 unauthenticated" do assert @auth_error = Resolvers.MaintenanceWindow.list(nil, %{}, @no_auth) end test "get/3 unauthenticated" do assert @auth_error = Resolvers.MaintenanceWindow.get(nil, %{id: "x"}, @no_auth) end test "create/3 unauthenticated" do assert @auth_error = Resolvers.MaintenanceWindow.create(nil, %{input: %{}}, @no_auth) end test "update/3 unauthenticated" do assert @auth_error = Resolvers.MaintenanceWindow.update(nil, %{id: "x", input: %{}}, @no_auth) end test "delete/3 unauthenticated" do assert @auth_error = Resolvers.MaintenanceWindow.delete(nil, %{id: "x"}, @no_auth) end end describe "Member" do test "list/3 unauthenticated" do assert @auth_error = Resolvers.Member.list(nil, %{}, @no_auth) end test "invite/3 unauthenticated" do assert @auth_error = Resolvers.Member.invite(nil, %{email: "x"}, @no_auth) end test "cancel_invitation/3 unauthenticated" do assert @auth_error = Resolvers.Member.cancel_invitation(nil, %{id: "x"}, @no_auth) end test "remove/3 unauthenticated" do assert @auth_error = Resolvers.Member.remove(nil, %{id: "x"}, @no_auth) end test "update_role/3 unauthenticated" do assert @auth_error = Resolvers.Member.update_role(nil, %{id: "x", role: "admin"}, @no_auth) end end describe "Organization" do test "list_mine/3 unauthenticated" do assert @auth_error = Resolvers.Organization.list_mine(nil, %{}, @no_auth) end test "get/3 unauthenticated" do assert @auth_error = Resolvers.Organization.get(nil, %{}, @no_auth) end test "update/3 unauthenticated" do assert @auth_error = Resolvers.Organization.update(nil, %{input: %{}}, @no_auth) end end describe "Schedule" do test "list/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.list(nil, %{}, @no_auth) end test "get/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.get(nil, %{id: "x"}, @no_auth) end test "on_call/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.on_call(nil, %{schedule_id: "x"}, @no_auth) end test "create/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.create(nil, %{input: %{}}, @no_auth) end test "update/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.update(nil, %{id: "x", input: %{}}, @no_auth) end test "delete/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.delete(nil, %{id: "x"}, @no_auth) end test "create_layer/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.create_layer( nil, %{schedule_id: "x", input: %{}}, @no_auth ) end test "update_layer/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.update_layer(nil, %{id: "x", input: %{}}, @no_auth) end test "delete_layer/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.delete_layer(nil, %{id: "x"}, @no_auth) end test "add_member/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.add_member( nil, %{layer_id: "x", user_id: "u", position: 1}, @no_auth ) end test "remove_member/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.remove_member(nil, %{id: "x"}, @no_auth) end test "create_override/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.create_override( nil, %{schedule_id: "x", input: %{}}, @no_auth ) end test "delete_override/3 unauthenticated" do assert @auth_error = Resolvers.Schedule.delete_override(nil, %{id: "x"}, @no_auth) end end describe "Site" do test "list/3 unauthenticated" do assert @auth_error = Resolvers.Site.list(nil, %{}, @no_auth) end test "get/3 unauthenticated" do assert @auth_error = Resolvers.Site.get(nil, %{id: "x"}, @no_auth) end test "create/3 unauthenticated" do assert @auth_error = Resolvers.Site.create(nil, %{input: %{}}, @no_auth) end test "update/3 unauthenticated" do assert @auth_error = Resolvers.Site.update(nil, %{id: "x", input: %{}}, @no_auth) end test "delete/3 unauthenticated" do assert @auth_error = Resolvers.Site.delete(nil, %{id: "x"}, @no_auth) end end describe "Helpers" do test "authentication_error/0 returns canonical tuple" do assert Resolvers.Helpers.authentication_error() == @auth_error end end end