Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F33095669
keyword_policy_test.exs
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
11 KB
Referenced Files
None
Subscribers
None
keyword_policy_test.exs
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.ActivityPub.MRF.KeywordPolicyTest
do
use
Pleroma.DataCase
alias
Pleroma.Web.ActivityPub.MRF.KeywordPolicy
setup
do
:
clear_config
(
:mrf_keyword
)
setup
do
clear_config
([
:mrf_keyword
],
%{
reject
:
[],
federated_timeline_removal
:
[],
replace
:
[]})
end
describe
"rejecting based on keywords"
do
test
"rejects if string matches in content"
do
clear_config
([
:mrf_keyword
,
:reject
],
[
"pun"
])
message
=
%{
"type"
=>
"Create"
,
"object"
=>
%{
"content"
=>
"just a daily reminder that compLAINer is a good pun"
,
"summary"
=>
""
}
}
assert
{
:reject
,
"[KeywordPolicy] Matches with rejected keyword"
}
=
KeywordPolicy
.
filter
(
message
)
end
test
"rejects if string matches in summary"
do
clear_config
([
:mrf_keyword
,
:reject
],
[
"pun"
])
message
=
%{
"type"
=>
"Create"
,
"object"
=>
%{
"summary"
=>
"just a daily reminder that compLAINer is a good pun"
,
"content"
=>
""
}
}
assert
{
:reject
,
"[KeywordPolicy] Matches with rejected keyword"
}
=
KeywordPolicy
.
filter
(
message
)
end
test
"rejects if regex matches in content"
do
clear_config
([
:mrf_keyword
,
:reject
],
[
~r/comp[lL][aA][iI][nN]er/
])
assert
true
==
Enum
.
all?
([
"complainer"
,
"compLainer"
,
"compLAiNer"
,
"compLAINer"
],
fn
content
->
message
=
%{
"type"
=>
"Create"
,
"object"
=>
%{
"content"
=>
"just a daily reminder that
#{
content
}
is a good pun"
,
"summary"
=>
""
}
}
{
:reject
,
"[KeywordPolicy] Matches with rejected keyword"
}
==
KeywordPolicy
.
filter
(
message
)
end
)
end
test
"rejects if regex matches in summary"
do
clear_config
([
:mrf_keyword
,
:reject
],
[
~r/comp[lL][aA][iI][nN]er/
])
assert
true
==
Enum
.
all?
([
"complainer"
,
"compLainer"
,
"compLAiNer"
,
"compLAINer"
],
fn
content
->
message
=
%{
"type"
=>
"Create"
,
"object"
=>
%{
"summary"
=>
"just a daily reminder that
#{
content
}
is a good pun"
,
"content"
=>
""
}
}
{
:reject
,
"[KeywordPolicy] Matches with rejected keyword"
}
==
KeywordPolicy
.
filter
(
message
)
end
)
end
test
"rejects if string matches in history"
do
clear_config
([
:mrf_keyword
,
:reject
],
[
"pun"
])
message
=
%{
"type"
=>
"Create"
,
"object"
=>
%{
"content"
=>
"just a daily reminder that compLAINer is a good"
,
"summary"
=>
""
,
"formerRepresentations"
=>
%{
"type"
=>
"OrderedCollection"
,
"orderedItems"
=>
[
%{
"content"
=>
"just a daily reminder that compLAINer is a good pun"
,
"summary"
=>
""
}
]
}
}
}
assert
{
:reject
,
"[KeywordPolicy] Matches with rejected keyword"
}
=
KeywordPolicy
.
filter
(
message
)
end
test
"rejects Updates"
do
clear_config
([
:mrf_keyword
,
:reject
],
[
"pun"
])
message
=
%{
"type"
=>
"Update"
,
"object"
=>
%{
"content"
=>
"just a daily reminder that compLAINer is a good"
,
"summary"
=>
""
,
"formerRepresentations"
=>
%{
"type"
=>
"OrderedCollection"
,
"orderedItems"
=>
[
%{
"content"
=>
"just a daily reminder that compLAINer is a good pun"
,
"summary"
=>
""
}
]
}
}
}
assert
{
:reject
,
"[KeywordPolicy] Matches with rejected keyword"
}
=
KeywordPolicy
.
filter
(
message
)
end
end
describe
"delisting from ftl based on keywords"
do
test
"delists if string matches in content"
do
clear_config
([
:mrf_keyword
,
:federated_timeline_removal
],
[
"pun"
])
message
=
%{
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"type"
=>
"Create"
,
"object"
=>
%{
"content"
=>
"just a daily reminder that compLAINer is a good pun"
,
"summary"
=>
""
}
}
{
:ok
,
result
}
=
KeywordPolicy
.
filter
(
message
)
assert
[
"https://www.w3.org/ns/activitystreams
#
Public"
]
==
result
[
"cc"
]
refute
[
"https://www.w3.org/ns/activitystreams
#
Public"
]
==
result
[
"to"
]
end
test
"delists if string matches in summary"
do
clear_config
([
:mrf_keyword
,
:federated_timeline_removal
],
[
"pun"
])
message
=
%{
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"type"
=>
"Create"
,
"object"
=>
%{
"summary"
=>
"just a daily reminder that compLAINer is a good pun"
,
"content"
=>
""
}
}
{
:ok
,
result
}
=
KeywordPolicy
.
filter
(
message
)
assert
[
"https://www.w3.org/ns/activitystreams
#
Public"
]
==
result
[
"cc"
]
refute
[
"https://www.w3.org/ns/activitystreams
#
Public"
]
==
result
[
"to"
]
end
test
"delists if regex matches in content"
do
clear_config
([
:mrf_keyword
,
:federated_timeline_removal
],
[
~r/comp[lL][aA][iI][nN]er/
])
assert
true
==
Enum
.
all?
([
"complainer"
,
"compLainer"
,
"compLAiNer"
,
"compLAINer"
],
fn
content
->
message
=
%{
"type"
=>
"Create"
,
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"object"
=>
%{
"content"
=>
"just a daily reminder that
#{
content
}
is a good pun"
,
"summary"
=>
""
}
}
{
:ok
,
result
}
=
KeywordPolicy
.
filter
(
message
)
[
"https://www.w3.org/ns/activitystreams
#
Public"
]
==
result
[
"cc"
]
and
not
([
"https://www.w3.org/ns/activitystreams
#
Public"
]
==
result
[
"to"
])
end
)
end
test
"delists if regex matches in summary"
do
clear_config
([
:mrf_keyword
,
:federated_timeline_removal
],
[
~r/comp[lL][aA][iI][nN]er/
])
assert
true
==
Enum
.
all?
([
"complainer"
,
"compLainer"
,
"compLAiNer"
,
"compLAINer"
],
fn
content
->
message
=
%{
"type"
=>
"Create"
,
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"object"
=>
%{
"summary"
=>
"just a daily reminder that
#{
content
}
is a good pun"
,
"content"
=>
""
}
}
{
:ok
,
result
}
=
KeywordPolicy
.
filter
(
message
)
[
"https://www.w3.org/ns/activitystreams
#
Public"
]
==
result
[
"cc"
]
and
not
([
"https://www.w3.org/ns/activitystreams
#
Public"
]
==
result
[
"to"
])
end
)
end
test
"delists if string matches in history"
do
clear_config
([
:mrf_keyword
,
:federated_timeline_removal
],
[
"pun"
])
message
=
%{
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"type"
=>
"Create"
,
"object"
=>
%{
"content"
=>
"just a daily reminder that compLAINer is a good"
,
"summary"
=>
""
,
"formerRepresentations"
=>
%{
"orderedItems"
=>
[
%{
"content"
=>
"just a daily reminder that compLAINer is a good pun"
,
"summary"
=>
""
}
]
}
}
}
{
:ok
,
result
}
=
KeywordPolicy
.
filter
(
message
)
assert
[
"https://www.w3.org/ns/activitystreams
#
Public"
]
==
result
[
"cc"
]
refute
[
"https://www.w3.org/ns/activitystreams
#
Public"
]
==
result
[
"to"
]
end
end
describe
"replacing keywords"
do
test
"replaces keyword if string matches in content"
do
clear_config
([
:mrf_keyword
,
:replace
],
[{
"opensource"
,
"free software"
}])
message
=
%{
"type"
=>
"Create"
,
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"object"
=>
%{
"content"
=>
"ZFS is opensource"
,
"summary"
=>
""
}
}
{
:ok
,
%{
"object"
=>
%{
"content"
=>
result
}}}
=
KeywordPolicy
.
filter
(
message
)
assert
result
==
"ZFS is free software"
end
test
"replaces keyword if string matches in summary"
do
clear_config
([
:mrf_keyword
,
:replace
],
[{
"opensource"
,
"free software"
}])
message
=
%{
"type"
=>
"Create"
,
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"object"
=>
%{
"summary"
=>
"ZFS is opensource"
,
"content"
=>
""
}
}
{
:ok
,
%{
"object"
=>
%{
"summary"
=>
result
}}}
=
KeywordPolicy
.
filter
(
message
)
assert
result
==
"ZFS is free software"
end
test
"replaces keyword if regex matches in content"
do
clear_config
([
:mrf_keyword
,
:replace
],
[
{
~r/open(-|
\s
)?source
\s
?(software)?/
,
"free software"
}
])
assert
true
==
Enum
.
all?
([
"opensource"
,
"open-source"
,
"open source"
],
fn
content
->
message
=
%{
"type"
=>
"Create"
,
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"object"
=>
%{
"content"
=>
"ZFS is
#{
content
}
"
,
"summary"
=>
""
}
}
{
:ok
,
%{
"object"
=>
%{
"content"
=>
result
}}}
=
KeywordPolicy
.
filter
(
message
)
result
==
"ZFS is free software"
end
)
end
test
"replaces keyword if regex matches in summary"
do
clear_config
([
:mrf_keyword
,
:replace
],
[
{
~r/open(-|
\s
)?source
\s
?(software)?/
,
"free software"
}
])
assert
true
==
Enum
.
all?
([
"opensource"
,
"open-source"
,
"open source"
],
fn
content
->
message
=
%{
"type"
=>
"Create"
,
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"object"
=>
%{
"summary"
=>
"ZFS is
#{
content
}
"
,
"content"
=>
""
}
}
{
:ok
,
%{
"object"
=>
%{
"summary"
=>
result
}}}
=
KeywordPolicy
.
filter
(
message
)
result
==
"ZFS is free software"
end
)
end
test
"replaces keyword if string matches in history"
do
clear_config
([
:mrf_keyword
,
:replace
],
[{
"opensource"
,
"free software"
}])
message
=
%{
"type"
=>
"Create"
,
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"object"
=>
%{
"content"
=>
"ZFS is opensource"
,
"summary"
=>
""
,
"formerRepresentations"
=>
%{
"type"
=>
"OrderedCollection"
,
"orderedItems"
=>
[
%{
"content"
=>
"ZFS is opensource mew mew"
,
"summary"
=>
""
}
]
}
}
}
{
:ok
,
%{
"object"
=>
%{
"content"
=>
"ZFS is free software"
,
"formerRepresentations"
=>
%{
"orderedItems"
=>
[%{
"content"
=>
"ZFS is free software mew mew"
}]
}
}
}}
=
KeywordPolicy
.
filter
(
message
)
end
test
"replaces keyword in Updates"
do
clear_config
([
:mrf_keyword
,
:replace
],
[{
"opensource"
,
"free software"
}])
message
=
%{
"type"
=>
"Update"
,
"to"
=>
[
"https://www.w3.org/ns/activitystreams
#
Public"
],
"object"
=>
%{
"content"
=>
"ZFS is opensource"
,
"summary"
=>
""
,
"formerRepresentations"
=>
%{
"type"
=>
"OrderedCollection"
,
"orderedItems"
=>
[
%{
"content"
=>
"ZFS is opensource mew mew"
,
"summary"
=>
""
}
]
}
}
}
{
:ok
,
%{
"object"
=>
%{
"content"
=>
"ZFS is free software"
,
"formerRepresentations"
=>
%{
"orderedItems"
=>
[%{
"content"
=>
"ZFS is free software mew mew"
}]
}
}
}}
=
KeywordPolicy
.
filter
(
message
)
end
end
end
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Jan 20, 9:26 AM (1 d, 22 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
963996
Default Alt Text
keyword_policy_test.exs (11 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment