# -*- coding: utf-8 -*- """ :author: Grey Li (李辉) :url: http://greyli.com :copyright: © 2018 Grey Li :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 ', 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 ', 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 ', 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 ', data)