[Adminitration] Allow registrations: 3 modes = "close", "allowed", "moderate" - #877
This commit is contained in:
@@ -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"] ==
|
||||
|
||||
@@ -11,6 +11,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do
|
||||
Mobilizon.Config.clear_config_cache()
|
||||
Config.put([:instance, :name], "Test instance")
|
||||
Config.put([:instance, :registrations_open], true)
|
||||
Config.put([:instance, :registrations_moderation], true)
|
||||
Config.put([:instance, :demo], false)
|
||||
Config.put([:instance, :duration_of_long_event], 0)
|
||||
|
||||
@@ -26,6 +27,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do
|
||||
config {
|
||||
name,
|
||||
registrationsOpen
|
||||
registrationsModeration
|
||||
anonymous {
|
||||
participation {
|
||||
allowed,
|
||||
@@ -48,6 +50,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do
|
||||
|
||||
assert res["data"]["config"]["name"] == "Test instance"
|
||||
assert res["data"]["config"]["registrationsOpen"] == true
|
||||
assert res["data"]["config"]["registrationsModeration"] == true
|
||||
|
||||
assert res["data"]["config"]["anonymous"]["participation"]["validation"]["email"]["enabled"] ==
|
||||
true
|
||||
@@ -65,6 +68,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do
|
||||
Mobilizon.Config.clear_config_cache()
|
||||
Config.put([:instance, :name], "Test instance")
|
||||
Config.put([:instance, :registrations_open], true)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :demo], false)
|
||||
Config.put([:instance, :duration_of_long_event], 0)
|
||||
|
||||
@@ -80,6 +84,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do
|
||||
config {
|
||||
name,
|
||||
registrationsOpen,
|
||||
registrationsModeration
|
||||
registrations_allowlist,
|
||||
contact,
|
||||
demo_mode,
|
||||
@@ -102,6 +107,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do
|
||||
|
||||
assert res["data"]["config"]["name"] == "Test instance"
|
||||
assert res["data"]["config"]["registrationsOpen"] == true
|
||||
assert res["data"]["config"]["registrationsModeration"] == false
|
||||
assert res["data"]["config"]["registrations_allowlist"] == false
|
||||
assert res["data"]["config"]["contact"] == nil
|
||||
assert res["data"]["config"]["demo_mode"] == false
|
||||
@@ -126,6 +132,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do
|
||||
Mobilizon.Config.clear_config_cache()
|
||||
Config.put([:instance, :name], "My instance")
|
||||
Config.put([:instance, :registrations_open], false)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :demo], true)
|
||||
Config.put([:instance, :duration_of_long_event], 30)
|
||||
Config.put([:instance, :description], "My description")
|
||||
@@ -136,6 +143,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do
|
||||
config {
|
||||
name,
|
||||
registrationsOpen,
|
||||
registrationsModeration
|
||||
demo_mode,
|
||||
long_events,
|
||||
description,
|
||||
@@ -150,6 +158,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ConfigTest do
|
||||
|
||||
assert res["data"]["config"]["name"] == "My instance"
|
||||
assert res["data"]["config"]["registrationsOpen"] == false
|
||||
assert res["data"]["config"]["registrationsModeration"] == false
|
||||
assert res["data"]["config"]["demo_mode"] == true
|
||||
assert res["data"]["config"]["long_events"] == true
|
||||
assert res["data"]["config"]["description"] == "My description"
|
||||
|
||||
@@ -406,6 +406,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
|
||||
|
||||
test "create_user/3 doesn't allow registration when registration is closed", %{conn: conn} do
|
||||
Config.put([:instance, :registrations_open], false)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :registration_email_allowlist], [])
|
||||
|
||||
res =
|
||||
@@ -417,12 +418,14 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
|
||||
|
||||
assert hd(res["errors"])["message"] == "Registrations are not open"
|
||||
Config.put([:instance, :registrations_open], true)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
end
|
||||
|
||||
test "create_user/3 doesn't allow registration when user email is not on the allowlist", %{
|
||||
conn: conn
|
||||
} do
|
||||
Config.put([:instance, :registrations_open], false)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :registration_email_allowlist], ["random.org"])
|
||||
|
||||
res =
|
||||
@@ -434,6 +437,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
|
||||
|
||||
assert hd(res["errors"])["message"] == "Your email is not on the allowlist"
|
||||
Config.put([:instance, :registrations_open], true)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :registration_email_allowlist], [])
|
||||
end
|
||||
|
||||
@@ -441,6 +445,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
|
||||
conn: conn
|
||||
} do
|
||||
Config.put([:instance, :registrations_open], false)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :registration_email_allowlist], ["demo.tld"])
|
||||
|
||||
res =
|
||||
@@ -453,11 +458,13 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
|
||||
refute res["errors"]
|
||||
assert res["data"]["createUser"]["email"] == @user_creation.email
|
||||
Config.put([:instance, :registrations_open], true)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :registration_email_allowlist], [])
|
||||
end
|
||||
|
||||
test "create_user/3 allows registration when user email is on the allowlist", %{conn: conn} do
|
||||
Config.put([:instance, :registrations_open], false)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :registration_email_allowlist], [@user_creation.email])
|
||||
|
||||
res =
|
||||
@@ -470,6 +477,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
|
||||
refute res["errors"]
|
||||
assert res["data"]["createUser"]["email"] == @user_creation.email
|
||||
Config.put([:instance, :registrations_open], true)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :registration_email_allowlist], [])
|
||||
end
|
||||
|
||||
@@ -489,6 +497,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
|
||||
"Your e-mail has been denied registration or uses a disallowed e-mail provider"
|
||||
|
||||
Config.put([:instance, :registrations_open], true)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :registration_email_denylist], [])
|
||||
end
|
||||
|
||||
@@ -508,6 +517,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
|
||||
"Your e-mail has been denied registration or uses a disallowed e-mail provider"
|
||||
|
||||
Config.put([:instance, :registrations_open], true)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :registration_email_denylist], [])
|
||||
end
|
||||
|
||||
@@ -528,6 +538,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
|
||||
"Your e-mail has been denied registration or uses a disallowed e-mail provider"
|
||||
|
||||
Config.put([:instance, :registrations_open], true)
|
||||
Config.put([:instance, :registrations_moderation], false)
|
||||
Config.put([:instance, :registration_email_denylist], [])
|
||||
end
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ defmodule Mobilizon.Web.NodeInfoControllerTest do
|
||||
"nodeDescription" => Config.instance_description()
|
||||
},
|
||||
"openRegistrations" => Config.instance_registrations_open?(),
|
||||
"moderationRegistrations" => Config.instance_registrations_moderation?(),
|
||||
"protocols" => ["activitypub"],
|
||||
"services" => %{"inbound" => [], "outbound" => ["atom1.0"]},
|
||||
"software" => %{
|
||||
|
||||
Reference in New Issue
Block a user