7eaef75bfcabcf7852dc1864e18e16d504362c5e
[akkoma] / test / mix / tasks / pleroma / instance_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Mix.Tasks.Pleroma.InstanceTest do
6 use Pleroma.DataCase, 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 @uuid Ecto.UUID.generate()
24 defp tmp_path do
25 "/tmp/generated_files/#{@uuid}/"
26 end
27
28 test "running gen" do
29 mix_task = fn ->
30 Mix.Tasks.Pleroma.Instance.run([
31 "gen",
32 "--output",
33 tmp_path() <> "generated_config.exs",
34 "--output-psql",
35 tmp_path() <> "setup.psql",
36 "--domain",
37 "test.pleroma.social",
38 "--instance-name",
39 "Pleroma",
40 "--admin-email",
41 "admin@example.com",
42 "--notify-email",
43 "notify@example.com",
44 "--dbhost",
45 "dbhost",
46 "--dbname",
47 "dbname",
48 "--dbuser",
49 "dbuser",
50 "--dbpass",
51 "dbpass",
52 "--indexable",
53 "y",
54 "--db-configurable",
55 "y",
56 "--rum",
57 "y",
58 "--listen-port",
59 "4000",
60 "--listen-ip",
61 "127.0.0.1",
62 "--uploads-dir",
63 "test/uploads",
64 "--static-dir",
65 "./test/../test/instance/static/",
66 "--strip-uploads",
67 "y",
68 "--dedupe-uploads",
69 "n",
70 "--anonymize-uploads",
71 "n"
72 ])
73 end
74
75 ExUnit.CaptureIO.capture_io(fn ->
76 mix_task.()
77 end)
78
79 generated_config = File.read!(tmp_path() <> "generated_config.exs")
80 assert generated_config =~ "host: \"test.pleroma.social\""
81 assert generated_config =~ "name: \"Pleroma\""
82 assert generated_config =~ "email: \"admin@example.com\""
83 assert generated_config =~ "notify_email: \"notify@example.com\""
84 assert generated_config =~ "hostname: \"dbhost\""
85 assert generated_config =~ "database: \"dbname\""
86 assert generated_config =~ "username: \"dbuser\""
87 assert generated_config =~ "password: \"dbpass\""
88 assert generated_config =~ "configurable_from_database: true"
89 assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]"
90 assert generated_config =~ "filters: [Pleroma.Upload.Filter.Exiftool]"
91 assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql()
92 assert File.exists?(Path.expand("./test/instance/static/robots.txt"))
93 end
94
95 defp generated_setup_psql do
96 ~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)
97 end
98 end