annotate tests/test_silos_bluesky.py @ 58:d65f6dced79f

Fix media callback patches in unit tests
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 28 Oct 2023 11:52:25 -0700
parents 486affad656e
children c4dbbbb4990a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
46
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 import pytest
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 import atproto.xrpc_client.models as atprotomodels
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 from .mockutil import mock_urllib
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 def test_one_article(cli, feedutil, bskymock):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 feed = cli.createTempFeed(feedutil.makeFeed(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 """<h1 class="p-name">A new article</h1>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 <div class="e-content">
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 <p>This is the text of the article.</p>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 <p>It has 2 paragraphs.</p>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 </div>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 <a class="u-url" href="https://example.org/a-new-article">permalink</a>"""
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 ))
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 cli.appendSiloConfig('test', 'bluesky')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 cli.setFeedConfig('feed', feed)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 bskymock.installCredentials(cli, 'test')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 ctx, _ = cli.run('process')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 assert ctx.cache.wasPosted('test', 'https://example.org/a-new-article')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 post = ctx.silos[0].client.posts[0]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 assert post == ('A new article https://example.org/a-new-article',
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 None, None)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 def test_one_micropost(cli, feedutil, bskymock):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 feed = cli.createTempFeed(feedutil.makeFeed(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 """<p class="p-name">This is a quick update.</p>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 <a class="u-url" href="/01234.html">permalink</a>"""
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 ))
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 cli.appendSiloConfig('test', 'bluesky')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 cli.setFeedConfig('feed', feed)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 bskymock.installCredentials(cli, 'test')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 ctx, _ = cli.run('process')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 assert ctx.cache.wasPosted('test', '/01234.html')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 post = ctx.silos[0].client.posts[0]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 assert post == ("This is a quick update.", None, None)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 def test_one_micropost_with_one_photo(cli, feedutil, bskymock, monkeypatch):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 feed = cli.createTempFeed(feedutil.makeFeed(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 """<p class="p-name">This is a quick photo update.</p>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 <div>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 <a class="u-photo" href="/fullimg.jpg"><img src="/thumbimg.jpg"/></a>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 </div>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 <a class="u-url" href="/01234.html">permalink</a>"""
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 ))
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52 cli.appendSiloConfig('test', 'bluesky')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 cli.setFeedConfig('feed', feed)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 bskymock.installCredentials(cli, 'test')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56 with monkeypatch.context() as m:
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57 import silorider.silos.bluesky
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 mock_urllib(m)
58
d65f6dced79f Fix media callback patches in unit tests
Ludovic Chabant <ludovic@chabant.com>
parents: 48
diff changeset
59 m.setattr(silorider.silos.bluesky.BlueskySilo, 'mediaCallback',
46
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60 _patched_media_callback)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61 ctx, _ = cli.run('process')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 assert ctx.cache.wasPosted('test', '/01234.html')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64 blob = ctx.silos[0].client.blobs[0]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
65 assert blob == ('/retrieved/fullimg.jpg', None)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
66 post = ctx.silos[0].client.posts[0]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
67 embed = atprotomodels.AppBskyEmbedImages.Main(images=[1])
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
68 assert post == ("This is a quick photo update.", embed, None)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
69
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
70
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
71 def test_one_micropost_with_two_photos(cli, feedutil, bskymock, monkeypatch):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
72 feed = cli.createTempFeed(feedutil.makeFeed(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
73 """<p class="p-name">This is a photo update with 2 photos.</p>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
74 <div>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
75 <a class="u-photo" href="/fullimg1.jpg"><img src="/thumbimg1.jpg"/></a>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
76 <a class="u-photo" href="/fullimg2.jpg"><img src="/thumbimg2.jpg"/></a>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
77 </div>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
78 <a class="u-url" href="/01234.html">permalink</a>"""
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
79 ))
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
80
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
81 cli.appendSiloConfig('test', 'bluesky')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
82 cli.setFeedConfig('feed', feed)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
83 bskymock.installCredentials(cli, 'test')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
84
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
85 with monkeypatch.context() as m:
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
86 import silorider.silos.bluesky
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
87 mock_urllib(m)
58
d65f6dced79f Fix media callback patches in unit tests
Ludovic Chabant <ludovic@chabant.com>
parents: 48
diff changeset
88 m.setattr(silorider.silos.bluesky.BlueskySilo, 'mediaCallback',
46
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
89 _patched_media_callback)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
90 ctx, _ = cli.run('process')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
91
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
92 assert ctx.cache.wasPosted('test', '/01234.html')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
93 blob = ctx.silos[0].client.blobs[0]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
94 assert blob == ('/retrieved/fullimg1.jpg', None)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
95 blob = ctx.silos[0].client.blobs[1]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
96 assert blob == ('/retrieved/fullimg2.jpg', None)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
97 post = ctx.silos[0].client.posts[0]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
98 embed = atprotomodels.AppBskyEmbedImages.Main(images=[1, 2])
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
99 assert post == ("This is a photo update with 2 photos.", embed, None)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
100
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
101
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
102 def test_one_micropost_with_links(cli, feedutil, bskymock):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
103 cli.appendSiloConfig('test', 'bluesky')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
104 bskymock.installCredentials(cli, 'test')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
105
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
106 feed = cli.createTempFeed(feedutil.makeFeed(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
107 """<p class="p-name">This is a link: http://example.org/blah</p>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
108 <a class="u-url" href="/01234.html">permalink</a>"""))
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
109
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
110 cli.setFeedConfig('feed', feed)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
111 ctx, _ = cli.run('process')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
112 post = ctx.silos[0].client.posts[0]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
113 assert post[0] == "This is a link: http://example.org/blah"
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
114 assert post[2] == None
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
115
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
116 feed = cli.createTempFeed(feedutil.makeFeed(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
117 """<p class="e-content">This is another link: <a href="http://example.org/blah">http://example.org/blah</a></p>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
118 <a class="u-url" href="/01234.html">permalink</a>""")) # NOQA
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
119 cli.setFeedConfig('feed', feed)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
120 ctx, _ = cli.run('process')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
121 post = ctx.silos[0].client.posts[0]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
122 assert post[0] == "This is another link: http://example.org/blah" # NOQA
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
123 facet = _make_link_facet('http://example.org/blah', 22, 45)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
124 assert post[2] == [facet]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
125
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
126 feed = cli.createTempFeed(feedutil.makeFeed(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
127 """<p class="e-content">This is yet <a href="http://example.org/blah">another link</a></p>
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
128 <a class="u-url" href="/01234.html">permalink</a>""")) # NOQA
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
129 cli.setFeedConfig('feed', feed)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
130 ctx, _ = cli.run('process')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
131 post = ctx.silos[0].client.posts[0]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
132 assert post[0] == "This is yet another link" # NOQA
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
133 facet = _make_link_facet('http://example.org/blah', 12, 24)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
134 assert post[2] == [facet]
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
135
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
136
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
137 def _make_link_facet(url, start, end):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
138 return atprotomodels.AppBskyRichtextFacet.Main(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
139 features=[atprotomodels.AppBskyRichtextFacet.Link(uri=url)],
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
140 index=atprotomodels.AppBskyRichtextFacet.ByteSlice(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
141 byteStart=start, byteEnd=end),
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
142 )
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
143
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
144
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
145 def _patched_media_callback(self, tmpfile, mt, url, desc):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
146 return self.client.upload_blob(tmpfile, desc)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
147
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
148
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
149 @pytest.fixture(scope='session')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
150 def bskymock():
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
151 from silorider.silos.bluesky import BlueskySilo
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
152 BlueskySilo._CLIENT_CLASS = BlueskyMock
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
153 return BlueskyMockUtil()
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
154
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
155
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
156 class BlueskyMock:
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
157 def __init__(self, base_url):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
158 # base_url is unused here.
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
159 self.posts = []
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
160 self.blobs = []
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
161
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
162 def login(self, email, password):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
163 assert email == 'TEST_EMAIL'
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
164 assert password == 'TEST_PASSWORD'
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
165
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
166 def upload_blob(self, tmpfile, desc):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
167 self.blobs.append((tmpfile, desc))
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
168 return len(self.blobs)
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
169
48
486affad656e Rewrite posting process with card system and more structured API
Ludovic Chabant <ludovic@chabant.com>
parents: 46
diff changeset
170 def send_post(self, text, post_datetime=None, embed=None, facets=None):
46
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
171 self.posts.append((text, embed, facets))
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
172
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
173
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
174 class BlueskyMockUtil:
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
175 def installCredentials(self, cli, silo_name):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
176 def do_install_credentials(ctx):
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
177 ctx.cache.setCustomValue(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
178 '%s_email' % silo_name,
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
179 'TEST_EMAIL')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
180 ctx.cache.setCustomValue(
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
181 '%s_password' % silo_name,
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
182 'TEST_PASSWORD')
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
183
ac5911e76ef2 Add Bluesky silo
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
184 cli.preExecHook(do_install_credentials)