refactor(media): use UUID instead of ID for media retrieval in GraphQL
Fixes #1760
This commit is contained in:
@@ -48,7 +48,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ActivityTest do
|
||||
name
|
||||
domain
|
||||
avatar {
|
||||
id
|
||||
uuid
|
||||
url
|
||||
}
|
||||
}
|
||||
@@ -73,7 +73,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ActivityTest do
|
||||
preferredUsername
|
||||
domain
|
||||
avatar {
|
||||
id
|
||||
uuid
|
||||
url
|
||||
}
|
||||
}
|
||||
@@ -101,10 +101,10 @@ defmodule Mobilizon.GraphQL.Resolvers.ActivityTest do
|
||||
id
|
||||
}
|
||||
banner {
|
||||
id
|
||||
uuid
|
||||
}
|
||||
avatar {
|
||||
id
|
||||
uuid
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -619,7 +619,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do
|
||||
alt: $alt
|
||||
file: $file
|
||||
) {
|
||||
id
|
||||
uuid
|
||||
url
|
||||
name
|
||||
content_type
|
||||
@@ -628,7 +628,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do
|
||||
}
|
||||
"""
|
||||
|
||||
test "create_event/3 creates an event with an picture ID", %{
|
||||
test "create_event/3 creates an event with an picture UUID", %{
|
||||
conn: conn,
|
||||
actor: actor,
|
||||
user: user
|
||||
@@ -656,8 +656,8 @@ defmodule Mobilizon.Web.Resolvers.EventTest do
|
||||
|
||||
assert res["errors"] == nil
|
||||
assert res["data"]["uploadMedia"]["name"] == media.name
|
||||
media_id = res["data"]["uploadMedia"]["id"]
|
||||
assert media_id !== "" and not is_nil(media_id)
|
||||
media_uuid = res["data"]["uploadMedia"]["uuid"]
|
||||
assert media_uuid !== "" and not is_nil(media_uuid)
|
||||
|
||||
res =
|
||||
conn
|
||||
@@ -672,7 +672,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do
|
||||
organizer_actor_id: "#{actor.id}",
|
||||
category: "PARTY",
|
||||
picture: %{
|
||||
media_id: "#{media_id}"
|
||||
media_uuid: "#{media_uuid}"
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -45,7 +45,7 @@ defmodule Mobilizon.Web.Resolvers.FollowerTest do
|
||||
name
|
||||
domain
|
||||
avatar {
|
||||
id
|
||||
uuid
|
||||
url
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ defmodule Mobilizon.Web.Resolvers.GroupTest do
|
||||
preferredUsername
|
||||
type
|
||||
banner {
|
||||
id
|
||||
uuid
|
||||
url
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,9 +20,9 @@ defmodule Mobilizon.GraphQL.Resolvers.MediaTest do
|
||||
end
|
||||
|
||||
@media_query """
|
||||
query Media($id: ID!) {
|
||||
media(id: $id) {
|
||||
id
|
||||
query Media($uuid: UUID!) {
|
||||
media(uuid: $uuid) {
|
||||
uuid
|
||||
name,
|
||||
alt,
|
||||
url,
|
||||
@@ -49,11 +49,11 @@ defmodule Mobilizon.GraphQL.Resolvers.MediaTest do
|
||||
|
||||
describe "Resolver: Get media" do
|
||||
test "media/3 returns the information on a media", %{conn: conn} do
|
||||
%Media{id: id} = media = insert(:media)
|
||||
%Media{uuid: uuid} = media = insert(:media)
|
||||
|
||||
res =
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(query: @media_query, variables: %{id: id})
|
||||
|> AbsintheHelpers.graphql_query(query: @media_query, variables: %{uuid: uuid})
|
||||
|
||||
assert res["data"]["media"]["name"] == media.file.name
|
||||
|
||||
@@ -68,7 +68,10 @@ defmodule Mobilizon.GraphQL.Resolvers.MediaTest do
|
||||
test "media/3 returns nothing on a non-existent media", %{conn: conn} do
|
||||
res =
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(query: @media_query, variables: %{id: 3})
|
||||
|> AbsintheHelpers.graphql_query(
|
||||
query: @media_query,
|
||||
variables: %{uuid: "bad0bad0-bad0-bad0-bad0-bad0bad0bad0"}
|
||||
)
|
||||
|
||||
assert hd(res["errors"])["message"] == "Resource not found"
|
||||
assert hd(res["errors"])["status_code"] == 404
|
||||
@@ -131,30 +134,30 @@ defmodule Mobilizon.GraphQL.Resolvers.MediaTest do
|
||||
|
||||
describe "Resolver: Remove media" do
|
||||
@remove_media_mutation """
|
||||
mutation RemoveMedia($id: ID!) {
|
||||
removeMedia(id: $id) {
|
||||
id
|
||||
mutation RemoveMedia($uuid: UUID!) {
|
||||
removeMedia(uuid: $uuid) {
|
||||
uuid
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
test "Removes a previously uploaded media", %{conn: conn, user: user, actor: actor} do
|
||||
%Media{id: media_id} = insert(:media, actor: actor)
|
||||
%Media{uuid: media_uuid} = insert(:media, actor: actor)
|
||||
|
||||
res =
|
||||
conn
|
||||
|> auth_conn(user)
|
||||
|> AbsintheHelpers.graphql_query(
|
||||
query: @remove_media_mutation,
|
||||
variables: %{id: media_id}
|
||||
variables: %{uuid: media_uuid}
|
||||
)
|
||||
|
||||
assert res["errors"] == nil
|
||||
assert res["data"]["removeMedia"]["id"] == to_string(media_id)
|
||||
assert res["data"]["removeMedia"]["uuid"] == to_string(media_uuid)
|
||||
|
||||
res =
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(query: @media_query, variables: %{id: media_id})
|
||||
|> AbsintheHelpers.graphql_query(query: @media_query, variables: %{uuid: media_uuid})
|
||||
|
||||
assert hd(res["errors"])["message"] == "Resource not found"
|
||||
assert hd(res["errors"])["status_code"] == 404
|
||||
@@ -166,7 +169,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MediaTest do
|
||||
|> auth_conn(user)
|
||||
|> AbsintheHelpers.graphql_query(
|
||||
query: @remove_media_mutation,
|
||||
variables: %{id: 400}
|
||||
variables: %{uuid: "bad0bad0-bad0-bad0-bad0-bad0bad0bad0"}
|
||||
)
|
||||
|
||||
assert hd(res["errors"])["message"] == "Resource not found"
|
||||
@@ -174,13 +177,13 @@ defmodule Mobilizon.GraphQL.Resolvers.MediaTest do
|
||||
end
|
||||
|
||||
test "Removes nothing if media if not logged-in", %{conn: conn, actor: actor} do
|
||||
%Media{id: media_id} = insert(:media, actor: actor)
|
||||
%Media{uuid: media_uuid} = insert(:media, actor: actor)
|
||||
|
||||
res =
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(
|
||||
query: @remove_media_mutation,
|
||||
variables: %{id: media_id}
|
||||
variables: %{uuid: media_uuid}
|
||||
)
|
||||
|
||||
assert hd(res["errors"])["message"] == "You need to be logged in"
|
||||
|
||||
@@ -11,6 +11,12 @@ defmodule Mobilizon.GraphQL.Resolvers.PersonTest do
|
||||
|
||||
alias Mobilizon.Web.Endpoint
|
||||
|
||||
# TODO There is a bug in the GraphQL API with person queries
|
||||
# You can ask for a media (avatar and banner) normally with metadata and uuid accessible,
|
||||
# but you obtain a File (so metadata and uuid are not accessible)
|
||||
# Until this issue persist, we can't test uuid or metadata retrivial for person queries
|
||||
# https://framagit.org/kaihuri/mobilizon/-/issues/1757
|
||||
|
||||
@non_existent_username "nonexistent"
|
||||
|
||||
@get_person_query """
|
||||
@@ -161,11 +167,9 @@ defmodule Mobilizon.GraphQL.Resolvers.PersonTest do
|
||||
id
|
||||
preferredUsername
|
||||
avatar {
|
||||
id,
|
||||
url
|
||||
},
|
||||
banner {
|
||||
id,
|
||||
name,
|
||||
url
|
||||
}
|
||||
@@ -281,7 +285,11 @@ defmodule Mobilizon.GraphQL.Resolvers.PersonTest do
|
||||
assert res["data"]["createPerson"]["preferredUsername"] ==
|
||||
"new_identity"
|
||||
|
||||
assert res["data"]["createPerson"]["banner"]["id"]
|
||||
# TODO see the top comment and this bug :
|
||||
# https://framagit.org/kaihuri/mobilizon/-/issues/1757
|
||||
# assert res["data"]["createPerson"]["banner"]["uuid"]
|
||||
# assert res["data"]["createPerson"]["banner"]["metadata"]
|
||||
# assert res["data"]["createPerson"]["banner"]["metadata"]["width"]
|
||||
|
||||
assert res["data"]["createPerson"]["banner"]["name"] ==
|
||||
"The beautiful atlantic way"
|
||||
@@ -334,11 +342,9 @@ defmodule Mobilizon.GraphQL.Resolvers.PersonTest do
|
||||
name,
|
||||
summary,
|
||||
avatar {
|
||||
id,
|
||||
url
|
||||
},
|
||||
banner {
|
||||
id,
|
||||
name,
|
||||
url
|
||||
}
|
||||
@@ -376,7 +382,11 @@ defmodule Mobilizon.GraphQL.Resolvers.PersonTest do
|
||||
assert res_person["name"] == "riri updated"
|
||||
assert res_person["summary"] == "summary updated"
|
||||
|
||||
assert res_person["banner"]["id"]
|
||||
# TODO see the top comment and this bug :
|
||||
# https://framagit.org/kaihuri/mobilizon/-/issues/1757
|
||||
# assert res_person["banner"]["uuid"]
|
||||
# assert res_person["banner"]["metadata"]
|
||||
# assert res_person["banner"]["metadata"]["width"]
|
||||
assert res_person["banner"]["name"] == "The beautiful atlantic way"
|
||||
assert res_person["banner"]["url"] =~ Endpoint.url() <> "/media/"
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user