|
|
- # -*- coding: utf-8 -*-
- """
- :author: Grey Li (李辉)
- :url: http://greyli.com
- :copyright: © 2018 Grey Li <withlihui@gmail.com>
- :license: MIT, see LICENSE for more details.
- """
- from flask import url_for
-
- from albumy.extensions import db
- from albumy.models import User, Role, Tag
- from tests.base import BaseTestCase
-
-
- class AdminTestCase(BaseTestCase):
-
- def setUp(self):
- super(AdminTestCase, self).setUp()
- self.login(email='admin@helloflask.com', password='123')
-
- def test_index_page(self):
- response = self.client.get(url_for('admin.index'))
- data = response.get_data(as_text=True)
- self.assertIn('Albumy Dashboard', data)
-
- def test_bad_permission(self):
- self.logout()
- response = self.client.get(url_for('admin.index'), follow_redirects=True)
- data = response.get_data(as_text=True)
- self.assertIn('Please log in to access this page.', data)
- self.assertNotIn('Albumy Dashboard', data)
-
- self.login() # normal user, without MODERATOR permission
- response = self.client.get(url_for('admin.index'))
- data = response.get_data(as_text=True)
- self.assertEqual(response.status_code, 403)
- self.assertNotIn('Albumy Dashboard', data)
-
- def test_edit_profile_admin(self):
- role_id = Role.query.filter_by(name='Locked').first().id
- response = self.client.post(url_for('admin.edit_profile_admin', user_id=2), data=dict(
- username='newname',
- role=role_id,
- confirmed=True,
- active=True,
- name='New Name',
- email='new@helloflask.com'
- ), follow_redirects=True)
- data = response.get_data(as_text=True)
- self.assertIn('Profile updated.', data)
- user = User.query.get(2)
- self.assertEqual(user.name, 'New Name')
- self.assertEqual(user.username, 'newname')
- self.assertEqual(user.email, 'new@helloflask.com')
- self.assertEqual(user.role.name, 'Locked')
-
- def test_block_user(self):
- response = self.client.post(url_for('admin.block_user', user_id=2), follow_redirects=True)
- data = response.get_data(as_text=True)
- self.assertIn('Account blocked.', data)
- user = User.query.get(2)
- self.assertEqual(user.active, False)
-
- def test_unblock_user(self):
- user = User.query.get(2)
- user.active = False
- db.session.commit()
- self.assertEqual(user.active, False)
-
- response = self.client.post(url_for('admin.unblock_user', user_id=2), follow_redirects=True)
- data = response.get_data(as_text=True)
- self.assertIn('Block canceled.', data)
- user = User.query.get(2)
- self.assertEqual(user.active, True)
-
- def test_lock_user(self):
- response = self.client.post(url_for('admin.lock_user', user_id=2), follow_redirects=True)
- data = response.get_data(as_text=True)
- self.assertIn('Account locked.', data)
- user = User.query.get(2)
- self.assertEqual(user.role.name, 'Locked')
-
- def test_unlock_user(self):
- user = User.query.get(2)
- user.role = Role.query.filter_by(name='Locked').first()
- db.session.commit()
- self.assertEqual(user.role.name, 'Locked')
-
- response = self.client.post(url_for('admin.unlock_user', user_id=2), follow_redirects=True)
- data = response.get_data(as_text=True)
- self.assertIn('Lock canceled.', data)
- user = User.query.get(2)
- self.assertEqual(user.role.name, 'User')
-
- def test_delete_tag(self):
- tag = Tag()
- db.session.add(tag)
- db.session.commit()
- self.assertIsNotNone(Tag.query.get(1))
-
- response = self.client.post(url_for('admin.delete_tag', tag_id=1), follow_redirects=True)
- data = response.get_data(as_text=True)
- self.assertIn('Tag deleted.', data)
- self.assertEqual(Tag.query.get(1), None)
-
- def test_manage_user_page(self):
- response = self.client.get(url_for('admin.manage_user'))
- data = response.get_data(as_text=True)
- self.assertIn('Manage Users', data)
- self.assertIn('Admin', data)
- self.assertIn('Locked', data)
- self.assertIn('Normal', data)
-
- response = self.client.get(url_for('admin.manage_user', filter='locked'))
- data = response.get_data(as_text=True)
- self.assertIn('Manage Users', data)
- self.assertIn('Locked User', data)
- self.assertNotIn('Normal User', data)
-
- response = self.client.get(url_for('admin.manage_user', filter='blocked'))
- data = response.get_data(as_text=True)
- self.assertIn('Manage Users', data)
- self.assertIn('Blocked User', data)
- self.assertNotIn('Locked User', data)
- self.assertNotIn('Normal User', data)
-
- response = self.client.get(url_for('admin.manage_user', filter='administrator'))
- data = response.get_data(as_text=True)
- self.assertIn('Manage Users', data)
- self.assertIn('Admin', data)
- self.assertNotIn('Blocked User', data)
- self.assertNotIn('Locked User', data)
- self.assertNotIn('Normal User', data)
-
- response = self.client.get(url_for('admin.manage_user', filter='moderator'))
- data = response.get_data(as_text=True)
- self.assertIn('Manage Users', data)
- self.assertIn('Admin', data)
- self.assertNotIn('Blocked User', data)
- self.assertNotIn('Locked User', data)
- self.assertNotIn('Normal User', data)
-
- def test_manage_photo_page(self):
- response = self.client.get(url_for('admin.manage_photo'))
- data = response.get_data(as_text=True)
- self.assertIn('Manage Photos', data)
- self.assertIn('Order by flag <span class="oi oi-elevator"></span>', data)
-
- response = self.client.get(url_for('admin.manage_photo', order='by_time'))
- data = response.get_data(as_text=True)
- self.assertIn('Manage Photos', data)
- self.assertIn('Order by time <span class="oi oi-elevator"></span>', data)
-
- def test_manage_tag_page(self):
- response = self.client.get(url_for('admin.manage_tag'))
- data = response.get_data(as_text=True)
- self.assertIn('Manage Tags', data)
-
- def test_manage_comment_page(self):
- response = self.client.get(url_for('admin.manage_comment'))
- data = response.get_data(as_text=True)
- self.assertIn('Manage Comments', data)
- self.assertIn('Order by flag <span class="oi oi-elevator"></span>', data)
-
- response = self.client.get(url_for('admin.manage_comment', order='by_time'))
- data = response.get_data(as_text=True)
- self.assertIn('Manage Comments', data)
- self.assertIn('Order by time <span class="oi oi-elevator"></span>', data)
|