Add admin interface to manage instances subscriptions

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2019-12-03 11:29:51 +01:00
parent 0a96d70348
commit 334d66bf5d
141 changed files with 4198 additions and 1923 deletions

View File

@@ -121,4 +121,99 @@ defmodule MobilizonWeb.Resolvers.AdminResolverTest do
title
end
end
describe "Resolver: Get the list of relay followers" do
test "test list_relay_followers/3 returns relay followers", %{conn: conn} do
%User{} = user_admin = insert(:user, role: :administrator)
follower_actor =
insert(:actor,
domain: "localhost",
user: nil,
url: "http://localhost:8080/actor",
preferred_username: "instance_actor",
name: "I am an instance actor"
)
%Actor{} = relay_actor = Mobilizon.Service.ActivityPub.Relay.get_actor()
insert(:follower, actor: follower_actor, target_actor: relay_actor)
query = """
{
relayFollowers {
elements {
actor {
preferredUsername,
domain,
},
approved
},
total
}
}
"""
res =
conn
|> auth_conn(user_admin)
|> AbsintheHelpers.graphql_query(query: query)
assert is_nil(res["errors"])
assert hd(res["data"]["relayFollowers"]["elements"]) == %{
"actor" => %{"preferredUsername" => "instance_actor", "domain" => "localhost"},
"approved" => false
}
end
test "test list_relay_followers/3 returns relay followings", %{conn: conn} do
%User{} = user_admin = insert(:user, role: :administrator)
%Actor{
preferred_username: following_actor_preferred_username,
domain: following_actor_domain
} =
following_actor =
insert(:actor,
domain: "localhost",
user: nil,
url: "http://localhost:8080/actor",
preferred_username: "instance_actor",
name: "I am an instance actor"
)
%Actor{} = relay_actor = Mobilizon.Service.ActivityPub.Relay.get_actor()
insert(:follower, actor: relay_actor, target_actor: following_actor)
query = """
{
relayFollowings {
elements {
targetActor {
preferredUsername,
domain,
},
approved
},
total
}
}
"""
res =
conn
|> auth_conn(user_admin)
|> AbsintheHelpers.graphql_query(query: query)
assert is_nil(res["errors"])
assert hd(res["data"]["relayFollowings"]["elements"]) == %{
"targetActor" => %{
"preferredUsername" => following_actor_preferred_username,
"domain" => following_actor_domain
},
"approved" => false
}
end
end
end

View File

@@ -199,7 +199,9 @@ defmodule MobilizonWeb.Resolvers.ParticipantResolverTest do
user: user,
actor: actor
} do
event = insert(:event, %{organizer_actor: actor})
event =
insert(:event, %{organizer_actor: actor, participant_stats: %{creator: 1, participant: 1}})
insert(:participant, %{actor: actor, event: event, role: :creator})
user2 = insert(:user)
actor2 = insert(:actor, user: user2)

View File

@@ -3,6 +3,7 @@ defmodule MobilizonWeb.Resolvers.PersonResolverTest do
alias MobilizonWeb.AbsintheHelpers
alias Mobilizon.Actors.Actor
import Mobilizon.Factory
use Oban.Testing, repo: Mobilizon.Storage.Repo
@non_existent_username "nonexistent"
@@ -478,7 +479,7 @@ defmodule MobilizonWeb.Resolvers.PersonResolverTest do
"Cannot remove the last administrator of a group"
end
test "delete_person/3 should delete a user identity", context do
test "delete_person/3 should delete an actor identity", context do
user = insert(:user)
%Actor{id: person_id} = insert(:actor, user: user, preferred_username: "riri")
insert(:actor, user: user, preferred_username: "fifi")
@@ -498,6 +499,13 @@ defmodule MobilizonWeb.Resolvers.PersonResolverTest do
assert json_response(res, 200)["errors"] == nil
assert_enqueued(
worker: Mobilizon.Service.Workers.BackgroundWorker,
args: %{"actor_id" => person_id, "op" => "delete_actor"}
)
assert %{success: 1, failure: 0} == Oban.drain_queue(:background)
query = """
{
person(id: "#{person_id}") {