an / tests.py
Docfile's picture
Upload 23 files
75ba54e verified
import unittest
from app import app, db, Board, Post, BannedIP, prune_board
class GhostBoardTestCase(unittest.TestCase):
def setUp(self):
app.config['TESTING'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
app.config['WTF_CSRF_ENABLED'] = False
self.app = app.test_client()
with app.app_context():
db.create_all()
b = Board(slug='tst', name='Test Board', description='Testing')
db.session.add(b)
db.session.commit()
def tearDown(self):
with app.app_context():
db.session.remove()
db.drop_all()
def test_board_exists(self):
response = self.app.get('/tst/')
self.assertEqual(response.status_code, 200)
self.assertIn(b'Test Board', response.data)
def test_create_thread(self):
with app.app_context():
# Mock form data
response = self.app.post('/tst/', data=dict(
content='Test Thread Content'
), follow_redirects=True)
self.assertEqual(response.status_code, 200)
self.assertIn(b'Test Thread Content', response.data)
post = Post.query.first()
self.assertIsNotNone(post)
self.assertIsNone(post.thread_id)
def test_pruning(self):
with app.app_context():
board = Board.query.filter_by(slug='tst').first()
# Create 101 threads
for i in range(101):
p = Post(board_id=board.id, content=f'Thread {i}')
db.session.add(p)
db.session.commit()
self.assertEqual(Post.query.count(), 101)
prune_board(board.id)
self.assertEqual(Post.query.count(), 100)
def test_ban_check(self):
with app.app_context():
banned = BannedIP(ip_address='127.0.0.1', reason='Test Ban')
db.session.add(banned)
db.session.commit()
response = self.app.post('/tst/', data=dict(
content='Should fail'
))
self.assertEqual(response.status_code, 403)
if __name__ == '__main__':
unittest.main()