user_test.exs 2.54 KB
Newer Older
lain's avatar
lain committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
defmodule Pleroma.UserTest do
  alias Pleroma.Builders.UserBuilder
  alias Pleroma.User
  use Pleroma.DataCase

  test "ap_id returns the activity pub id for the user" do
    host =
      Application.get_env(:pleroma, Pleroma.Web.Endpoint)
      |> Keyword.fetch!(:url)
      |> Keyword.fetch!(:host)

    user = UserBuilder.build

    expected_ap_id = "https://#{host}/users/#{user.nickname}"

    assert expected_ap_id == User.ap_id(user)
  end

  test "ap_followers returns the followers collection for the user" do
    user = UserBuilder.build

    expected_followers_collection = "#{User.ap_id(user)}/followers"

    assert expected_followers_collection == User.ap_followers(user)
  end
lain's avatar
lain committed
26

lain's avatar
lain committed
27
  test "follow takes a user and another user" do
lain's avatar
lain committed
28
29
30
31
32
33
34
35
36
    { :ok, user } = UserBuilder.insert
    { :ok, following } = UserBuilder.insert(%{nickname: "guy"})

    {:ok, user } = User.follow(user, following)

    user = Repo.get(User, user.id)

    assert user.following == [User.ap_followers(following)]
  end
lain's avatar
lain committed
37
38
39
40
41
42
43
44
45
46
47

  test "unfollow takes a user and another user" do
    { :ok, following } = UserBuilder.insert(%{nickname: "guy"})
    { :ok, user } = UserBuilder.insert(%{following: [User.ap_followers(following)]})

    {:ok, user } = User.unfollow(user, following)

    user = Repo.get(User, user.id)

    assert user.following == []
  end
48
49
50
51
52
53
54
55

  test "test if a user is following another user" do
    { :ok, followed } = UserBuilder.insert(%{nickname: "guy"})
    { :ok, user } = UserBuilder.insert(%{following: [User.ap_followers(followed)]})

    assert User.following?(user, followed)
    refute User.following?(followed, user)
  end
lain's avatar
lain committed
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

  describe "user registration" do
    @full_user_data %{
      bio: "A guy",
      name: "my name",
      nickname: "nick",
      password: "test",
      password_confirmation: "test",
      email: "email@example.com"
    }

    test "it requires a bio, email, name, nickname and password" do
      @full_user_data
      |> Map.keys
      |> Enum.each(fn (key) ->
        params = Map.delete(@full_user_data, key)
        changeset = User.register_changeset(%User{}, params)
        assert changeset.valid? == false
      end)
    end

    test "it sets the password_hash, ap_id and following fields" do
      changeset = User.register_changeset(%User{}, @full_user_data)

      assert changeset.valid?

      assert is_binary(changeset.changes[:password_hash])
      assert changeset.changes[:ap_id] == User.ap_id(%User{nickname: @full_user_data.nickname})
      assert changeset.changes[:following] == [User.ap_followers(%User{nickname: @full_user_data.nickname})]
    end
  end
lain's avatar
lain committed
87
end