feat: filter site bodies before media upload
This commit is contained in:
@@ -35,6 +35,13 @@ class FollowedPageResponse(FakeResponse):
|
||||
return data
|
||||
|
||||
|
||||
class EmptyBodyResponse(FakeResponse):
|
||||
async def json(self, **_kwargs):
|
||||
data = await super().json(**_kwargs)
|
||||
data["items"][0]["text"] = ""
|
||||
return data
|
||||
|
||||
|
||||
class FakeSession:
|
||||
def post(self, *_args, **_kwargs):
|
||||
return FakeResponse()
|
||||
@@ -45,6 +52,11 @@ class FollowedPageSession(FakeSession):
|
||||
return FollowedPageResponse()
|
||||
|
||||
|
||||
class EmptyBodySession(FakeSession):
|
||||
def post(self, *_args, **_kwargs):
|
||||
return EmptyBodyResponse()
|
||||
|
||||
|
||||
class SourceAdapterTests(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_worker_response_is_normalized(self) -> None:
|
||||
client = SiteParserClient(FakeSession(), "http://worker", "token", "captcha", 30)
|
||||
@@ -66,6 +78,17 @@ class SourceAdapterTests(unittest.IsolatedAsyncioTestCase):
|
||||
"runtime_state_json": "{}",
|
||||
})
|
||||
self.assertEqual(items[0].text, "Title\nAuthor")
|
||||
self.assertEqual(items[0].body_text, "Title\nAuthor")
|
||||
|
||||
async def test_title_is_not_counted_as_site_body(self) -> None:
|
||||
client = SiteParserClient(EmptyBodySession(), "http://worker", "token", "captcha", 30)
|
||||
items, _ = await client.fetch({
|
||||
"url": "https://example.test/rss.xml",
|
||||
"settings_json": '{"format":"rss"}',
|
||||
"runtime_state_json": "{}",
|
||||
})
|
||||
self.assertEqual(items[0].text, "Title")
|
||||
self.assertEqual(items[0].body_text, "")
|
||||
|
||||
def test_site_config_is_required(self) -> None:
|
||||
with self.assertRaisesRegex(ValueError, "нужен конфиг"):
|
||||
@@ -75,6 +98,10 @@ class SourceAdapterTests(unittest.IsolatedAsyncioTestCase):
|
||||
with self.assertRaisesRegex(ValueError, "content_selector"):
|
||||
validate_source_config("site", {"format": "rss", "follow_links": True})
|
||||
|
||||
def test_site_min_text_length_is_validated(self) -> None:
|
||||
with self.assertRaisesRegex(ValueError, "min_text_length"):
|
||||
validate_source_config("site", {"format": "rss", "min_text_length": "many"})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user