def test_home_view_not_contains_link_profile_view_before_login(self): """ Before login, home should not display a link to profile """ profile_view_url = _('profile') self.response = self.client.get(_('home'), follow=True) self.assertNotContains(self.response, 'href="{}"'.format(profile_view_url))
def test_profile_view_before_login_redirected(self): """ ProfileEditView will redirect unauthenticated user to login page """ response = self.client.get(_('profile_edit'), follow=True) self.assertRedirects(response, _('account_login') + '?next=/profile/edit', status_code=302, target_status_code=200, msg_prefix='', fetch_redirect_response=False)
def test_home_view_status_code(self): """ Test user can open home without login """ url = _('home') response = self.client.get(url) self.assertEquals(response.status_code, 200)
class AuthorCreate(PermissionRequiredMixin, CreateView): model = Author fields = '__all__' initial = {'date_of_death': '05/01/2018'} permission_required = 'catalog.can_mark_returned' success_url = _('authors')
def test_home_view_contains_link_profile_view_after_login(self): """ After login, home should display a link to profile """ self.login() profile_view_url = _('profile') self.assertContains(self.response, 'href="{}"'.format(profile_view_url))
def test_user_registration_email_already_exist(self): data = {"email": "*****@*****.**", "password": "******"} view = UserCreateView.as_view() req = self.factory.post(_("create-user"), data=json.dumps(data), content_type="application/json") res = view(req) self.assertEqual(res.status_code, 400) self.assertEqual(User.objects.all().count(), self.init_users_count)
def test_unlike_post_unauthenticated(self): data = {"post": 2} view = RemoveLikeView.as_view() req = self.factory.post(_("unlike-post"), data=json.dumps(data), content_type="application/json") res = view(req) self.assertEqual(res.status_code, 401) self.assertEqual(LikeModel.objects.all().count(), self.init_likes_count)
def test_user_authentication(self): user = User.objects.create_user(email=self.email, password=self.password) user.is_active = True user.save() res = self.client.post(_("token-get-pair"), data=json.dumps(self.data), content_type="application/json") self.assertEqual(res.status_code, 200) self.assertEqual(len(res.data), 2) token = res.data["access"] data = {"title": "new title", "text": "new text"} self.client.credentials(HTTP_AUTHORIZATION=f"Bearer {token}") res = self.client.post(_("post-list"), data=json.dumps(data), content_type="application/json") self.assertEqual(res.status_code, 201)
def test_like_liked_post(self): data = {"post": 2} view = SetLikeView.as_view() req = self.factory.post(_("like-post"), data=json.dumps(data), content_type="application/json") force_authenticate(req, user=self.simple_user) res = view(req) likes_count = LikeModel.objects.all().count() self.assertEqual(res.status_code, 201) self.assertEqual(likes_count, self.init_likes_count)
def test_user_authentication_incorrect_data(self): user = User.objects.create_user(email=self.email, password=self.password) user.is_active = True user.save() data = {"email": self.email, "password": "******"} res = self.client.post(_("token-get-pair"), data=json.dumps(data), content_type="application/json") self.assertEqual(res.status_code, 400)
def test_user2_successfull_login(self): """ After successfull login, LogEntry should have object with value action=user_logged_in, [email protected] """ self.client.login(email=self.email2, password=self.password2) self.response = self.client.get(_('home'), follow=True) # LogEntry is sorted descending by id, so last created entry will be in the first position log = LogEntry.objects.all().first() self.assertEquals(log.action, 'user_logged_in') self.assertEquals(log.email, self.email2)
def dump_token(self, user): """ 接受用户对象,返回包含用户id 的 token 信息 :param user: 用户对象 :return: token """ if isinstance(user, UserInfo): info = {'user_id': user.id} token = self.serializer.dumps(info) # bytes token = token.decode() return token raise (ValueError, _("user is not exists!"))
def test_post_creating(self): data = {"title": "New post", "text": "Some Text"} view = PostListView.as_view() req = self.factory.post(_("post-list"), data=json.dumps(data), content_type="application/json") res = view(req) self.assertEqual(res.status_code, 401) self.assertEqual(PostModel.objects.all().count(), self.init_posts_count) force_authenticate(req, user=self.simple_user) res = view(req) self.assertEqual(res.status_code, 201) self.assertEqual(PostModel.objects.all().count(), self.init_posts_count + 1) self.assertTrue(res.data["id"]) self.assertTrue(res.data["user"])
def test_post_list(self): req = self.factory.get(_("post-list")) view = PostListView.as_view() res = view(req) self.assertEqual(res.status_code, 200)
class BookDelete(DeleteView): model = Book success_url = _('books')
class BookCreate(CreateView): model = Book fields = '__all__' initial = {'language': 'English'} success_url = _('books')
class AuthorDelete(DeleteView): model = Author success_url = _('authors')
def login(self): """ Method for login """ self.client.login(email=self.email, password=self.password) self.response = self.client.get(_('home'), follow=True)
def get_success_url(self): return _('contacts:index')
class LeavemsgView(generic.CreateView): form_class = LeaveMsgModelForm template_name = "ismblog/message_form.html" success_url = _('blogs')
class Userprofiles2Config(AppConfig): name = 'userprofiles2' verbose_name = _(u'User profiles') def ready(self): from userprofiles2 import signals
class BlogDelete(LoginRequiredMixin, DeleteView): model = Blog success_url = _('blogs')