annotate tests/test_silos_webmention.py @ 20:a45587268314

Add missing `ronkyuu` dependency.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 19 Jan 2019 17:35:10 -0800
parents d3c4c5082bbc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 import unittest.mock
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 import requests
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 def test_one_article_no_mentions(cli, feedutil):
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 feed = cli.createTempFeed(feedutil.makeFeed(
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 """<h1 class="p-name">A new article</h1>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 <div class="e-content">
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 <p>This is the abstract of the article.</p>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 <p>Read more at <a class="u-url" href="https://example.org/a-new-article">permalink</a>.</p>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 </div>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 """ # NOQA
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 ))
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 cli.appendSiloConfig('test', 'webmention', url='/blah')
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 cli.setFeedConfig('feed', feed)
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 with unittest.mock.patch('requests.get') as mock_get, \
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 unittest.mock.patch('requests.post') as mock_post:
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 mock_get.side_effect = [
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 _MockResponse('')]
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 mock_post.side_effect = []
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 ctx, _ = cli.run('process')
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 assert mock_get.call_args_list[0][0] == ('https://example.org/a-new-article',) # NOQA
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 def test_one_article_one_mention(cli, feedutil):
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 feed = cli.createTempFeed(feedutil.makeFeed(
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 """<h1 class="p-name">A new article</h1>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 <div class="e-content">
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 <p>This is the abstract of the article.</p>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 <p>Read more at <a class="u-url" href="https://example.org/a-new-article">permalink</a>.</p>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 </div>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 """ # NOQA
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 ))
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 cli.appendSiloConfig('test', 'webmention', url='/blah')
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 cli.setFeedConfig('feed', feed)
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 with unittest.mock.patch('requests.get') as mock_get, \
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 unittest.mock.patch('requests.post') as mock_post:
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 mock_get.side_effect = [
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 _MockResponse("""
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 <p>This is a reply to <a href="https://other.org/article">another article<a>.</p>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 """), # NOQA
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 _MockResponse("""
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 <html><head>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 <link rel="webmention" href="https://other.org/webmention">
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 </head><body>
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 </body></html>""")]
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 mock_post.side_effect = [
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 _MockResponse('')]
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 ctx, _ = cli.run('process')
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 assert mock_get.call_args_list[0][0] == ('https://example.org/a-new-article',) # NOQA
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 assert mock_get.call_args_list[1][0] == ('https://other.org/article',) # NOQA
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56 assert mock_post.call_args_list[0][0] == ('https://other.org/webmention',) # NOQA
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59 class _MockResponse:
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 def __init__(self, txt):
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61 self.status_code = requests.codes.ok
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62 self.headers = {}
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 self.history = []
d3c4c5082bbc Add Webmention silo.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64 self.text = self.content = txt