Merge remote-tracking branch 'remotes/origin/develop' into chore/elixir-1.11
[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 ExUnit.Case
7
8 @release_env_file "./test/pleroma.test.env"
9
10 setup do
11 File.mkdir_p!(tmp_path())
12
13 on_exit(fn ->
14 File.rm_rf(tmp_path())
15 static_dir = Pleroma.Config.get([:instance, :static_dir], "test/instance_static/")
16
17 if File.exists?(static_dir) do
18 File.rm_rf(Path.join(static_dir, "robots.txt"))
19 end
20
21 if File.exists?(@release_env_file), do: File.rm_rf(@release_env_file)
22
23 Pleroma.Config.put([:instance, :static_dir], static_dir)
24 end)
25
26 :ok
27 end
28
29 defp tmp_path do
30 "/tmp/generated_files/"
31 end
32
33 test "running gen" do
34 mix_task = fn ->
35 Mix.Tasks.Pleroma.Instance.run([
36 "gen",
37 "--output",
38 tmp_path() <> "generated_config.exs",
39 "--output-psql",
40 tmp_path() <> "setup.psql",
41 "--domain",
42 "test.pleroma.social",
43 "--instance-name",
44 "Pleroma",
45 "--admin-email",
46 "admin@example.com",
47 "--notify-email",
48 "notify@example.com",
49 "--dbhost",
50 "dbhost",
51 "--dbname",
52 "dbname",
53 "--dbuser",
54 "dbuser",
55 "--dbpass",
56 "dbpass",
57 "--indexable",
58 "y",
59 "--db-configurable",
60 "y",
61 "--rum",
62 "y",
63 "--listen-port",
64 "4000",
65 "--listen-ip",
66 "127.0.0.1",
67 "--uploads-dir",
68 "test/uploads",
69 "--static-dir",
70 "./test/../test/instance/static/",
71 "--strip-uploads",
72 "y",
73 "--dedupe-uploads",
74 "n",
75 "--anonymize-uploads",
76 "n",
77 "--release-env-file",
78 @release_env_file
79 ])
80 end
81
82 ExUnit.CaptureIO.capture_io(fn ->
83 mix_task.()
84 end)
85
86 generated_config = File.read!(tmp_path() <> "generated_config.exs")
87 assert generated_config =~ "host: \"test.pleroma.social\""
88 assert generated_config =~ "name: \"Pleroma\""
89 assert generated_config =~ "email: \"admin@example.com\""
90 assert generated_config =~ "notify_email: \"notify@example.com\""
91 assert generated_config =~ "hostname: \"dbhost\""
92 assert generated_config =~ "database: \"dbname\""
93 assert generated_config =~ "username: \"dbuser\""
94 assert generated_config =~ "password: \"dbpass\""
95 assert generated_config =~ "configurable_from_database: true"
96 assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]"
97 assert generated_config =~ "filters: [Pleroma.Upload.Filter.ExifTool]"
98 assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql()
99 assert File.exists?(Path.expand("./test/instance/static/robots.txt"))
100 assert File.exists?(@release_env_file)
101
102 assert File.read!(@release_env_file) =~ ~r/^RELEASE_COOKIE=.*/
103 end
104
105 defp generated_setup_psql do
106 ~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)
107 end
108 end