|  | @@ -4,14 +4,17 @@ from sqlalchemy.orm.exc import NoResultFound
 | 
	
		
			
			| 4 | 4 |  
 | 
	
		
			
			| 5 | 5 |  import transaction
 | 
	
		
			
			| 6 | 6 |  
 | 
	
		
			
			|  | 7 | +from tracim.exceptions import UserNotExist, AuthenticationFailed
 | 
	
		
			
			| 7 | 8 |  from tracim.lib.core.user import UserApi
 | 
	
		
			
			|  | 9 | +from tracim.models import User
 | 
	
		
			
			|  | 10 | +from tracim.models.context_models import UserInContext
 | 
	
		
			
			| 8 | 11 |  from tracim.tests import DefaultTest
 | 
	
		
			
			| 9 | 12 |  from tracim.tests import eq_
 | 
	
		
			
			| 10 | 13 |  
 | 
	
		
			
			| 11 | 14 |  
 | 
	
		
			
			| 12 | 15 |  class TestUserApi(DefaultTest):
 | 
	
		
			
			| 13 | 16 |  
 | 
	
		
			
			| 14 |  | -    def test_create_and_update_user(self):
 | 
	
		
			
			|  | 17 | +    def test_unit__create_and_update_user__ok__nominal_case(self):
 | 
	
		
			
			| 15 | 18 |          api = UserApi(
 | 
	
		
			
			| 16 | 19 |              current_user=None,
 | 
	
		
			
			| 17 | 20 |              session=self.session,
 | 
	
	
		
			
			|  | @@ -25,7 +28,7 @@ class TestUserApi(DefaultTest):
 | 
	
		
			
			| 25 | 28 |          eq_('bob@bob', nu.email)
 | 
	
		
			
			| 26 | 29 |          eq_('bob', nu.display_name)
 | 
	
		
			
			| 27 | 30 |  
 | 
	
		
			
			| 28 |  | -    def test_user_with_email_exists(self):
 | 
	
		
			
			|  | 31 | +    def test_unit__user_with_email_exists__ok__nominal_case(self):
 | 
	
		
			
			| 29 | 32 |          api = UserApi(
 | 
	
		
			
			| 30 | 33 |              current_user=None,
 | 
	
		
			
			| 31 | 34 |              session=self.session,
 | 
	
	
		
			
			|  | @@ -38,7 +41,7 @@ class TestUserApi(DefaultTest):
 | 
	
		
			
			| 38 | 41 |          eq_(True, api.user_with_email_exists('bibi@bibi'))
 | 
	
		
			
			| 39 | 42 |          eq_(False, api.user_with_email_exists('unknown'))
 | 
	
		
			
			| 40 | 43 |  
 | 
	
		
			
			| 41 |  | -    def test_get_one_by_email(self):
 | 
	
		
			
			|  | 44 | +    def test_unit__get_one_by_email__ok__nominal_case(self):
 | 
	
		
			
			| 42 | 45 |          api = UserApi(
 | 
	
		
			
			| 43 | 46 |              current_user=None,
 | 
	
		
			
			| 44 | 47 |              session=self.session,
 | 
	
	
		
			
			|  | @@ -51,7 +54,7 @@ class TestUserApi(DefaultTest):
 | 
	
		
			
			| 51 | 54 |  
 | 
	
		
			
			| 52 | 55 |          eq_(uid, api.get_one_by_email('bibi@bibi').user_id)
 | 
	
		
			
			| 53 | 56 |  
 | 
	
		
			
			| 54 |  | -    def test_get_one_by_email_exception(self):
 | 
	
		
			
			|  | 57 | +    def test_unit__get_one_by_email__err__user_does_not_exist(self):
 | 
	
		
			
			| 55 | 58 |          api = UserApi(
 | 
	
		
			
			| 56 | 59 |              current_user=None,
 | 
	
		
			
			| 57 | 60 |              session=self.session,
 | 
	
	
		
			
			|  | @@ -60,26 +63,94 @@ class TestUserApi(DefaultTest):
 | 
	
		
			
			| 60 | 63 |          with pytest.raises(NoResultFound):
 | 
	
		
			
			| 61 | 64 |              api.get_one_by_email('unknown')
 | 
	
		
			
			| 62 | 65 |  
 | 
	
		
			
			| 63 |  | -    def test_get_all(self):
 | 
	
		
			
			| 64 |  | -        # TODO - G.M - 29-03-2018 Check why this method is not enabled
 | 
	
		
			
			|  | 66 | +    # def test_unit__get_all__ok__nominal_case(self):
 | 
	
		
			
			|  | 67 | +    #     # TODO - G.M - 29-03-2018 Check why this method is not enabled
 | 
	
		
			
			|  | 68 | +    #     api = UserApi(
 | 
	
		
			
			|  | 69 | +    #         current_user=None,
 | 
	
		
			
			|  | 70 | +    #         session=self.session,
 | 
	
		
			
			|  | 71 | +    #         config=self.config,
 | 
	
		
			
			|  | 72 | +    #     )
 | 
	
		
			
			|  | 73 | +    #     u1 = api.create_user(True)
 | 
	
		
			
			|  | 74 | +    #     u2 = api.create_user(True)
 | 
	
		
			
			|  | 75 | +    #     users = api.get_all()
 | 
	
		
			
			|  | 76 | +    #     assert 2==len(users)
 | 
	
		
			
			|  | 77 | +
 | 
	
		
			
			|  | 78 | +    def test_unit__get_one__ok__nominal_case(self):
 | 
	
		
			
			| 65 | 79 |          api = UserApi(
 | 
	
		
			
			| 66 | 80 |              current_user=None,
 | 
	
		
			
			| 67 | 81 |              session=self.session,
 | 
	
		
			
			| 68 | 82 |              config=self.config,
 | 
	
		
			
			| 69 | 83 |          )
 | 
	
		
			
			| 70 |  | -        # u1 = api.create_user(True)
 | 
	
		
			
			| 71 |  | -        # u2 = api.create_user(True)
 | 
	
		
			
			|  | 84 | +        u = api.create_user()
 | 
	
		
			
			|  | 85 | +        api.update(u, 'titi', 'titi@titi', True)
 | 
	
		
			
			|  | 86 | +        one = api.get_one(u.user_id)
 | 
	
		
			
			|  | 87 | +        eq_(u.user_id, one.user_id)
 | 
	
		
			
			| 72 | 88 |  
 | 
	
		
			
			| 73 |  | -        # users = api.get_all()
 | 
	
		
			
			| 74 |  | -        # ok_(2==len(users))
 | 
	
		
			
			|  | 89 | +    def test_unit__get_correct_user_type__ok__no_context(self):
 | 
	
		
			
			|  | 90 | +        user = User(email='admin@tracim.tracim')
 | 
	
		
			
			|  | 91 | +        api = UserApi(
 | 
	
		
			
			|  | 92 | +            current_user=None,
 | 
	
		
			
			|  | 93 | +            session=self.session,
 | 
	
		
			
			|  | 94 | +            config=self.config,
 | 
	
		
			
			|  | 95 | +        )
 | 
	
		
			
			|  | 96 | +        new_user = api._get_correct_user_type(user, in_context=False)
 | 
	
		
			
			|  | 97 | +        assert isinstance(new_user, User)
 | 
	
		
			
			|  | 98 | +        assert user == new_user
 | 
	
		
			
			| 75 | 99 |  
 | 
	
		
			
			| 76 |  | -    def test_get_one(self):
 | 
	
		
			
			|  | 100 | +    def test_unit__get_correct_user_type__ok__with_context(self):
 | 
	
		
			
			|  | 101 | +        user = User(email='admin@tracim.tracim')
 | 
	
		
			
			| 77 | 102 |          api = UserApi(
 | 
	
		
			
			| 78 | 103 |              current_user=None,
 | 
	
		
			
			| 79 | 104 |              session=self.session,
 | 
	
		
			
			| 80 | 105 |              config=self.config,
 | 
	
		
			
			| 81 | 106 |          )
 | 
	
		
			
			| 82 |  | -        u = api.create_user()
 | 
	
		
			
			| 83 |  | -        api.update(u, 'titi', 'titi@titi', True)
 | 
	
		
			
			| 84 |  | -        one = api.get_one(u.user_id)
 | 
	
		
			
			| 85 |  | -        eq_(u.user_id, one.user_id)
 | 
	
		
			
			|  | 107 | +        new_user = api._get_correct_user_type(user, in_context=True)
 | 
	
		
			
			|  | 108 | +        assert isinstance(new_user, UserInContext)
 | 
	
		
			
			|  | 109 | +        assert user != new_user
 | 
	
		
			
			|  | 110 | +        assert new_user.user == user
 | 
	
		
			
			|  | 111 | +
 | 
	
		
			
			|  | 112 | +    def test_unit__get_current__ok__nominal_case(self):
 | 
	
		
			
			|  | 113 | +        user = User(email='admin@tracim.tracim')
 | 
	
		
			
			|  | 114 | +        api = UserApi(
 | 
	
		
			
			|  | 115 | +            current_user=user,
 | 
	
		
			
			|  | 116 | +            session=self.session,
 | 
	
		
			
			|  | 117 | +            config=self.config,
 | 
	
		
			
			|  | 118 | +        )
 | 
	
		
			
			|  | 119 | +        assert api.get_current().email == 'admin@tracim.tracim'
 | 
	
		
			
			|  | 120 | +
 | 
	
		
			
			|  | 121 | +    def test_unit__get_current__err__user_not_exist(self):
 | 
	
		
			
			|  | 122 | +        api = UserApi(
 | 
	
		
			
			|  | 123 | +            current_user=None,
 | 
	
		
			
			|  | 124 | +            session=self.session,
 | 
	
		
			
			|  | 125 | +            config=self.config,
 | 
	
		
			
			|  | 126 | +        )
 | 
	
		
			
			|  | 127 | +        with pytest.raises(UserNotExist):
 | 
	
		
			
			|  | 128 | +            api.get_current()
 | 
	
		
			
			|  | 129 | +
 | 
	
		
			
			|  | 130 | +    def test_unit__authenticate_user___ok__nominal_case(self):
 | 
	
		
			
			|  | 131 | +        api = UserApi(
 | 
	
		
			
			|  | 132 | +            current_user=None,
 | 
	
		
			
			|  | 133 | +            session=self.session,
 | 
	
		
			
			|  | 134 | +            config=self.config,
 | 
	
		
			
			|  | 135 | +        )
 | 
	
		
			
			|  | 136 | +        user = api.authenticate_user('admin@admin.admin', 'admin@admin.admin')
 | 
	
		
			
			|  | 137 | +        assert isinstance(user, User)
 | 
	
		
			
			|  | 138 | +        assert user.email == 'admin@admin.admin'
 | 
	
		
			
			|  | 139 | +
 | 
	
		
			
			|  | 140 | +    def test_unit__authenticate_user___err__bad_password(self):
 | 
	
		
			
			|  | 141 | +        api = UserApi(
 | 
	
		
			
			|  | 142 | +            current_user=None,
 | 
	
		
			
			|  | 143 | +            session=self.session,
 | 
	
		
			
			|  | 144 | +            config=self.config,
 | 
	
		
			
			|  | 145 | +        )
 | 
	
		
			
			|  | 146 | +        with pytest.raises(AuthenticationFailed):
 | 
	
		
			
			|  | 147 | +            api.authenticate_user('admin@admin.admin', 'bad_password')
 | 
	
		
			
			|  | 148 | +
 | 
	
		
			
			|  | 149 | +    def test_unit__authenticate_user___err__bad_user(self):
 | 
	
		
			
			|  | 150 | +        api = UserApi(
 | 
	
		
			
			|  | 151 | +            current_user=None,
 | 
	
		
			
			|  | 152 | +            session=self.session,
 | 
	
		
			
			|  | 153 | +            config=self.config,
 | 
	
		
			
			|  | 154 | +        )
 | 
	
		
			
			|  | 155 | +        with pytest.raises(AuthenticationFailed):
 | 
	
		
			
			|  | 156 | +            api.authenticate_user('unknown_user', 'bad_password')
 |