
During attachment upload Pleroma returns a "description" field. * This MR allows Pleroma to read the EXIF data during upload and return the description to the FE using this field. * If a description is already present (e.g. because a previous module added it), it will use that * Otherwise it will read from the EXIF data. First it will check -ImageDescription, if that's empty, it will check -iptc:Caption-Abstract * If no description is found, it will simply return nil, which is the default value * When people set up a new instance, they will be asked if they want to read metadata and this module will be activated if so There was an Exiftool module, which has now been renamed to Exiftool.StripLocation
107 lines
3.2 KiB
Elixir
107 lines
3.2 KiB
Elixir
# Pleroma: A lightweight social networking server
|
|
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
defmodule Mix.Tasks.Pleroma.InstanceTest do
|
|
# Modifies the Application Environment, has to stay synchronous.
|
|
use Pleroma.DataCase
|
|
|
|
setup do
|
|
File.mkdir_p!(tmp_path())
|
|
|
|
on_exit(fn ->
|
|
File.rm_rf(tmp_path())
|
|
static_dir = Pleroma.Config.get([:instance, :static_dir], "test/instance_static/")
|
|
|
|
if File.exists?(static_dir) do
|
|
File.rm_rf(Path.join(static_dir, "robots.txt"))
|
|
end
|
|
end)
|
|
|
|
# Is being modified by the mix task.
|
|
clear_config([:instance, :static_dir])
|
|
|
|
:ok
|
|
end
|
|
|
|
@uuid Ecto.UUID.generate()
|
|
defp tmp_path do
|
|
"/tmp/generated_files/#{@uuid}/"
|
|
end
|
|
|
|
test "running gen" do
|
|
mix_task = fn ->
|
|
Mix.Tasks.Pleroma.Instance.run([
|
|
"gen",
|
|
"--output",
|
|
tmp_path() <> "generated_config.exs",
|
|
"--output-psql",
|
|
tmp_path() <> "setup.psql",
|
|
"--domain",
|
|
"test.pleroma.social",
|
|
"--instance-name",
|
|
"Pleroma",
|
|
"--admin-email",
|
|
"admin@example.com",
|
|
"--notify-email",
|
|
"notify@example.com",
|
|
"--dbhost",
|
|
"dbhost",
|
|
"--dbname",
|
|
"dbname",
|
|
"--dbuser",
|
|
"dbuser",
|
|
"--dbpass",
|
|
"dbpass",
|
|
"--indexable",
|
|
"y",
|
|
"--db-configurable",
|
|
"y",
|
|
"--rum",
|
|
"y",
|
|
"--listen-port",
|
|
"4000",
|
|
"--listen-ip",
|
|
"127.0.0.1",
|
|
"--uploads-dir",
|
|
"test/uploads",
|
|
"--static-dir",
|
|
"./test/../test/instance/static/",
|
|
"--strip-uploads-location",
|
|
"y",
|
|
"--read-uploads-description",
|
|
"y",
|
|
"--dedupe-uploads",
|
|
"n",
|
|
"--anonymize-uploads",
|
|
"n"
|
|
])
|
|
end
|
|
|
|
ExUnit.CaptureIO.capture_io(fn ->
|
|
mix_task.()
|
|
end)
|
|
|
|
generated_config = File.read!(tmp_path() <> "generated_config.exs")
|
|
assert generated_config =~ "host: \"test.pleroma.social\""
|
|
assert generated_config =~ "name: \"Pleroma\""
|
|
assert generated_config =~ "email: \"admin@example.com\""
|
|
assert generated_config =~ "notify_email: \"notify@example.com\""
|
|
assert generated_config =~ "hostname: \"dbhost\""
|
|
assert generated_config =~ "database: \"dbname\""
|
|
assert generated_config =~ "username: \"dbuser\""
|
|
assert generated_config =~ "password: \"dbpass\""
|
|
assert generated_config =~ "configurable_from_database: true"
|
|
assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]"
|
|
|
|
assert generated_config =~
|
|
"filters: [Pleroma.Upload.Filter.Exiftool.StripLocation, Pleroma.Upload.Filter.Exiftool.ReadDescription]"
|
|
|
|
assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql()
|
|
assert File.exists?(Path.expand("./test/instance/static/robots.txt"))
|
|
end
|
|
|
|
defp generated_setup_psql do
|
|
~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)
|
|
end
|
|
end
|