Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F5811063
upload_test.exs
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
5 KB
Referenced Files
None
Subscribers
None
upload_test.exs
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.UploadTest
do
alias
Pleroma.Upload
use
Pleroma.DataCase
describe
"Storing a file with the Local uploader"
do
setup
[
:ensure_local_uploader
]
test
"returns a media url"
do
File
.
cp!
(
"test/fixtures/image.jpg"
,
"test/fixtures/image_tmp.jpg"
)
file
=
%
Plug.Upload
{
content_type
:
"image/jpg"
,
path
:
Path
.
absname
(
"test/fixtures/image_tmp.jpg"
),
filename
:
"image.jpg"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
)
assert
%{
"url"
=>
[%{
"href"
=>
url
}]}
=
data
assert
String
.
starts_with?
(
url
,
Pleroma.Web
.
base_url
()
<>
"/media/"
)
end
test
"returns a media url with configured base_url"
do
base_url
=
"https://cache.pleroma.social"
File
.
cp!
(
"test/fixtures/image.jpg"
,
"test/fixtures/image_tmp.jpg"
)
file
=
%
Plug.Upload
{
content_type
:
"image/jpg"
,
path
:
Path
.
absname
(
"test/fixtures/image_tmp.jpg"
),
filename
:
"image.jpg"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
,
base_url
:
base_url
)
assert
%{
"url"
=>
[%{
"href"
=>
url
}]}
=
data
assert
String
.
starts_with?
(
url
,
base_url
<>
"/media/"
)
end
test
"copies the file to the configured folder with deduping"
do
File
.
cp!
(
"test/fixtures/image.jpg"
,
"test/fixtures/image_tmp.jpg"
)
file
=
%
Plug.Upload
{
content_type
:
"image/jpg"
,
path
:
Path
.
absname
(
"test/fixtures/image_tmp.jpg"
),
filename
:
"an [image.jpg"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
,
filters
:
[
Pleroma.Upload.Filter.Dedupe
])
assert
List
.
first
(
data
[
"url"
])[
"href"
]
==
Pleroma.Web
.
base_url
()
<>
"/media/e7a6d0cf595bff76f14c9a98b6c199539559e8b844e02e51e5efcfd1f614a2df.jpg"
end
test
"copies the file to the configured folder without deduping"
do
File
.
cp!
(
"test/fixtures/image.jpg"
,
"test/fixtures/image_tmp.jpg"
)
file
=
%
Plug.Upload
{
content_type
:
"image/jpg"
,
path
:
Path
.
absname
(
"test/fixtures/image_tmp.jpg"
),
filename
:
"an [image.jpg"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
)
assert
data
[
"name"
]
==
"an [image.jpg"
end
test
"fixes incorrect content type"
do
File
.
cp!
(
"test/fixtures/image.jpg"
,
"test/fixtures/image_tmp.jpg"
)
file
=
%
Plug.Upload
{
content_type
:
"application/octet-stream"
,
path
:
Path
.
absname
(
"test/fixtures/image_tmp.jpg"
),
filename
:
"an [image.jpg"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
,
filters
:
[
Pleroma.Upload.Filter.Dedupe
])
assert
hd
(
data
[
"url"
])[
"mediaType"
]
==
"image/jpeg"
end
test
"adds missing extension"
do
File
.
cp!
(
"test/fixtures/image.jpg"
,
"test/fixtures/image_tmp.jpg"
)
file
=
%
Plug.Upload
{
content_type
:
"image/jpg"
,
path
:
Path
.
absname
(
"test/fixtures/image_tmp.jpg"
),
filename
:
"an [image"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
)
assert
data
[
"name"
]
==
"an [image.jpg"
end
test
"fixes incorrect file extension"
do
File
.
cp!
(
"test/fixtures/image.jpg"
,
"test/fixtures/image_tmp.jpg"
)
file
=
%
Plug.Upload
{
content_type
:
"image/jpg"
,
path
:
Path
.
absname
(
"test/fixtures/image_tmp.jpg"
),
filename
:
"an [image.blah"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
)
assert
data
[
"name"
]
==
"an [image.jpg"
end
test
"don't modify filename of an unknown type"
do
File
.
cp
(
"test/fixtures/test.txt"
,
"test/fixtures/test_tmp.txt"
)
file
=
%
Plug.Upload
{
content_type
:
"text/plain"
,
path
:
Path
.
absname
(
"test/fixtures/test_tmp.txt"
),
filename
:
"test.txt"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
)
assert
data
[
"name"
]
==
"test.txt"
end
test
"copies the file to the configured folder with anonymizing filename"
do
File
.
cp!
(
"test/fixtures/image.jpg"
,
"test/fixtures/image_tmp.jpg"
)
file
=
%
Plug.Upload
{
content_type
:
"image/jpg"
,
path
:
Path
.
absname
(
"test/fixtures/image_tmp.jpg"
),
filename
:
"an [image.jpg"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
,
filters
:
[
Pleroma.Upload.Filter.AnonymizeFilename
])
refute
data
[
"name"
]
==
"an [image.jpg"
end
test
"escapes invalid characters in url"
do
File
.
cp!
(
"test/fixtures/image.jpg"
,
"test/fixtures/image_tmp.jpg"
)
file
=
%
Plug.Upload
{
content_type
:
"image/jpg"
,
path
:
Path
.
absname
(
"test/fixtures/image_tmp.jpg"
),
filename
:
"an… image.jpg"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
)
[
attachment_url
|
_
]
=
data
[
"url"
]
assert
Path
.
basename
(
attachment_url
[
"href"
])
==
"an%E2%80%A6%20image.jpg"
end
test
"replaces : (colon) and ? (question-mark) to %3A and %3F (respectively)"
do
File
.
cp!
(
"test/fixtures/image.jpg"
,
"test/fixtures/image_tmp.jpg"
)
file
=
%
Plug.Upload
{
content_type
:
"image/jpg"
,
path
:
Path
.
absname
(
"test/fixtures/image_tmp.jpg"
),
filename
:
"is:an?image.jpg"
}
{
:ok
,
data
}
=
Upload
.
store
(
file
)
[
attachment_url
|
_
]
=
data
[
"url"
]
assert
Path
.
basename
(
attachment_url
[
"href"
])
==
"is%3Aan%3Fimage.jpg"
end
end
end
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Aug 14, 3:29 AM (1 d, 14 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
325162
Default Alt Text
upload_test.exs (5 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment