Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F21907099
user_controller_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
user_controller_test.exs
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.Feed.UserControllerTest
do
use
Pleroma.Web.ConnCase
import
Pleroma.Factory
import
SweetXml
alias
Pleroma.Config
alias
Pleroma.Object
alias
Pleroma.User
setup
do
:
clear_config
([
:instance
,
:federating
],
true
)
describe
"feed"
do
setup
do
:
clear_config
([
:feed
])
test
"gets a feed"
,
%{
conn
:
conn
}
do
Config
.
put
(
[
:feed
,
:post_title
],
%{
max_length
:
10
,
omission
:
"..."
}
)
activity
=
insert
(
:note_activity
)
note
=
insert
(
:note
,
data
:
%{
"content"
=>
"This is :moominmamma: note "
,
"attachment"
=>
[
%{
"url"
=>
[
%{
"mediaType"
=>
"image/png"
,
"href"
=>
"https://pleroma.gov/image.png"
}
]
}
],
"inReplyTo"
=>
activity
.
data
[
"id"
]
}
)
note_activity
=
insert
(
:note_activity
,
note
:
note
)
user
=
User
.
get_cached_by_ap_id
(
note_activity
.
data
[
"actor"
])
note2
=
insert
(
:note
,
user
:
user
,
data
:
%{
"content"
=>
"42 This is :moominmamma: note "
,
"inReplyTo"
=>
activity
.
data
[
"id"
]
}
)
note_activity2
=
insert
(
:note_activity
,
note
:
note2
)
object
=
Object
.
normalize
(
note_activity
)
resp
=
conn
|>
put_req_header
(
"accept"
,
"application/atom+xml"
)
|>
get
(
user_feed_path
(
conn
,
:feed
,
user
.
nickname
))
|>
response
(
200
)
activity_titles
=
resp
|>
SweetXml
.
parse
()
|>
SweetXml
.
xpath
(
~x"//entry/title/text()"l
)
assert
activity_titles
==
[
'42 This...'
,
'This is...'
]
assert
resp
=~
object
.
data
[
"content"
]
resp
=
conn
|>
put_req_header
(
"accept"
,
"application/atom+xml"
)
|>
get
(
"/users/
#{
user
.
nickname
}
/feed"
,
%{
"max_id"
=>
note_activity2
.
id
})
|>
response
(
200
)
activity_titles
=
resp
|>
SweetXml
.
parse
()
|>
SweetXml
.
xpath
(
~x"//entry/title/text()"l
)
assert
activity_titles
==
[
'This is...'
]
end
test
"gets a rss feed"
,
%{
conn
:
conn
}
do
Pleroma.Config
.
put
(
[
:feed
,
:post_title
],
%{
max_length
:
10
,
omission
:
"..."
}
)
activity
=
insert
(
:note_activity
)
note
=
insert
(
:note
,
data
:
%{
"content"
=>
"This is :moominmamma: note "
,
"attachment"
=>
[
%{
"url"
=>
[
%{
"mediaType"
=>
"image/png"
,
"href"
=>
"https://pleroma.gov/image.png"
}
]
}
],
"inReplyTo"
=>
activity
.
data
[
"id"
]
}
)
note_activity
=
insert
(
:note_activity
,
note
:
note
)
user
=
User
.
get_cached_by_ap_id
(
note_activity
.
data
[
"actor"
])
note2
=
insert
(
:note
,
user
:
user
,
data
:
%{
"content"
=>
"42 This is :moominmamma: note "
,
"inReplyTo"
=>
activity
.
data
[
"id"
]
}
)
note_activity2
=
insert
(
:note_activity
,
note
:
note2
)
object
=
Object
.
normalize
(
note_activity
)
resp
=
conn
|>
put_req_header
(
"accept"
,
"application/rss+xml"
)
|>
get
(
"/users/
#{
user
.
nickname
}
/feed.rss"
)
|>
response
(
200
)
activity_titles
=
resp
|>
SweetXml
.
parse
()
|>
SweetXml
.
xpath
(
~x"//item/title/text()"l
)
assert
activity_titles
==
[
'42 This...'
,
'This is...'
]
assert
resp
=~
object
.
data
[
"content"
]
resp
=
conn
|>
put_req_header
(
"accept"
,
"application/rss+xml"
)
|>
get
(
"/users/
#{
user
.
nickname
}
/feed.rss"
,
%{
"max_id"
=>
note_activity2
.
id
})
|>
response
(
200
)
activity_titles
=
resp
|>
SweetXml
.
parse
()
|>
SweetXml
.
xpath
(
~x"//item/title/text()"l
)
assert
activity_titles
==
[
'This is...'
]
end
test
"returns 404 for a missing feed"
,
%{
conn
:
conn
}
do
conn
=
conn
|>
put_req_header
(
"accept"
,
"application/atom+xml"
)
|>
get
(
user_feed_path
(
conn
,
:feed
,
"nonexisting"
))
assert
response
(
conn
,
404
)
end
end
# Note: see ActivityPubControllerTest for JSON format tests
describe
"feed_redirect"
do
test
"with html format, it redirects to user feed"
,
%{
conn
:
conn
}
do
note_activity
=
insert
(
:note_activity
)
user
=
User
.
get_cached_by_ap_id
(
note_activity
.
data
[
"actor"
])
response
=
conn
|>
get
(
"/users/
#{
user
.
nickname
}
"
)
|>
response
(
200
)
assert
response
==
Fallback.RedirectController
.
redirector_with_meta
(
conn
,
%{
user
:
user
}
)
.
resp_body
end
test
"with html format, it returns error when user is not found"
,
%{
conn
:
conn
}
do
response
=
conn
|>
get
(
"/users/jimm"
)
|>
json_response
(
404
)
assert
response
==
%{
"error"
=>
"Not found"
}
end
test
"with non-html / non-json format, it redirects to user feed in atom format"
,
%{
conn
:
conn
}
do
note_activity
=
insert
(
:note_activity
)
user
=
User
.
get_cached_by_ap_id
(
note_activity
.
data
[
"actor"
])
conn
=
conn
|>
put_req_header
(
"accept"
,
"application/xml"
)
|>
get
(
"/users/
#{
user
.
nickname
}
"
)
assert
conn
.
status
==
302
assert
redirected_to
(
conn
)
==
"
#{
Pleroma.Web
.
base_url
()
}
/users/
#{
user
.
nickname
}
/feed.atom"
end
test
"with non-html / non-json format, it returns error when user is not found"
,
%{
conn
:
conn
}
do
response
=
conn
|>
put_req_header
(
"accept"
,
"application/xml"
)
|>
get
(
user_feed_path
(
conn
,
:feed
,
"jimm"
))
|>
response
(
404
)
assert
response
==
~S({"error":"Not found"})
end
end
end
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Dec 28, 1:41 AM (10 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
833030
Default Alt Text
user_controller_test.exs (5 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment