nulla/test/nulla_web/controllers/note_controller_test.exs
2025-06-28 18:56:37 +02:00

54 lines
1.7 KiB
Elixir

defmodule NullaWeb.NoteControllerTest do
use NullaWeb.ConnCase
alias Nulla.Models.Actor
alias Nulla.Models.Note
setup do
Nulla.Fixtures.Data.create()
:ok
end
describe "GET /notes/id" do
test "returns ActivityPub JSON with note", %{conn: conn} do
actor = Actor.get_actor(preferredUsername: "test")
note = Note.get_note(actor_id: actor.id)
conn =
conn
|> put_req_header("accept", "application/activity+json")
|> get(~p"/users/#{actor.preferredUsername}/notes/#{note.id}")
assert response = json_response(conn, 200)
assert is_list(response["@context"])
assert response["id"] == "http://localhost/users/test/notes/#{note.id}"
assert response["type"] == "Note"
assert response["summary"] == nil
assert response["inReplyTo"] == nil
assert {:ok, _dt, _offset} = DateTime.from_iso8601(response["published"])
assert response["url"] == note.url
assert response["attributedTo"] == "http://localhost/users/test"
assert is_list(response["to"])
assert is_list(response["cc"])
assert response["sensitive"] == false
assert is_binary(response["content"])
assert is_map(response["contentMap"])
assert is_list(response["attachment"])
end
test "renders HTML if Accept header is regular", %{conn: conn} do
actor = Actor.get_actor(preferredUsername: "test")
note = Note.get_note(actor_id: actor.id)
conn = get(conn, ~p"/@test/#{note.id}")
assert html_response(conn, 200) =~ note.content
end
test "returns 404 if note not found", %{conn: conn} do
conn = get(conn, ~p"/@test/nonexistent")
assert json_response(conn, 404)["error"] == "Not Found"
end
end
end