File size: 1,120 Bytes
6778ee0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
26
27
28
29
30
31
32
33
34
35
defmodule Plausible.Workers.CleanUserSessionsTest do
  use Plausible.DataCase

  alias Plausible.Auth.UserSession
  alias Plausible.Workers.CleanUserSessions

  test "cleans invitation that is more than timeout_at + grace_period days old" do
    grace_cutoff =
      NaiveDateTime.utc_now(:second)
      |> NaiveDateTime.shift(Duration.negate(UserSession.timeout_duration()))
      |> NaiveDateTime.shift(CleanUserSessions.grace_period_duration())

    ten_days_after = NaiveDateTime.shift(grace_cutoff, day: 10)
    one_day_after = NaiveDateTime.shift(grace_cutoff, day: 1)
    one_day_before = NaiveDateTime.shift(grace_cutoff, day: -1)
    session_to_clean = insert_session(one_day_before)
    session_to_leave1 = insert_session(one_day_after)
    session_to_leave2 = insert_session(ten_days_after)

    CleanUserSessions.perform(nil)

    refute Repo.reload(session_to_clean)
    assert Repo.reload(session_to_leave1)
    assert Repo.reload(session_to_leave2)
  end

  defp insert_session(now) do
    user = insert(:user)

    user
    |> UserSession.new_session("Unknown", now: now)
    |> Repo.insert!()
  end
end