test_admin.py 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # -*- coding: utf-8 -*-
  2. from collections import OrderedDict
  3. from nose.tools import eq_
  4. from nose.tools import ok_
  5. from tracim.model import DBSession
  6. from tracim.model import User
  7. from tracim.tests import TracimTestController
  8. class TestAuthentication(TracimTestController):
  9. application_under_test = 'main'
  10. def test_create_user(self):
  11. self._connect_user(
  12. 'admin@admin.admin',
  13. 'admin@admin.admin',
  14. )
  15. user_count = DBSession.query(User) \
  16. .filter(User.email == 'an-other-email@test.local').count()
  17. eq_(0, user_count, 'User should not exist yet')
  18. # Create a new user
  19. try_post_user = self.app.post(
  20. '/admin/users',
  21. OrderedDict([
  22. ('name', 'TEST'),
  23. ('email', 'an-other-email@test.local'),
  24. ('password', 'password'),
  25. ('is_tracim_manager', 'off'),
  26. ('is_tracim_admin', 'off'),
  27. ('send_email', 'off'),
  28. ])
  29. )
  30. eq_(try_post_user.status_code, 302,
  31. "Code should be 302, but is %d" % try_post_user.status_code)
  32. user = DBSession.query(User) \
  33. .filter(User.email == 'an-other-email@test.local').one()
  34. ok_(user, msg="User should exist now")
  35. ok_(user.validate_password('password'))
  36. def test_update_user_password(self):
  37. self._connect_user(
  38. 'admin@admin.admin',
  39. 'admin@admin.admin',
  40. )
  41. # Create a new user (tested in test_create_user)
  42. self.app.post(
  43. '/admin/users',
  44. OrderedDict([
  45. ('name', 'TEST'),
  46. ('email', 'an-other-email@test.local'),
  47. ('password', 'an-other-email@test.local'),
  48. ('is_tracim_manager', 'off'),
  49. ('is_tracim_admin', 'off'),
  50. ('send_email', 'off'),
  51. ])
  52. )
  53. user = DBSession.query(User) \
  54. .filter(User.email == 'an-other-email@test.local').one()
  55. self.app.post(
  56. '/admin/users/{user_id}/password?_method=PUT'.format(
  57. user_id=user.user_id
  58. ),
  59. OrderedDict([
  60. ('new_password1', 'new-password'),
  61. ('new_password2', 'new-password'),
  62. ])
  63. )
  64. user = DBSession.query(User) \
  65. .filter(User.email == 'an-other-email@test.local').one()
  66. ok_(user.validate_password('new-password'))