Mercurial > silorider
view tests/test_silos_webmention.py @ 27:c898b4df0f29
Use context for html stripping, with support for custom URL sizes
For instance in Twitter URLs are 23 characters long since they use their
own URL shortening service. Without taking this into account, post lengths
would not be calculated correctly.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 19 Apr 2023 12:46:58 -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