Birth dates: Add tests

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
marcin mikołajczak 2022-01-18 19:29:21 +01:00
commit dfb2808535
9 changed files with 210 additions and 9 deletions

View file

@ -755,6 +755,54 @@ defmodule Pleroma.UserTest do
end
end
describe "user registration, with :birth_date_required and :birth_date_min_age" do
@full_user_data %{
bio: "A guy",
name: "my name",
nickname: "nick",
password: "test",
password_confirmation: "test",
email: "email@example.com"
}
setup do
clear_config([:instance, :birth_date_required], true)
clear_config([:instance, :birth_date_min_age], 18 * 365)
end
test "it passes when correct birth date is provided" do
today = Date.utc_today()
birth_date = Date.add(today, -19 * 365)
params =
@full_user_data
|> Map.put(:birth_date, birth_date)
changeset = User.register_changeset(%User{}, params)
assert changeset.valid?
end
test "it fails when birth date is not provided" do
changeset = User.register_changeset(%User{}, @full_user_data)
refute changeset.valid?
end
test "it fails when provided invalid birth date" do
today = Date.utc_today()
birth_date = Date.add(today, -17 * 365)
params =
@full_user_data
|> Map.put(:birth_date, birth_date)
changeset = User.register_changeset(%User{}, params)
refute changeset.valid?
end
end
describe "get_or_fetch/1" do
test "gets an existing user by nickname" do
user = insert(:user)

View file

@ -1586,6 +1586,60 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do
end
end
describe "create account with required birth date" do
setup %{conn: conn} do
clear_config([:instance, :birth_date_required], true)
clear_config([:instance, :birth_date_min_age], 18 * 365)
app_token = insert(:oauth_token, user: nil)
conn =
conn
|> put_req_header("authorization", "Bearer " <> app_token.token)
|> put_req_header("content-type", "multipart/form-data")
[conn: conn]
end
test "creates an account if provided valid birth date", %{conn: conn} do
birth_date =
Date.utc_today()
|> Date.add(-19 * 365)
|> Date.to_string()
params = %{
username: "mkljczk",
email: "mkljczk@example.org",
password: "dupa.8",
agreement: true,
birth_date: birth_date
}
res =
conn
|> post("/api/v1/accounts", params)
assert json_response_and_validate_schema(res, 200)
end
test "returns an error if missing birth date", %{conn: conn} do
params = %{
username: "mkljczk",
email: "mkljczk@example.org",
password: "dupa.8",
agreement: true
}
res =
conn
|> post("/api/v1/accounts", params)
assert json_response_and_validate_schema(res, 400) == %{
"error" => "{\"birth_date\":[\"can't be blank\"]}"
}
end
end
describe "GET /api/v1/accounts/:id/lists - account_lists" do
test "returns lists to which the account belongs" do
%{user: user, conn: conn} = oauth_access(["read:lists"])

View file

@ -370,6 +370,26 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do
]
end
test "updates birth date", %{conn: conn, user: user} do
res =
patch(conn, "/api/v1/accounts/update_credentials", %{
"birth_date" => "2001-02-12"
})
assert user_data = json_response_and_validate_schema(res, 200)
assert user_data["pleroma"]["birth_date"] == "2001-02-12"
end
test "updates the user's hide_birth_date status", %{conn: conn} do
res =
patch(conn, "/api/v1/accounts/update_credentials", %{
"hide_birth_date" => true
})
assert user_data = json_response_and_validate_schema(res, 200)
assert user_data["pleroma"]["hide_birth_date"] == true
end
test "emojis in fields labels", %{conn: conn} do
fields = [
%{"name" => ":firefox:", "value" => "is best 2hu"},

View file

@ -304,4 +304,57 @@ defmodule Pleroma.Web.PleromaAPI.AccountControllerTest do
assert json_response_and_validate_schema(conn, 404) == %{"error" => "Record not found"}
end
end
describe "birthday reminders" do
test "returns a list of friends having birthday on specified day" do
%{user: user, conn: conn} = oauth_access(["read:accounts"])
%{id: id1} =
user1 =
insert(:user, %{
birth_date: "2001-02-12"
})
user2 =
insert(:user, %{
birth_date: "2001-02-14"
})
user3 = insert(:user)
CommonAPI.follow(user, user1)
CommonAPI.follow(user, user2)
CommonAPI.follow(user, user3)
[%{"id" => ^id1}] =
conn
|> get("/api/v1/pleroma/birthday_reminders?day=12&month=2")
|> json_response_and_validate_schema(:ok)
end
test "the list doesn't list friends with hidden birth date" do
%{user: user, conn: conn} = oauth_access(["read:accounts"])
user1 =
insert(:user, %{
birth_date: "2001-02-12",
hide_birth_date: true
})
%{id: id2} =
user2 =
insert(:user, %{
birth_date: "2001-02-12",
hide_birth_date: false
})
CommonAPI.follow(user, user1)
CommonAPI.follow(user, user2)
[%{"id" => ^id2}] =
conn
|> get("/api/v1/pleroma/birthday_reminders?day=12&month=2")
|> json_response_and_validate_schema(:ok)
end
end
end