Mercurial > silorider
view tests/test_silos_webmention.py @ 60:b7da3d97ea99
Add profile URL handlers
Silos register these handlers so that everybody knows if a hyperlink is
a mention to another user on a particular social network. If any handler
matches, silos not related to that social media will skip that link.
It's possible than in rare cases we want that link everywhere, but so
far I haven't needed it, compared to all the times I didn't want these
links.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 28 Oct 2023 11:57:04 -0700 |
parents | d3c4c5082bbc |
children |
line wrap: on
line source
import unittest.mock import requests def test_one_article_no_mentions(cli, feedutil): feed = cli.createTempFeed(feedutil.makeFeed( """<h1 class="p-name">A new article</h1> <div class="e-content"> <p>This is the abstract of the article.</p> <p>Read more at <a class="u-url" href="https://example.org/a-new-article">permalink</a>.</p> </div> """ # NOQA )) cli.appendSiloConfig('test', 'webmention', url='/blah') cli.setFeedConfig('feed', feed) with unittest.mock.patch('requests.get') as mock_get, \ unittest.mock.patch('requests.post') as mock_post: mock_get.side_effect = [ _MockResponse('')] mock_post.side_effect = [] ctx, _ = cli.run('process') assert mock_get.call_args_list[0][0] == ('https://example.org/a-new-article',) # NOQA def test_one_article_one_mention(cli, feedutil): feed = cli.createTempFeed(feedutil.makeFeed( """<h1 class="p-name">A new article</h1> <div class="e-content"> <p>This is the abstract of the article.</p> <p>Read more at <a class="u-url" href="https://example.org/a-new-article">permalink</a>.</p> </div> """ # NOQA )) cli.appendSiloConfig('test', 'webmention', url='/blah') cli.setFeedConfig('feed', feed) with unittest.mock.patch('requests.get') as mock_get, \ unittest.mock.patch('requests.post') as mock_post: mock_get.side_effect = [ _MockResponse(""" <p>This is a reply to <a href="https://other.org/article">another article<a>.</p> """), # NOQA _MockResponse(""" <html><head> <link rel="webmention" href="https://other.org/webmention"> </head><body> </body></html>""")] mock_post.side_effect = [ _MockResponse('')] ctx, _ = cli.run('process') assert mock_get.call_args_list[0][0] == ('https://example.org/a-new-article',) # NOQA assert mock_get.call_args_list[1][0] == ('https://other.org/article',) # NOQA assert mock_post.call_args_list[0][0] == ('https://other.org/webmention',) # NOQA class _MockResponse: def __init__(self, txt): self.status_code = requests.codes.ok self.headers = {} self.history = [] self.text = self.content = txt