Mercurial > silorider
comparison tests/test_silos_bluesky.py @ 69:dafbbf25bfc8
Upgrade bluesky silo to atproto 0.0.35 and unit tests.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 26 Dec 2023 16:55:22 -0800 |
parents | c4dbbbb4990a |
children | 08ee3ffbe508 |
comparison
equal
deleted
inserted
replaced
68:c678ca85cc25 | 69:dafbbf25bfc8 |
---|---|
1 import os.path | |
1 import pytest | 2 import pytest |
2 import atproto.xrpc_client.models as atprotomodels | 3 from atproto import models as atprotomodels |
3 from .mockutil import mock_urllib | 4 from .mockutil import mock_urllib |
4 | 5 |
5 | 6 |
6 def test_one_article(cli, feedutil, bskymock): | 7 def test_one_article(cli, feedutil, bskymock): |
7 feed = cli.createTempFeed(feedutil.makeFeed( | 8 feed = cli.createTempFeed(feedutil.makeFeed( |
18 bskymock.installCredentials(cli, 'test') | 19 bskymock.installCredentials(cli, 'test') |
19 | 20 |
20 ctx, _ = cli.run('process') | 21 ctx, _ = cli.run('process') |
21 assert ctx.cache.wasPosted('test', 'https://example.org/a-new-article') | 22 assert ctx.cache.wasPosted('test', 'https://example.org/a-new-article') |
22 post = ctx.silos[0].client.posts[0] | 23 post = ctx.silos[0].client.posts[0] |
23 assert post == ('A new article https://example.org/a-new-article', | 24 assert post == ( |
24 None, None) | 25 'A new article https://example.org/a-new-article', |
26 None, | |
27 [_make_link_facet('https://example.org/a-new-article', 14, 47)]) | |
25 | 28 |
26 | 29 |
27 def test_one_micropost(cli, feedutil, bskymock): | 30 def test_one_micropost(cli, feedutil, bskymock): |
28 feed = cli.createTempFeed(feedutil.makeFeed( | 31 feed = cli.createTempFeed(feedutil.makeFeed( |
29 """<p class="p-name">This is a quick update.</p> | 32 """<p class="p-name">This is a quick update.</p> |
54 bskymock.installCredentials(cli, 'test') | 57 bskymock.installCredentials(cli, 'test') |
55 | 58 |
56 with monkeypatch.context() as m: | 59 with monkeypatch.context() as m: |
57 import silorider.silos.bluesky | 60 import silorider.silos.bluesky |
58 mock_urllib(m) | 61 mock_urllib(m) |
62 m.setattr(os.path, 'getsize', lambda path: 42) | |
59 m.setattr(silorider.silos.bluesky.BlueskySilo, 'mediaCallback', | 63 m.setattr(silorider.silos.bluesky.BlueskySilo, 'mediaCallback', |
60 _patched_media_callback) | 64 _patched_media_callback) |
61 ctx, _ = cli.run('process') | 65 ctx, _ = cli.run('process') |
62 | 66 |
63 assert ctx.cache.wasPosted('test', '/01234.html') | 67 assert ctx.cache.wasPosted('test', '/01234.html') |
85 bskymock.installCredentials(cli, 'test') | 89 bskymock.installCredentials(cli, 'test') |
86 | 90 |
87 with monkeypatch.context() as m: | 91 with monkeypatch.context() as m: |
88 import silorider.silos.bluesky | 92 import silorider.silos.bluesky |
89 mock_urllib(m) | 93 mock_urllib(m) |
94 m.setattr(os.path, 'getsize', lambda path: 42) | |
90 m.setattr(silorider.silos.bluesky.BlueskySilo, 'mediaCallback', | 95 m.setattr(silorider.silos.bluesky.BlueskySilo, 'mediaCallback', |
91 _patched_media_callback) | 96 _patched_media_callback) |
92 ctx, _ = cli.run('process') | 97 ctx, _ = cli.run('process') |
93 | 98 |
94 assert ctx.cache.wasPosted('test', '/01234.html') | 99 assert ctx.cache.wasPosted('test', '/01234.html') |
160 def _make_atproto_image(link, alt="", mime_type="image/jpg", size=100, test_index=None): | 165 def _make_atproto_image(link, alt="", mime_type="image/jpg", size=100, test_index=None): |
161 # atproto will validate models and that forces us to create | 166 # atproto will validate models and that forces us to create |
162 # an actual Image object. | 167 # an actual Image object. |
163 # Not sure why we need to use model_validate here -- the simple | 168 # Not sure why we need to use model_validate here -- the simple |
164 # constructor with keywords throws a validation error :( | 169 # constructor with keywords throws a validation error :( |
165 blob_link = atprotomodels.blob_ref.BlobRefLink.model_validate({'$link': link}) | 170 blob_link = atprotomodels.blob_ref.IpldLink.model_validate({'$link': link}) |
166 blob = atprotomodels.blob_ref.BlobRef(mime_type=mime_type, ref=blob_link, size=size) | 171 blob = atprotomodels.blob_ref.BlobRef(mime_type=mime_type, ref=blob_link, size=size) |
167 img = atprotomodels.AppBskyEmbedImages.Image(alt=alt, image=blob) | 172 img = atprotomodels.AppBskyEmbedImages.Image(alt=alt, image=blob) |
168 if test_index is not None: | 173 if test_index is not None: |
169 img.__test_index = test_index | 174 img.__test_index = test_index |
170 return img | 175 return img |