merge develop
[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 on_exit(fn -> File.rm_rf(tmp_path()) end)
11 :ok
12 end
13
14 defp tmp_path do
15 "/tmp/generated_files/"
16 end
17
18 test "running gen" do
19 mix_task = fn ->
20 Mix.Tasks.Pleroma.Instance.run([
21 "gen",
22 "--output",
23 tmp_path() <> "generated_config.exs",
24 "--output-psql",
25 tmp_path() <> "setup.psql",
26 "--domain",
27 "test.pleroma.social",
28 "--instance-name",
29 "Pleroma",
30 "--admin-email",
31 "admin@example.com",
32 "--notify-email",
33 "notify@example.com",
34 "--dbhost",
35 "dbhost",
36 "--dbname",
37 "dbname",
38 "--dbuser",
39 "dbuser",
40 "--dbpass",
41 "dbpass",
42 "--indexable",
43 "y",
44 "--db-configurable",
45 "y",
46 "--rum",
47 "y",
48 "--listen-port",
49 "4000",
50 "--listen-ip",
51 "127.0.0.1",
52 "--uploads-dir",
53 "test/uploads",
54 "--static-dir",
55 "instance/static/"
56 ])
57 end
58
59 ExUnit.CaptureIO.capture_io(fn ->
60 mix_task.()
61 end)
62
63 generated_config = File.read!(tmp_path() <> "generated_config.exs")
64 assert generated_config =~ "host: \"test.pleroma.social\""
65 assert generated_config =~ "name: \"Pleroma\""
66 assert generated_config =~ "email: \"admin@example.com\""
67 assert generated_config =~ "notify_email: \"notify@example.com\""
68 assert generated_config =~ "hostname: \"dbhost\""
69 assert generated_config =~ "database: \"dbname\""
70 assert generated_config =~ "username: \"dbuser\""
71 assert generated_config =~ "password: \"dbpass\""
72 assert generated_config =~ "dynamic_configuration: true"
73 assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]"
74 assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql()
75 end
76
77 defp generated_setup_psql do
78 ~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)
79 end
80 end