forked from AkkomaGang/akkoma
Merge branch 'bugfix/sensitive_object' into 'develop'
Transmogrifier.set_sensitive/1: Keep sensitive set to true Closes #954 See merge request pleroma/pleroma!2470
This commit is contained in:
commit
df846eda71
3 changed files with 20 additions and 7 deletions
|
@ -49,6 +49,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Logger configuration through AdminFE
|
- Logger configuration through AdminFE
|
||||||
- HTTP Basic Authentication permissions issue
|
- HTTP Basic Authentication permissions issue
|
||||||
- ObjectAgePolicy didn't filter out old messages
|
- ObjectAgePolicy didn't filter out old messages
|
||||||
|
- Transmogrifier: Keep object sensitive settings for outgoing representation (AP C2S)
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- NodeInfo: ObjectAgePolicy settings to the `federation` list.
|
- NodeInfo: ObjectAgePolicy settings to the `federation` list.
|
||||||
|
|
|
@ -1195,6 +1195,10 @@ def set_conversation(object) do
|
||||||
Map.put(object, "conversation", object["context"])
|
Map.put(object, "conversation", object["context"])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_sensitive(%{"sensitive" => true} = object) do
|
||||||
|
object
|
||||||
|
end
|
||||||
|
|
||||||
def set_sensitive(object) do
|
def set_sensitive(object) do
|
||||||
tags = object["tag"] || []
|
tags = object["tag"] || []
|
||||||
Map.put(object, "sensitive", "nsfw" in tags)
|
Map.put(object, "sensitive", "nsfw" in tags)
|
||||||
|
|
|
@ -820,21 +820,29 @@ test "it inserts an incoming sensitive activity into the database", %{
|
||||||
activity: activity
|
activity: activity
|
||||||
} do
|
} do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
conn = assign(conn, :user, user)
|
||||||
object = Map.put(activity["object"], "sensitive", true)
|
object = Map.put(activity["object"], "sensitive", true)
|
||||||
activity = Map.put(activity, "object", object)
|
activity = Map.put(activity, "object", object)
|
||||||
|
|
||||||
result =
|
response =
|
||||||
conn
|
conn
|
||||||
|> assign(:user, user)
|
|
||||||
|> put_req_header("content-type", "application/activity+json")
|
|> put_req_header("content-type", "application/activity+json")
|
||||||
|> post("/users/#{user.nickname}/outbox", activity)
|
|> post("/users/#{user.nickname}/outbox", activity)
|
||||||
|> json_response(201)
|
|> json_response(201)
|
||||||
|
|
||||||
assert Activity.get_by_ap_id(result["id"])
|
assert Activity.get_by_ap_id(response["id"])
|
||||||
assert result["object"]
|
assert response["object"]
|
||||||
assert %Object{data: object} = Object.normalize(result["object"])
|
assert %Object{data: response_object} = Object.normalize(response["object"])
|
||||||
assert object["sensitive"] == activity["object"]["sensitive"]
|
assert response_object["sensitive"] == true
|
||||||
assert object["content"] == activity["object"]["content"]
|
assert response_object["content"] == activity["object"]["content"]
|
||||||
|
|
||||||
|
representation =
|
||||||
|
conn
|
||||||
|
|> put_req_header("accept", "application/activity+json")
|
||||||
|
|> get(response["id"])
|
||||||
|
|> json_response(200)
|
||||||
|
|
||||||
|
assert representation["object"]["sensitive"] == true
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it rejects an incoming activity with bogus type", %{conn: conn, activity: activity} do
|
test "it rejects an incoming activity with bogus type", %{conn: conn, activity: activity} do
|
||||||
|
|
Loading…
Reference in a new issue