Merge remote-tracking branch 'origin/develop' into benchmark-finishing
[akkoma] / test / tasks / instance_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.InstanceTest do
6 use ExUnit.Case, async: true
7
8 setup do
9 File.mkdir_p!(tmp_path())
10
11 on_exit(fn ->
12 File.rm_rf(tmp_path())
13 static_dir = Pleroma.Config.get([:instance, :static_dir], "test/instance_static/")
14
15 if File.exists?(static_dir) do
16 File.rm_rf(Path.join(static_dir, "robots.txt"))
17 end
18 end)
19
20 :ok
21 end
22
23 defp tmp_path do
24 "/tmp/generated_files/"
25 end
26
27 test "running gen" do
28 mix_task = fn ->
29 Mix.Tasks.Pleroma.Instance.run([
30 "gen",
31 "--output",
32 tmp_path() <> "generated_config.exs",
33 "--output-psql",
34 tmp_path() <> "setup.psql",
35 "--domain",
36 "test.pleroma.social",
37 "--instance-name",
38 "Pleroma",
39 "--admin-email",
40 "admin@example.com",
41 "--notify-email",
42 "notify@example.com",
43 "--dbhost",
44 "dbhost",
45 "--dbname",
46 "dbname",
47 "--dbuser",
48 "dbuser",
49 "--dbpass",
50 "dbpass",
51 "--indexable",
52 "y",
53 "--db-configurable",
54 "y",
55 "--rum",
56 "y",
57 "--listen-port",
58 "4000",
59 "--listen-ip",
60 "127.0.0.1",
61 "--uploads-dir",
62 "test/uploads",
63 "--static-dir",
64 "instance/static/"
65 ])
66 end
67
68 ExUnit.CaptureIO.capture_io(fn ->
69 mix_task.()
70 end)
71
72 generated_config = File.read!(tmp_path() <> "generated_config.exs")
73 assert generated_config =~ "host: \"test.pleroma.social\""
74 assert generated_config =~ "name: \"Pleroma\""
75 assert generated_config =~ "email: \"admin@example.com\""
76 assert generated_config =~ "notify_email: \"notify@example.com\""
77 assert generated_config =~ "hostname: \"dbhost\""
78 assert generated_config =~ "database: \"dbname\""
79 assert generated_config =~ "username: \"dbuser\""
80 assert generated_config =~ "password: \"dbpass\""
81 assert generated_config =~ "dynamic_configuration: true"
82 assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]"
83 assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql()
84 end
85
86 defp generated_setup_psql do
87 ~s(CREATE USER dbuser WITH ENCRYPTED PASSWORD 'dbpass';\nCREATE DATABASE dbname OWNER dbuser;\n\\c dbname;\n--Extensions made by ecto.migrate that need superuser access\nCREATE EXTENSION IF NOT EXISTS citext;\nCREATE EXTENSION IF NOT EXISTS pg_trgm;\nCREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";\nCREATE EXTENSION IF NOT EXISTS rum;\n)
88 end
89 end