weboob-devel/modules/pastebin/test.py
Laurent Bachelier ce6d9bdcd7 Fix getting pastebin paste visiblity
Pastebin somehow decided to use title instead of alt.
They are wrong. That attribute should at least tell "Private" or "Public" to
blind users. Well, another reason to use Weboob instead of their website!
2012-03-06 20:22:26 +01:00

94 lines
4 KiB
Python

# -*- coding: utf-8 -*-
# Copyright(C) 2011 Laurent Bachelier
#
# This file is part of weboob.
#
# weboob is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# weboob is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
from weboob.tools.test import BackendTest
from weboob.capabilities.base import NotLoaded
from weboob.capabilities.paste import PasteNotFound
class PastebinTest(BackendTest):
BACKEND = 'pastebin'
def test_get_paste(self):
for _id in ('7HmXwzyt', 'http://pastebin.com/7HmXwzyt'):
# html method
p = self.backend.get_paste(_id)
self.backend.fillobj(p, ['title'])
assert p.title == 'plop'
assert p.page_url == 'http://pastebin.com/7HmXwzyt'
assert p.contents == 'prout'
assert p.public is True
# raw method
p = self.backend.get_paste(_id)
self.backend.fillobj(p, ['contents'])
assert p.title is NotLoaded
assert p.page_url == 'http://pastebin.com/7HmXwzyt'
assert p.contents == 'prout'
assert p.public is NotLoaded
def test_post(self):
p = self.backend.new_paste(None, title='ouiboube', contents='Weboob Test', public=True)
self.backend.post_paste(p, max_age=600)
assert p.id
self.backend.fill_paste(p, ['title'])
assert p.title == 'ouiboube'
assert p.id in p.page_url
assert p.public is True
def test_specialchars(self):
# post a paste and get the contents through the HTML response
p1 = self.backend.new_paste(None, title='ouiboube', contents=u'Weboob <test>¿¡', public=False)
self.backend.post_paste(p1, max_age=600)
assert p1.id
# not related to testing special chars, but check if the paste is
# really private since test_post() tests the contrary
assert p1.public is False
# this should use the raw method to get the contents
p2 = self.backend.get_paste(p1.id)
self.backend.fillobj(p2, ['contents'])
assert p2.contents == p1.contents
assert p2.public is NotLoaded
def test_notfound(self):
for _id in ('weboooooooooooooooooooooooooob', 'http://pastebin.com/weboooooooooooooooooooooooooob'):
# html method
p = self.backend.get_paste(_id)
self.assertRaises(PasteNotFound, self.backend.fillobj, p, ['title'])
# raw method
p = self.backend.get_paste(_id)
self.assertRaises(PasteNotFound, self.backend.fillobj, p, ['contents'])
def test_checkurl(self):
# call with an URL we can't handle with this backend
assert self.backend.get_paste('http://pastealacon.com/1') is None
def test_can_post(self):
assert self.backend.can_post('hello', public=None) > 0
assert self.backend.can_post('hello', public=True) > 0
assert self.backend.can_post('hello', public=False) > 0
assert self.backend.can_post('hello', public=True, max_age=600) > 0
assert self.backend.can_post('hello', public=True, max_age=3600*24) > 0
assert self.backend.can_post('hello', public=True, max_age=3600*24*3) > 0
assert self.backend.can_post('hello', public=True, max_age=False) > 0
assert self.backend.can_post('hello', public=None, max_age=False) > 0
assert self.backend.can_post('hello', public=True, max_age=3600*24*40) > 0
assert self.backend.can_post(u'héhé', public=True) > 0
assert self.backend.can_post(u'hello ♥', public=True) > 0