[Adminitration] Allow registrations: 3 modes = "close", "allowed", "moderate" - #877

This commit is contained in:
Laurent GAY
2025-09-03 21:07:33 +02:00
parent 8f8aa0ffbe
commit 3e4899c8e4
28 changed files with 526 additions and 19 deletions

View File

@@ -333,6 +333,7 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
instancePrivacyPolicyUrl
instanceRules
registrationsOpen
registrationsModeration
}
"""
@@ -365,13 +366,17 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
assert res["data"]["adminSettings"]["registrationsOpen"] ==
Application.get_env(:mobilizon, :instance)[:registrations_open]
assert res["data"]["adminSettings"]["registrationsModeration"] ==
Application.get_env(:mobilizon, :instance)[:registrations_moderation]
end
@instance_name "My Awesome Instance"
test "from DB", %{conn: conn} do
test "from DB 1", %{conn: conn} do
admin = insert(:user, role: :administrator)
insert(:admin_setting, group: "instance", name: "instance_name", value: @instance_name)
insert(:admin_setting, group: "instance", name: "registrations_open", value: "false")
insert(:admin_setting, group: "instance", name: "registrations_moderation", value: "false")
res =
conn
@@ -381,6 +386,43 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
assert res["data"]["adminSettings"]["instanceName"] == @instance_name
assert res["data"]["adminSettings"]["registrationsOpen"] == false
assert res["data"]["adminSettings"]["registrationsModeration"] == false
end
@instance_name "My Awesome Instance"
test "from DB 2", %{conn: conn} do
admin = insert(:user, role: :administrator)
insert(:admin_setting, group: "instance", name: "instance_name", value: @instance_name)
insert(:admin_setting, group: "instance", name: "registrations_open", value: "true")
insert(:admin_setting, group: "instance", name: "registrations_moderation", value: "false")
res =
conn
|> auth_conn(admin)
|> AbsintheHelpers.graphql_query(query: @admin_settings_query)
assert res["data"]["adminSettings"]["instanceName"] == @instance_name
assert res["data"]["adminSettings"]["registrationsOpen"] == true
assert res["data"]["adminSettings"]["registrationsModeration"] == false
end
@instance_name "My Awesome Instance"
test "from DB 3", %{conn: conn} do
admin = insert(:user, role: :administrator)
insert(:admin_setting, group: "instance", name: "instance_name", value: @instance_name)
insert(:admin_setting, group: "instance", name: "registrations_open", value: "true")
insert(:admin_setting, group: "instance", name: "registrations_moderation", value: "true")
res =
conn
|> auth_conn(admin)
|> AbsintheHelpers.graphql_query(query: @admin_settings_query)
assert res["data"]["adminSettings"]["instanceName"] == @instance_name
assert res["data"]["adminSettings"]["registrationsOpen"] == true
assert res["data"]["adminSettings"]["registrationsModeration"] == true
end
test "unless user isn't admin", %{conn: conn} do
@@ -416,6 +458,7 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
$instancePrivacyPolicyUrl: String
$instanceRules: String
$registrationsOpen: Boolean
$registrationsModeration: Boolean
) {
saveAdminSettings(
instanceName: $instanceName
@@ -430,6 +473,7 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
instancePrivacyPolicyUrl: $instancePrivacyPolicyUrl
instanceRules: $instanceRules
registrationsOpen: $registrationsOpen
registrationsModeration: $registrationsModeration
) {
...adminSettingsFragment
}
@@ -453,16 +497,24 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
assert res["data"]["adminSettings"]["registrationsOpen"] ==
Application.get_env(:mobilizon, :instance)[:registrations_open]
assert res["data"]["adminSettings"]["registrationsModeration"] ==
Application.get_env(:mobilizon, :instance)[:registrations_moderation]
res =
conn
|> auth_conn(admin)
|> AbsintheHelpers.graphql_query(
query: @update_instance_admin_settings_mutation,
variables: %{"instanceName" => @new_instance_name, "registrationsOpen" => false}
variables: %{
"instanceName" => @new_instance_name,
"registrationsOpen" => false,
"registrationsModeration" => false
}
)
assert res["data"]["saveAdminSettings"]["instanceName"] == @new_instance_name
assert res["data"]["saveAdminSettings"]["registrationsOpen"] == false
assert res["data"]["saveAdminSettings"]["registrationsModeration"] == false
assert %Actor{name: @new_instance_name} = Relay.get_actor()
end
@@ -475,7 +527,11 @@ defmodule Mobilizon.GraphQL.Resolvers.AdminTest do
|> auth_conn(user)
|> AbsintheHelpers.graphql_query(
query: @update_instance_admin_settings_mutation,
variables: %{"instanceName" => @new_instance_name, "registrationsOpen" => false}
variables: %{
"instanceName" => @new_instance_name,
"registrationsOpen" => false,
"registrationsModeration" => false
}
)
assert hd(res["errors"])["message"] ==