Ejemplo n.º 1
0
    def test_edit__with_reason(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, 'test')

        self.reddit.read_only = False
        with self.recorder.use_cassette('TestWikiPage.test_edit__with_reason'):
            page.edit('PRAW updated with reason', reason='PRAW testing')
Ejemplo n.º 2
0
    def test_edit(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "test")

        self.reddit.read_only = False
        with self.use_cassette():
            page.edit("PRAW updated")
Ejemplo n.º 3
0
    def test_edit__with_reason(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "test")

        self.reddit.read_only = False
        with self.recorder.use_cassette("TestWikiPage.test_edit__with_reason"):
            page.edit("PRAW updated with reason", reason="PRAW testing")
Ejemplo n.º 4
0
 def _update_wiki_page(self, wiki_page: WikiPage,
                       new_config: Dict) -> NoReturn:
     log.info('Writing new config to %s', wiki_page.subreddit.display_name)
     log.debug('New Config For %s: %s', wiki_page.subreddit.display_name,
               new_config)
     # TODO - Check what exceptions can be thrown here
     wiki_page.edit(json.dumps(new_config))
Ejemplo n.º 5
0
    def test_edit__with_reason(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "test")

        self.reddit.read_only = False
        with self.recorder.use_cassette("TestWikiPage.test_edit__with_reason"):
            page.edit("PRAW updated with reason", reason="PRAW testing")
Ejemplo n.º 6
0
    def test_edit__with_reason(self):
        subreddit = self.reddit.subreddit(
            pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, 'test')

        self.reddit.read_only = False
        with self.recorder.use_cassette('TestWikiPage.test_edit__with_reason'):
            page.edit('PRAW updated with reason', reason='PRAW testing')
Ejemplo n.º 7
0
    def test_revert(self, _):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "test")

        self.reddit.read_only = False
        with self.use_cassette():
            revision_id = next(page.revisions(limit=1))["id"]
            page.revision(revision_id).mod.revert()
Ejemplo n.º 8
0
    def test_edit__usernotes(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "usernotes")
        with open("tests/integration/files/too_large.jpg", "rb") as fp:
            large_content = urlsafe_b64encode(fp.read()).decode()

        self.reddit.read_only = False
        with self.use_cassette():
            page.edit(large_content)
Ejemplo n.º 9
0
    def test_edit__usernotes(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "usernotes")
        with open("tests/integration/files/too_large.jpg", "rb") as fp:
            large_content = urlsafe_b64encode(fp.read()).decode()

        self.reddit.read_only = False
        with self.use_cassette(placeholders=self.recorder.configure(
        ).default_cassette_options["placeholders"] + [{
                "placeholder": "<CONTENT>",
                "replace": large_content
        }]):
            page.edit(large_content)
Ejemplo n.º 10
0
def update_or_create(sub: Subreddit, page: WikiPage, new_content: str, dry_run, edit_reason='Automatic update'):
    try:
        if new_content != page.content_md:
            print(diff_strings(page.content_md, new_content))
            if not dry_run:
                page.edit(new_content, reason=edit_reason)
    except NotFound:
        name = page.name
        while name.startswith('/'):
            name = name[1:]
        print(diff_strings("", new_content))
        if not dry_run:
            sub.wiki.create(name, new_content, reason=edit_reason)
Ejemplo n.º 11
0
    def test_content_md(self):
        subreddit = self.reddit.subreddit(
            pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, 'test')

        with self.recorder.use_cassette('TestWikiPage.test_content_md'):
            assert page.content_md
Ejemplo n.º 12
0
 def test_invalid_page(self):
     subreddit = self.reddit.subreddit(
         pytest.placeholders.test_subreddit)
     page = WikiPage(self.reddit, subreddit, 'invalid')
     with self.recorder.use_cassette('TestWikiPage.test_invalid_page'):
         with pytest.raises(NotFound):
             page.content_md
Ejemplo n.º 13
0
    def test_revision_by(self):
        subreddit = self.reddit.subreddit(
            pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, 'test')

        with self.recorder.use_cassette('TestWikiPage.test_revision_by'):
            assert isinstance(page.revision_by, Redditor)
Ejemplo n.º 14
0
 def test_pickle(self):
     page = WikiPage(self.reddit,
                     subreddit=Subreddit(self.reddit, "a"),
                     name="x")
     for level in range(pickle.HIGHEST_PROTOCOL + 1):
         other = pickle.loads(pickle.dumps(page, protocol=level))
         assert page == other
Ejemplo n.º 15
0
    def test_remove(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "test")

        self.reddit.read_only = False
        with self.recorder.use_cassette("TestWikiPageModeration.test_remove"):
            page.mod.remove("bboe")
Ejemplo n.º 16
0
    def test_add(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, 'test')

        self.reddit.read_only = False
        with self.recorder.use_cassette('TestWikiPageModeration.test_add'):
            page.mod.add('bboe')
Ejemplo n.º 17
0
    def test_add(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "test")

        self.reddit.read_only = False
        with self.use_cassette():
            page.mod.add("bboe")
Ejemplo n.º 18
0
    def test_content_md__invalid_name(self):
        subreddit = self.reddit.subreddit("reddit.com")
        page = WikiPage(self.reddit, subreddit, "\\A")

        with self.use_cassette():
            with pytest.raises(RedditAPIException) as excinfo:
                page.content_md
            assert str(excinfo.value) == "INVALID_PAGE_NAME"
Ejemplo n.º 19
0
    def test_settings(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "test")

        self.reddit.read_only = False
        with self.use_cassette():
            settings = page.mod.settings()
        assert {"editors": [], "listed": True, "permlevel": 0} == settings
Ejemplo n.º 20
0
    def test_update(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, 'test')

        self.reddit.read_only = False
        with self.recorder.use_cassette('TestWikiPageModeration.test_update'):
            updated = page.mod.update(listed=False, permlevel=1)
        assert {'editors': [], 'listed': False, 'permlevel': 1} == updated
Ejemplo n.º 21
0
    def test_update(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "test")

        self.reddit.read_only = False
        with self.recorder.use_cassette("TestWikiPageModeration.test_update"):
            updated = page.mod.update(listed=False, permlevel=1)
        assert {"editors": [], "listed": False, "permlevel": 1} == updated
Ejemplo n.º 22
0
 def test_init__with_revision__author_deleted(self):
     subreddit = self.reddit.subreddit(
         pytest.placeholders.test_subreddit)
     page = WikiPage(self.reddit, subreddit, 'index',
                     revision='873933a0-5550-11e2-82f1-12313b0c1e2b')
     with self.recorder.use_cassette(
             'TestWikiPage.test_init__with_revision__author_deleted'):
         assert page.revision_by is None
Ejemplo n.º 23
0
 def test_init__with_revision(self):
     subreddit = self.reddit.subreddit(
         pytest.placeholders.test_subreddit)
     page = WikiPage(self.reddit, subreddit, 'index',
                     revision='2f38e910-b109-11e2-ba44-12313b0d4e76')
     with self.recorder.use_cassette(
             'TestWikiPage.test_init__with_revision'):
         assert isinstance(page.revision_by, Redditor)
         assert page.revision_date == 1367295177
Ejemplo n.º 24
0
    def test_settings(self):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, 'test')

        self.reddit.read_only = False
        with self.recorder.use_cassette(
                'TestWikiPageModeration.test_settings'):
            settings = page.mod.settings()
        assert {'editors': [], 'listed': True, 'permlevel': 0} == settings
Ejemplo n.º 25
0
 def test_init__with_revision__author_deleted(self):
     subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
     page = WikiPage(
         self.reddit,
         subreddit,
         "index",
         revision="873933a0-5550-11e2-82f1-12313b0c1e2b",
     )
     with self.use_cassette():
         assert page.revision_by is None
Ejemplo n.º 26
0
 def test_hash(self):
     page1 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, 'a'),
                      name='x')
     page2 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, 'a'),
                      name='2')
     page3 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, 'b'),
                      name='1')
     page4 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, 'A'),
                      name='x')
     page5 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, 'a'),
                      name='X')
     assert hash(page1) == hash(page1)
     assert hash(page2) == hash(page2)
     assert hash(page3) == hash(page3)
     assert hash(page1) != hash(page2)
     assert hash(page1) != hash(page3)
     assert hash(page1) == hash(page4)
     assert hash(page1) == hash(page5)
Ejemplo n.º 27
0
 def test_equality(self):
     page1 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="x")
     page2 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="2")
     page3 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "b"),
                      name="1")
     page4 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "A"),
                      name="x")
     page5 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="X")
     assert page1 == page1
     assert page2 == page2
     assert page3 == page3
     assert page1 != page2
     assert page1 != page3
     assert page1 == page4
     assert page1 == page5
Ejemplo n.º 28
0
 def test_equality(self):
     page1 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, 'a'),
                      name='x')
     page2 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, 'a'),
                      name='2')
     page3 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, 'b'),
                      name='1')
     page4 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, 'A'),
                      name='x')
     page5 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, 'a'),
                      name='X')
     assert page1 == page1
     assert page2 == page2
     assert page3 == page3
     assert page1 != page2
     assert page1 != page3
     assert page1 == page4
     assert page1 == page5
Ejemplo n.º 29
0
 def test_hash(self):
     page1 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="x")
     page2 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="2")
     page3 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "b"),
                      name="1")
     page4 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "A"),
                      name="x")
     page5 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="X")
     assert hash(page1) == hash(page1)
     assert hash(page2) == hash(page2)
     assert hash(page3) == hash(page3)
     assert hash(page1) != hash(page2)
     assert hash(page1) != hash(page3)
     assert hash(page1) == hash(page4)
     assert hash(page1) == hash(page5)
Ejemplo n.º 30
0
    def test_revert_css_fail(self, _):
        subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit)
        page = WikiPage(self.reddit, subreddit, "config/stylesheet")

        self.reddit.read_only = False
        with self.use_cassette():
            subreddit.stylesheet.upload(
                name="css-revert-fail",
                image_path="tests/integration/files/icon.jpg",
            )
            page.edit("div {background: url(%%css-revert-fail%%)}")
            revision_id = next(page.revisions(limit=1))["id"]
            subreddit.stylesheet.delete_image("css-revert-fail")
            with pytest.raises(Forbidden) as exc:
                page.revision(revision_id).mod.revert()
            assert exc.value.response.json() == {
                "reason": "INVALID_CSS",
                "message": "Forbidden",
                "explanation": "%(css_error)s",
            }
Ejemplo n.º 31
0
 def test_str(self):
     page = WikiPage(self.reddit,
                     subreddit=Subreddit(self.reddit, "a"),
                     name="x")
     assert str(page) == "a/x"
Ejemplo n.º 32
0
 def test_repr(self):
     page = WikiPage(self.reddit,
                     subreddit=Subreddit(self.reddit, "a"),
                     name="x")
     assert repr(page) == (
         "WikiPage(subreddit=Subreddit(display_name='a'), name='x')")