Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F7892992
resilience_test.exs
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
resilience_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.ResilienceTest
do
use
Pleroma.Web.ConnCase
,
async
:
true
import
Pleroma.Factory
alias
Pleroma.Activity
alias
Pleroma.Repo
alias
Pleroma.Web.CommonAPI
alias
Pleroma.Web.MastodonAPI.StatusView
setup
do
# user = insert(:user)
%{
user
:
user
,
conn
:
conn
}
=
oauth_access
([
"write"
,
"read"
])
other_user
=
insert
(
:user
)
{
:ok
,
post_one
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"Here is a post"
})
{
:ok
,
like
}
=
CommonAPI
.
favorite
(
other_user
,
post_one
.
id
)
%{
user
:
user
,
other_user
:
other_user
,
post_one
:
post_one
,
like
:
like
,
conn
:
conn
}
end
test
"after destruction of like activities, things still work"
,
%{
user
:
user
,
post_one
:
post
,
other_user
:
other_user
,
conn
:
conn
,
like
:
like
}
do
post
=
Repo
.
get
(
Activity
,
post
.
id
)
# Rendering the liked status
rendered_for_user
=
StatusView
.
render
(
"show.json"
,
%{
activity
:
post
,
for
:
user
})
assert
rendered_for_user
.
favourites_count
==
1
rendered_for_other_user
=
StatusView
.
render
(
"show.json"
,
%{
activity
:
post
,
for
:
other_user
})
assert
rendered_for_other_user
.
favourites_count
==
1
assert
rendered_for_other_user
.
favourited
# Getting the favourited by
[
liking_user
]
=
conn
|>
get
(
"/api/v1/statuses/
#{
post
.
id
}
/favourited_by"
)
|>
json_response
(
200
)
assert
liking_user
[
"id"
]
==
other_user
.
id
# We have one notification
[
notification
]
=
conn
|>
get
(
"/api/v1/notifications"
)
|>
json_response
(
200
)
assert
notification
[
"type"
]
==
"favourite"
# Destroying the like
Repo
.
delete
(
like
)
post
=
Repo
.
get
(
Activity
,
post
.
id
)
# Rendering the liked status
rendered_for_user
=
StatusView
.
render
(
"show.json"
,
%{
activity
:
post
,
for
:
user
})
assert
rendered_for_user
.
favourites_count
==
1
rendered_for_other_user
=
StatusView
.
render
(
"show.json"
,
%{
activity
:
post
,
for
:
other_user
})
assert
rendered_for_other_user
.
favourites_count
==
1
assert
rendered_for_other_user
.
favourited
# Getting the favourited by
[
liking_user
]
=
conn
|>
get
(
"/api/v1/statuses/
#{
post
.
id
}
/favourited_by"
)
|>
json_response
(
200
)
assert
liking_user
[
"id"
]
==
other_user
.
id
# Notification is removed
assert
[]
==
conn
|>
get
(
"/api/v1/notifications"
)
|>
json_response
(
200
)
# Favoriting again doesn't hurt
{
:ok
,
_like_two
}
=
CommonAPI
.
favorite
(
other_user
,
post
.
id
)
post
=
Repo
.
get
(
Activity
,
post
.
id
)
# Rendering the liked status
rendered_for_user
=
StatusView
.
render
(
"show.json"
,
%{
activity
:
post
,
for
:
user
})
assert
rendered_for_user
.
favourites_count
==
1
# General fallout: Can't unfavorite stuff anymore. Acceptable for remote users.
end
end
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Oct 2, 4:44 AM (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
475362
Default Alt Text
resilience_test.exs (2 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment