Beispiel #1
0
 def test_get_rtt_usage(self):
     from pyvac.models import User
     user = User.by_login(self.session, 'jdoe')
     self.assertIsInstance(user, User)
     self.assertEqual(user.login, 'jdoe')
     self.assertEqual(user.name, 'John Doe')
     self.assertEqual(user.role, 'user')
     with freeze_time(
             '2014-12-25',
             ignore=['celery', 'psycopg2', 'sqlalchemy', 'icalendar']):
         with patch('pyvac.models.User.arrival_date',
                    new_callable=PropertyMock) as mock_foo:
             mock_foo.return_value = datetime(2014, 1, 1)
             expected = {
                 'allowed': 10,
                 'left': 9.5,
                 'state': 'warning',
                 'taken': 0.5,
                 'year': 2014
             }
             self.assertEqual(user.get_rtt_usage(self.session), expected)
             # no RTT for us country
             user = User.by_login(self.session, 'manager3')
             self.assertIsInstance(user, User)
             self.assertEqual(user.country, 'us')
             self.assertIsNone(user.get_rtt_usage(self.session))
Beispiel #2
0
    def test_cp_validate_request(self):
        from pyvac.models import CPVacation, User

        date_start = datetime.now() - relativedelta(months=3)
        date_end = datetime.now() + relativedelta(months=3)
        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=7)
            with patch('pyvac.models.User.pool',
                       new_callable=PropertyMock) as mock_foo:
                mocked_pool1 = mock_pool(12.48, date_start, date_end)
                mocked_pool2 = mock_pool(0, date_start, date_end)
                mock_foo.return_value = {
                    'CP acquis': mocked_pool1,
                    'CP restant': mocked_pool2
                }

                user = User.by_login(self.session, 'jdoe')
                self.assertIsInstance(user, User)
                cp_pool = user.pool.get('CP acquis')
                self.assertTrue(cp_pool)
                cp_pool = user.pool.get('CP restant')
                self.assertTrue(cp_pool)

                days = 3
                date_from = datetime.now()
                date_to = datetime.now() + relativedelta(days=3)
                err = CPVacation.validate_request(user, None, days, date_from,
                                                  date_to)
                self.assertEqual(err, None)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=7)
            with patch('pyvac.models.User.pool',
                       new_callable=PropertyMock) as mock_foo:
                mocked_pool1 = mock_pool(12.48, date_start, date_end)
                mocked_pool2 = mock_pool(0, date_start, date_end)
                mock_foo.return_value = {
                    'CP acquis': mocked_pool1,
                    'CP restant': mocked_pool2
                }

                user = User.by_login(self.session, 'jdoe')
                self.assertIsInstance(user, User)
                cp_pool = user.pool.get('CP acquis')
                self.assertTrue(cp_pool)
                cp_pool = user.pool.get('CP restant')
                self.assertTrue(cp_pool)

                days = 3
                date_from = datetime.now().replace(year=datetime.now().year +
                                                   2)  # noqa
                date_to = date_from + relativedelta(days=3)
                err = CPVacation.validate_request(user, None, days, date_from,
                                                  date_to)
                msg = 'CP can only be used until %s.' % user.pool[
                    'CP acquis'].date_end.strftime('%d/%m/%Y')  # noqa
                self.assertEqual(err, msg)
Beispiel #3
0
    def test_get_rtt_taken_year(self):
        from pyvac.models import User
        user = User.by_login(self.session, u'jdoe')
        self.assertIsInstance(user, User)
        self.assertEqual(user.login, u'jdoe')
        self.assertEqual(user.name, u'John Doe')
        self.assertEqual(user.role, u'user')

        self.assertEqual(user.get_rtt_taken_year(self.session, 2014), 0.5)
        # no RTT for us country
        user = User.by_login(self.session, u'manager3')
        self.assertIsInstance(user, User)
        self.assertEqual(user.country, u'us')
        self.assertEqual(user.get_rtt_taken_year(self.session, 2014), 0)
Beispiel #4
0
    def test_get_rtt_taken_year(self):
        from pyvac.models import User
        user = User.by_login(self.session, u'jdoe')
        self.assertIsInstance(user, User)
        self.assertEqual(user.login, u'jdoe')
        self.assertEqual(user.name, u'John Doe')
        self.assertEqual(user.role, u'user')

        self.assertEqual(user.get_rtt_taken_year(self.session, 2014), 0.5)
        # no RTT for us country
        user = User.by_login(self.session, u'manager3')
        self.assertIsInstance(user, User)
        self.assertEqual(user.country, u'us')
        self.assertEqual(user.get_rtt_taken_year(self.session, 2014), 0)
Beispiel #5
0
    def test_by_name_country_rtt_ok(self):
        from pyvac.models import User, VacationType

        jdoe = User.by_login(self.session, u"jdoe")
        with freeze_time("2014-12-25", ignore=["celery", "psycopg2", "sqlalchemy", "icalendar"]):
            vac = VacationType.by_name_country(self.session, u"RTT", jdoe.country)
            self.assertEqual(vac, 10)
Beispiel #6
0
    def test_get_rtt_usage(self):
        from pyvac.models import User

        user = User.by_login(self.session, u"jdoe")
        self.assertIsInstance(user, User)
        self.assertEqual(user.login, u"jdoe")
        self.assertEqual(user.name, u"John Doe")
        self.assertEqual(user.role, u"user")
        with freeze_time("2014-12-25", ignore=["celery", "psycopg2", "sqlalchemy", "icalendar"]):
            expected = {"allowed": 10, "left": 9.5, "state": "warning", "taken": 0.5, "year": 2014}
            self.assertEqual(user.get_rtt_usage(self.session), expected)
            # no RTT for us country
            user = User.by_login(self.session, u"manager3")
            self.assertIsInstance(user, User)
            self.assertEqual(user.country, u"us")
            self.assertIsNone(user.get_rtt_usage(self.session))
Beispiel #7
0
    def test_post_send_rtt_usage_not_enough_ko(self):
        self.config.testing_securitypolicy(userid=u'janedoe',
                                           permissive=True)
        from pyvac.models import Request, User
        from pyvac.views.request import Send
        total_req = Request.find(self.session, count=True)

        with patch('pyvac.models.User.pool',
                   new_callable=PropertyMock) as mock_foo:
            mocked_pool = mock_pool(0.5, datetime(2014, 1, 1),
                                    datetime(2014, 12, 31))
            mock_foo.return_value = {'RTT': mocked_pool}

            user = User.by_login(self.session, u'janedoe')
            rtt_pool = user.pool.get('RTT')
            self.assertTrue(rtt_pool)

            request = self.create_request({'days': 1,
                                           'date_from': '05/05/2015 - 05/05/2015', # noqa
                                           'type': '2',
                                           'breakdown': 'FULL',
                                           })
            view = Send(request)()

        self.assertIsRedirect(view)
        # no new requests were made
        self.assertEqual(Request.find(self.session, count=True), total_req)
        expected = ['error;You only have 0.5 RTT to use.']
        self.assertEqual(request.session.pop_flash(), expected)
Beispiel #8
0
    def test_post_send_rtt_holiday_ok(self):
        self.config.testing_securitypolicy(userid=u'janedoe',
                                           permissive=True)
        from pyvac.models import Request, User
        from pyvac.views.request import Send

        total_req = Request.find(self.session, count=True)

        janedoe = User.by_login(self.session, u'janedoe')
        old_created_at = janedoe.created_at
        janedoe.created_at = janedoe.created_at.replace(month=1)
        janedoe.get_rtt_usage(self.session)

        with freeze_time('2016-12-01',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            request = self.create_request({
                'days': 5,
                'date_from': '11/07/2016 - 15/07/2016',
                'type': '2',
                'breakdown': 'FULL',
            })
            view = Send(request)()

        self.assertIsRedirect(view)
        self.assertEqual(Request.find(self.session, count=True), total_req + 1)
        last_req = Request.find(self.session)[-1]
        self.assertEqual(last_req.status, u'PENDING')
        self.assertEqual(last_req.days, 4.0)
        janedoe.created_at = old_created_at
        self.delete_last_req(last_req)
Beispiel #9
0
    def test_post_send_rtt_usage_not_enough_ko(self):
        self.config.testing_securitypolicy(userid=u'janedoe',
                                           permissive=True)
        from pyvac.models import Request, User
        from pyvac.views.request import Send
        total_req = Request.find(self.session, count=True)

        def mock_get_rtt_usage(self, session):
            """ Get rrt usage for a user """
            return {'allowed': 10, 'left': 0.5, 'state': 'error',
                    'taken': 9.5, 'year': 2014}

        orig_get_rtt_usage = User.get_rtt_usage
        User.get_rtt_usage = mock_get_rtt_usage
        user = User.by_login(self.session, u'janedoe')
        rtt_data = user.get_rtt_usage(self.session)
        self.assertTrue(rtt_data)

        request = self.create_request({'days': 1,
                                       'date_from': '05/05/2015 - 05/05/2015',
                                       'type': '2',
                                       'breakdown': 'FULL',
                                       })
        view = Send(request)()
        self.assertIsRedirect(view)
        # no new requests were made
        self.assertEqual(Request.find(self.session, count=True), total_req)
        expected = ['error;You only have 0.5 RTT to use.']
        self.assertEqual(request.session.pop_flash(), expected)
        User.get_rtt_usage = orig_get_rtt_usage
Beispiel #10
0
    def test_post_send_rtt_year_ko(self):
        self.config.testing_securitypolicy(userid=u'janedoe',
                                           permissive=True)
        from pyvac.models import Request, User
        from pyvac.views.request import Send
        total_req = Request.find(self.session, count=True)

        with patch('pyvac.models.User.pool',
                   new_callable=PropertyMock) as mock_foo:
            mocked_pool = mock_pool(10, datetime(2015, 1, 1),
                                    datetime(2015, 12, 31))
            mock_foo.return_value = {'RTT': mocked_pool}

            user = User.by_login(self.session, u'janedoe')
            rtt_pool = user.pool.get('RTT')
            self.assertTrue(rtt_pool)

            request = self.create_request({
                'days': 1,
                'date_from': '06/05/2016 - 06/05/2016',
                'type': '2',
                'breakdown': 'AM',
            })
            view = Send(request)()

        self.assertIsRedirect(view)
        # no new requests were made
        self.assertEqual(Request.find(self.session, count=True), total_req)
        expected = ['error;RTT can only be used between 01/01/2015 and 31/12/2015']  # noqa
        self.assertEqual(request.session.pop_flash(), expected)
Beispiel #11
0
    def test_post_send_rtt_usage_empty_ok(self):
        self.config.testing_securitypolicy(userid=u'janedoe',
                                           permissive=True)
        from pyvac.models import Request, User
        from pyvac.views.request import Send
        total_req = Request.find(self.session, count=True)

        def mock_get_rtt_usage(self, session):
            """ Get rrt usage for a user """
            return

        orig_get_rtt_usage = User.get_rtt_usage
        User.get_rtt_usage = mock_get_rtt_usage
        user = User.by_login(self.session, u'janedoe')
        rtt_data = user.get_rtt_usage(self.session)
        self.assertIsNone(rtt_data)

        view = Send(self.create_request({
            'days': 1,
            'date_from': '05/05/2015 - 05/05/2015',
            'type': '2',
            'breakdown': 'AM',
        }))()
        self.assertIsRedirect(view)
        self.assertEqual(Request.find(self.session, count=True), total_req + 1)
        User.get_rtt_usage = orig_get_rtt_usage
Beispiel #12
0
    def test_post_send_rtt_usage_empty_ok(self):
        self.config.testing_securitypolicy(userid=u'janedoe',
                                           permissive=True)
        from pyvac.models import Request, User
        from pyvac.views.request import Send
        total_req = Request.find(self.session, count=True)

        def mock_get_rtt_usage(self, session):
            """ Get rrt usage for a user """
            return

        orig_get_rtt_usage = User.get_rtt_usage
        User.get_rtt_usage = mock_get_rtt_usage
        user = User.by_login(self.session, u'janedoe')
        rtt_data = user.get_rtt_usage(self.session)
        self.assertIsNone(rtt_data)

        view = Send(self.create_request({
            'days': 1,
            'date_from': '05/05/2015 - 05/05/2015',
            'type': '2',
            'breakdown': 'AM',
        }))()
        self.assertIsRedirect(view)
        self.assertEqual(Request.find(self.session, count=True), total_req + 1)
        User.get_rtt_usage = orig_get_rtt_usage
Beispiel #13
0
    def test_cp_validate_request(self):
        from pyvac.models import CPVacation, User
        user = User.by_login(self.session, u'jdoe')
        self.assertIsInstance(user, User)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=7)
            pool = user.get_cp_usage(self.session)
            days = 3
            date_from = datetime.now()
            date_to = datetime.now() + relativedelta(days=3)
            err = CPVacation.validate_request(user, pool, days,
                                              date_from, date_to)
            self.assertEqual(err, None)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=7)
            pool = user.get_cp_usage(self.session)
            days = 3
            date_from = datetime.now().replace(year=datetime.now().year + 2)
            date_to = date_from + relativedelta(days=3)
            err = CPVacation.validate_request(user, pool, days,
                                              date_from, date_to)
            msg = 'CP can only be used until 31/05/%d.' % pool['acquis']['expire'].year # noqa
            self.assertEqual(err, msg)
Beispiel #14
0
    def test_post_send_rtt_usage_not_enough_ko(self):
        self.config.testing_securitypolicy(userid=u'janedoe',
                                           permissive=True)
        from pyvac.models import Request, User
        from pyvac.views.request import Send
        total_req = Request.find(self.session, count=True)

        def mock_get_rtt_usage(self, session):
            """ Get rrt usage for a user """
            return {'allowed': 10, 'left': 0.5, 'state': 'error',
                    'taken': 9.5, 'year': 2014}

        orig_get_rtt_usage = User.get_rtt_usage
        User.get_rtt_usage = mock_get_rtt_usage
        user = User.by_login(self.session, u'janedoe')
        rtt_data = user.get_rtt_usage(self.session)
        self.assertTrue(rtt_data)

        request = self.create_request({'days': 1,
                                       'date_from': '05/05/2015 - 05/05/2015',
                                       'type': '2',
                                       'breakdown': 'FULL',
                                       })
        view = Send(request)()
        self.assertIsRedirect(view)
        # no new requests were made
        self.assertEqual(Request.find(self.session, count=True), total_req)
        expected = ['error;You only have 0.5 RTT to use.']
        self.assertEqual(request.session.pop_flash(), expected)
        User.get_rtt_usage = orig_get_rtt_usage
Beispiel #15
0
 def test_by_manager(self):
     from pyvac.models import User, Request
     manager1 = User.by_login(self.session, u'manager1')
     requests = Request.by_manager(self.session, manager1)
     self.assertEqual(len(requests), 2)
     # take the first
     request = requests.pop()
     self.assertIsInstance(request, Request)
Beispiel #16
0
 def test_by_country_ok(self):
     from pyvac.models import User, VacationType
     manager3 = User.by_login(self.session, u'manager3')
     vac_types = VacationType.by_country(self.session, manager3.country)
     self.assertEqual(len(vac_types), 5)
     # take the first
     vac_type = vac_types.pop()
     self.assertIsInstance(vac_type, VacationType)
Beispiel #17
0
    def test_alias_ko(self):
        from pyvac.models import Sudoer
        from pyvac.models import User
        user = User.by_login(self.session, u'jdoe')
        self.assertIsInstance(user, User)

        sudoers = Sudoer.alias(self.session, user)
        self.assertEqual(sudoers, [])
Beispiel #18
0
 def test_by_country_ok(self):
     from pyvac.models import User, VacationType
     manager3 = User.by_login(self.session, u'manager3')
     vac_types = VacationType.by_country(self.session, manager3.country)
     self.assertEqual(len(vac_types), 5)
     # take the first
     vac_type = vac_types.pop()
     self.assertIsInstance(vac_type, VacationType)
Beispiel #19
0
    def test_alias_ko(self):
        from pyvac.models import Sudoer
        from pyvac.models import User
        user = User.by_login(self.session, u'jdoe')
        self.assertIsInstance(user, User)

        sudoers = Sudoer.alias(self.session, user)
        self.assertEqual(sudoers, [])
Beispiel #20
0
 def test_by_name_country_rtt_ok(self):
     from pyvac.models import User, VacationType
     jdoe = User.by_login(self.session, u'jdoe')
     with freeze_time('2014-12-25',
                      ignore=['celery', 'psycopg2', 'sqlalchemy',
                              'icalendar']):
         vac = VacationType.by_name_country(self.session, u'RTT',
                                            jdoe.country)
         self.assertEqual(vac, 10)
Beispiel #21
0
 def test_get_rtt_usage(self):
     from pyvac.models import User
     user = User.by_login(self.session, u'jdoe')
     self.assertIsInstance(user, User)
     self.assertEqual(user.login, u'jdoe')
     self.assertEqual(user.name, u'John Doe')
     self.assertEqual(user.role, u'user')
     with freeze_time('2014-12-25',
                      ignore=['celery', 'psycopg2', 'sqlalchemy',
                              'icalendar']):
         expected = {'allowed': 10, 'left': 9.5, 'state': 'warning',
                     'taken': 0.5, 'year': 2014}
         self.assertEqual(user.get_rtt_usage(self.session), expected)
         # no RTT for us country
         user = User.by_login(self.session, u'manager3')
         self.assertIsInstance(user, User)
         self.assertEqual(user.country, u'us')
         self.assertIsNone(user.get_rtt_usage(self.session))
Beispiel #22
0
 def test_get_rtt_usage(self):
     from pyvac.models import User
     user = User.by_login(self.session, u'jdoe')
     self.assertIsInstance(user, User)
     self.assertEqual(user.login, u'jdoe')
     self.assertEqual(user.name, u'John Doe')
     self.assertEqual(user.role, u'user')
     with freeze_time('2014-12-25',
                      ignore=['celery', 'psycopg2', 'sqlalchemy',
                              'icalendar']):
         expected = {'allowed': 10, 'left': 9.5, 'state': 'warning',
                     'taken': 0.5, 'year': 2014}
         self.assertEqual(user.get_rtt_usage(self.session), expected)
         # no RTT for us country
         user = User.by_login(self.session, u'manager3')
         self.assertIsInstance(user, User)
         self.assertEqual(user.country, u'us')
         self.assertIsNone(user.get_rtt_usage(self.session))
Beispiel #23
0
 def test_by_name_country_rtt_ok(self):
     from pyvac.models import User, VacationType
     jdoe = User.by_login(self.session, u'jdoe')
     with freeze_time('2014-12-25',
                      ignore=['celery', 'psycopg2', 'sqlalchemy',
                              'icalendar']):
         kwargs = {'session': self.session,
                   'name': u'RTT', 'country': jdoe.country}
         vac = VacationType.by_name_country(**kwargs)
         self.assertEqual(vac.acquired(**kwargs), 10)
Beispiel #24
0
    def test_alias(self):
        from pyvac.models import Sudoer
        from pyvac.models import User
        user = User.by_login(self.session, u'janedoe')
        self.assertIsInstance(user, User)

        sudoers = Sudoer.alias(self.session, user)
        self.assertEqual(len(sudoers), 1)
        sudoer = sudoers[0]
        self.assertIsInstance(sudoer, User)
Beispiel #25
0
    def test_alias(self):
        from pyvac.models import Sudoer
        from pyvac.models import User
        user = User.by_login(self.session, u'janedoe')
        self.assertIsInstance(user, User)

        sudoers = Sudoer.alias(self.session, user)
        self.assertEqual(len(sudoers), 1)
        sudoer = sudoers[0]
        self.assertIsInstance(sudoer, User)
Beispiel #26
0
    def test_by_user_outdated(self):
        from pyvac.models import User, Request

        user1 = User.by_login(self.session, u"jdoe")
        requests = Request.by_user(self.session, user1)
        self.assertEqual(len(requests), 5)

        outdated = Request.by_id(self.session, 7)
        self.assertIsInstance(outdated, Request)
        self.assertEqual(outdated.user, user1)
        self.assertFalse(outdated in requests)
Beispiel #27
0
 def test_by_manager(self):
     from pyvac.models import User, Request
     manager1 = User.by_login(self.session, u'manager1')
     with freeze_time('2015-03-01',
                      ignore=['celery', 'psycopg2', 'sqlalchemy',
                              'icalendar']):
         requests = Request.by_manager(self.session, manager1)
     self.assertEqual(len(requests), 8)
     # take the first
     request = requests.pop()
     self.assertIsInstance(request, Request)
Beispiel #28
0
 def test_by_manager(self):
     from pyvac.models import User, Request
     manager1 = User.by_login(self.session, u'manager1')
     with freeze_time('2015-03-01',
                      ignore=['celery', 'psycopg2', 'sqlalchemy',
                              'icalendar']):
         requests = Request.by_manager(self.session, manager1)
     self.assertEqual(len(requests), 10)
     # take the first
     request = requests.pop()
     self.assertIsInstance(request, Request)
Beispiel #29
0
    def test_lu_holidays_recovered(self):
        from pyvac.models import User
        user = User.by_login(self.session, u'sarah.doe')
        self.assertIsInstance(user, User)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mockfoo:
            mockfoo.return_value = datetime.now() - relativedelta(months=5)
            to_recover = user.get_lu_holiday(datetime(2017, 1, 25, 0, 0))
            # there is a holiday on 25 dec. which should be available
            self.assertEqual(to_recover, [datetime(2016, 12, 25, 0, 0),
                                          datetime(2017, 1, 1, 0, 0)])
Beispiel #30
0
    def test_by_user_outdated(self):
        from pyvac.models import User, Request
        user1 = User.by_login(self.session, u'jdoe')
        with freeze_time('2015-08-01',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            requests = Request.by_user(self.session, user1)
        self.assertEqual(len(requests), 8)

        outdated = Request.by_id(self.session, 7)
        self.assertIsInstance(outdated, Request)
        self.assertEqual(outdated.user, user1)
        self.assertFalse(outdated in requests)
Beispiel #31
0
    def test_by_user_outdated(self):
        from pyvac.models import User, Request
        user1 = User.by_login(self.session, u'jdoe')
        with freeze_time('2015-08-01',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            requests = Request.by_user(self.session, user1)
        self.assertEqual(len(requests), 8)

        outdated = Request.by_id(self.session, 7)
        self.assertIsInstance(outdated, Request)
        self.assertEqual(outdated.user, user1)
        self.assertFalse(outdated in requests)
Beispiel #32
0
 def test_by_user(self):
     from pyvac.models import User, Request
     user1 = User.by_login(self.session, u'jdoe')
     requests = Request.by_user(self.session, user1)
     self.assertEqual(len(requests), 2)
     # take the first
     request = requests[0]
     self.assertIsInstance(request, Request)
     self.assertEqual(request.days, 5)
     self.assertEqual(request.type, u'CP')
     self.assertEqual(request.status, u'PENDING')
     self.assertEqual(request.notified, False)
     self.assertEqual(request.date_from, datetime(2014, 4, 10, 0, 0))
     self.assertEqual(request.date_to, datetime(2014, 4, 14, 0, 0))
Beispiel #33
0
 def test_post_create_ok(self):
     from pyvac.views.account import Create
     from pyvac.models import User
     view = Create(self.create_request({'form.submitted': u'1',
                                        'user.login': u'dummy_new',
                                        'user.password': u'secret',
                                        'user.firstname': u'',
                                        'user.lastname': u'',
                                        'user.email': u'*****@*****.**',
                                        'confirm_password': u'secret',
                                        'groups': [u'1', u'2']
                                        }))()
     self.assertIsRedirect(view)
     self.account_todelete.append(User.by_login(self.session,
                                                u'dummy_new').id)
Beispiel #34
0
 def test_by_user(self):
     from pyvac.models import User, Request
     user1 = User.by_login(self.session, u'jdoe')
     with freeze_time('2015-08-01',
                      ignore=['celery', 'psycopg2', 'sqlalchemy',
                              'icalendar']):
         requests = Request.by_user(self.session, user1)
     self.assertEqual(len(requests), 8)
     # take the first
     request = requests[-1]
     self.assertIsInstance(request, Request)
     self.assertEqual(request.days, 5)
     self.assertEqual(request.type, u'CP')
     self.assertEqual(request.status, u'PENDING')
     self.assertEqual(request.notified, False)
     self.assertEqual(request.date_from, datetime(2015, 4, 10, 0, 0))
     self.assertEqual(request.date_to, datetime(2015, 4, 14, 0, 0))
Beispiel #35
0
 def test_by_user(self):
     from pyvac.models import User, Request
     user1 = User.by_login(self.session, u'jdoe')
     with freeze_time('2015-08-01',
                      ignore=['celery', 'psycopg2', 'sqlalchemy',
                              'icalendar']):
         requests = Request.by_user(self.session, user1)
     self.assertEqual(len(requests), 8)
     # take the first
     request = requests[-1]
     self.assertIsInstance(request, Request)
     self.assertEqual(request.days, 5)
     self.assertEqual(request.type, u'CP')
     self.assertEqual(request.status, u'PENDING')
     self.assertEqual(request.notified, False)
     self.assertEqual(request.date_from, datetime(2015, 4, 10, 0, 0))
     self.assertEqual(request.date_to, datetime(2015, 4, 14, 0, 0))
Beispiel #36
0
 def test_post_create_ok(self):
     from pyvac.views.account import Create
     from pyvac.models import User
     view = Create(
         self.create_request({
             'form.submitted': u'1',
             'user.login': u'dummy_new',
             'user.password': u'secret',
             'user.firstname': u'',
             'user.lastname': u'',
             'user.email': u'*****@*****.**',
             'confirm_password': u'secret',
             'groups': [u'1', u'2']
         }))()
     self.assertIsRedirect(view)
     self.account_todelete.append(
         User.by_login(self.session, u'dummy_new').id)
Beispiel #37
0
def populate(engine, ldap):
    """ Retrieve users from ldap directory and import them in local database
    """

    session = DBSession()

    # retrieve managers from dedicated group
    managers = ldap.list_manager()

    # retrieve users
    searchFilter = '(&(objectClass=inetOrgPerson)(employeetype=Employee))'
    required = ['objectClass', 'employeeType', 'cn', 'givenName', 'sn',
                'manager', 'mail', 'ou', 'uid', 'userPassword']

    users = ldap._search(searchFilter, required)
    for user_dn, user_entry in users:
        user_data = ldap.parse_ldap_entry(user_dn, user_entry)
        if not user_data or not user_data.get('login'):
            continue
        login = user_data['login'].decode('utf-8')
        # check what type of user it is
        group = 'user'
        # if it's a manager he should be in manager group
        if user_data['dn'] in managers:
            group = 'manager'
        # if it's an admin he should be in admin group
        what = '(member=%s)' % user_data['dn']
        if len(ldap._search_admin(what, None)) > 0:
            group = 'admin'

        user = User.by_login(session, login)
        if not user:
            user = User.create_from_ldap(session, user_data, group)
        else:
            # update user with ldap informations in case it changed
            user.email = user_data['email'].decode('utf-8')
            user.firstname = user_data['firstname'].decode('utf-8')
            user.lastname = user_data['lastname'].decode('utf-8')
            user.manager_dn = user_data['manager_dn'].decode('utf-8')
            user.dn = user_data['dn'].decode('utf-8')
            user.role = group

        session.add(user)

    session.commit()
Beispiel #38
0
def populate(engine, ldap):
    """ Retrieve users from ldap directory and import them in local database
    """

    session = DBSession()

    # retrieve managers from dedicated group
    managers = ldap.list_manager()

    # retrieve users
    searchFilter = '(&(objectClass=inetOrgPerson)(employeetype=Employee))'
    required = ['objectClass', 'employeeType', 'cn', 'givenName', 'sn',
                'manager', 'mail', 'ou', 'uid', 'userPassword']

    users = ldap._search(searchFilter, required)
    for user_dn, user_entry in users:
        user_data = ldap.parse_ldap_entry(user_dn, user_entry)
        login = user_data['login'].decode('utf-8')
        # check what type of user it is
        group = u'user'
        # if it's a manager he should be in manager group
        if user_data['dn'] in managers:
            group = u'manager'
        # if it's an admin he should be in admin group
        what = '(member=%s)' % user_data['dn']
        if len(ldap._search_admin(what, None)) > 0:
            group = u'admin'

        user = User.by_login(session, login)
        if not user:
            user = User.create_from_ldap(session, user_data, group)
        else:
            # update user with ldap informations in case it changed
            user.email = user_data['email'].decode('utf-8')
            user.firstname = user_data['firstname'].decode('utf-8')
            user.lastname = user_data['lastname'].decode('utf-8')
            user.manager_dn = user_data['manager_dn'].decode('utf-8')
            user.dn = user_data['dn'].decode('utf-8')
            user.role = group

        session.add(user)

    session.commit()
Beispiel #39
0
def locale_negotiator(request):
    """
    Locale negotiator for pyramid views.

    This version differs from Pyramid's :py:func:`default_locale_negotiator
    <pyramid.i18n.default_locale_negotiator>` in that it gets the locale from
    the url parameter or the cookie, and fallbacks to the user's lang.
    """

    login = authenticated_userid(request)
    if login:
        from pyvac.models import DBSession, User
        session = DBSession()
        user = User.by_login(session, login)
        if user.country == 'us':
            return 'en'
        return user.country

    return None
Beispiel #40
0
 def test_post_send_sudo_unknown_ok(self):
     self.config.testing_securitypolicy(userid=u'admin',
                                        permissive=True)
     from pyvac.models import Request, User
     from pyvac.views.request import Send
     total_req = Request.find(self.session, count=True)
     view = Send(self.create_request({'days': 4,
                                      'date_from': '05/05/2015 - 10/05/2015',
                                      'type': '1',
                                      'breakdown': 'FULL',
                                      'sudo_user': '******',
                                      }))()
     self.assertIsRedirect(view)
     self.assertEqual(Request.find(self.session, count=True), total_req + 1)
     last_req = Request.find(self.session)[-1]
     admin_user = User.by_login(self.session, u'admin')
     self.assertEqual(last_req.user_id, admin_user.id)
     self.assertEqual(last_req.status, u'PENDING')
     self.assertFalse(last_req.notified)
Beispiel #41
0
 def test_post_send_sudo_unknown_ok(self):
     self.config.testing_securitypolicy(userid=u'admin',
                                        permissive=True)
     from pyvac.models import Request, User
     from pyvac.views.request import Send
     total_req = Request.find(self.session, count=True)
     view = Send(self.create_request({
         'days': 4,
         'date_from': '05/05/2015 - 10/05/2015',
         'type': '1',
         'breakdown': 'FULL',
         'sudo_user': '******',
     }))()
     self.assertIsRedirect(view)
     self.assertEqual(Request.find(self.session, count=True), total_req + 1)
     last_req = Request.find(self.session)[-1]
     admin_user = User.by_login(self.session, u'admin')
     self.assertEqual(last_req.user_id, admin_user.id)
     self.assertEqual(last_req.status, u'PENDING')
     self.assertFalse(last_req.notified)
     self.delete_last_req(last_req)
Beispiel #42
0
def locale_negotiator(request):
    """
    Locale negotiator for pyramid views.

    This version differs from Pyramid's :py:func:`default_locale_negotiator
    <pyramid.i18n.default_locale_negotiator>` in that it gets the locale from
    the url parameter or the cookie, and fallbacks to the user's lang.
    """

    login = authenticated_userid(request)
    if login:
        from pyvac.models import DBSession, User
        session = DBSession()
        user = User.by_login(session, login)
        if user.country == 'us':
            return 'en'
        if user.country == 'zh':
            return 'en'
        return user.country

    return None
Beispiel #43
0
 def test_post_send_sudo_other_ok(self):
     self.config.testing_securitypolicy(userid='admin',
                                        permissive=True)
     from pyvac.models import Request, User
     from pyvac.views.request import Send
     total_req = Request.find(self.session, count=True)
     view = Send(self.create_request({
         'days': 4,
         'date_from': '05/05/2015 - 10/05/2015',
         'type': '1',
         'breakdown': 'FULL',
         'sudo_user': '******',
     }))()
     self.assertIsRedirect(view)
     self.assertEqual(Request.find(self.session, count=True), total_req + 1)
     last_req = Request.find(self.session)[-1]
     target_user = User.by_login(self.session, 'manager1')
     self.assertEqual(last_req.user_id, target_user.id)
     self.assertEqual(last_req.status, 'APPROVED_ADMIN')
     self.assertTrue(last_req.notified)
     self.delete_last_req(last_req)
Beispiel #44
0
    def test_lu_validate_request(self):
        from pyvac.models import CPLUVacation, CompensatoireVacation, User
        user = User.by_login(self.session, u'sarah.doe')
        self.assertIsInstance(user, User)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=5)
            pool = user.get_cp_usage(self.session)
            days = 3
            date_from = datetime.now()
            date_to = datetime.now() + relativedelta(days=3)
            err = CPLUVacation.validate_request(user, pool, days,
                                                date_from, date_to)
            self.assertEqual(err, None)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=2)
            pool = user.get_cp_usage(self.session)
            days = 3
            date_from = datetime.now()
            date_to = datetime.now() + relativedelta(days=3)
            err = CPLUVacation.validate_request(user, pool, days,
                                                date_from, date_to)
            msg = 'You need 3 months of seniority before using your CP'
            self.assertEqual(err, msg)

        with freeze_time('2017-12-25',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            with patch('pyvac.models.User.arrival_date',
                       new_callable=PropertyMock) as mock_foo:
                mock_foo.return_value = datetime.now() - relativedelta(months=5) # noqa
                pool = user.get_cp_usage(self.session)
                days = 3
                date_from = datetime.now().replace(year=datetime.now().year + 1) # noqa
                date_to = date_from + relativedelta(days=3)
                err = CPLUVacation.validate_request(user, pool, days,
                                                    date_from, date_to)
                msg = 'CP can only be used until 31/03/%d.' % pool['acquis']['expire'].year # noqa
                self.assertEqual(err, msg)

        with freeze_time('2016-12-25',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            with patch('pyvac.models.User.arrival_date',
                       new_callable=PropertyMock) as mock_foo:
                mock_foo.return_value = datetime.now() - relativedelta(months=5) # noqa
                pool = user.get_cp_usage(self.session)
                days = 250
                date_from = datetime.now()
                date_to = datetime.now() + relativedelta(days=3)
                err = CPLUVacation.validate_request(user, pool, days,
                                                    date_from, date_to)
                msg = 'You only have 164 CP to use.'
                self.assertEqual(err, msg)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=5)
            pool = user.get_cp_usage(self.session)
            # lower the amount of pool left
            pool['acquis']['left'] = 0
            pool['restant']['left'] = 0
            days = 20
            date_from = datetime.now()
            date_to = datetime.now() + relativedelta(days=3)
            err = CPLUVacation.validate_request(user, pool, days,
                                                date_from, date_to)
            msg = 'No CP left to take.'
            self.assertEqual(err, msg)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=5)
            days = 3
            date_from = datetime(2016, 12, 25)
            err = CompensatoireVacation.validate_request(user, None, days,
                                                         date_from, None)
            msg = ('You can only use 1 Compensatory holiday at a time, '
                   'for a full day.')
            self.assertEqual(err, msg)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=5)
            days = 0.5
            date_from = datetime(2016, 12, 25)
            err = CompensatoireVacation.validate_request(user, None, days,
                                                         date_from, None)
            msg = ('You can only use 1 Compensatory holiday at a time, '
                   'for a full day.')
            self.assertEqual(err, msg)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=5)
            days = 1
            date_from = datetime(2016, 12, 30)
            err = CompensatoireVacation.validate_request(user, None, days,
                                                         date_from, None)
            msg = '30/12/2016 is not a valid value for Compensatory vacation'
            self.assertEqual(err, msg)

        with freeze_time('2017-01-20',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            with patch('pyvac.models.User.arrival_date',
                       new_callable=PropertyMock) as mock_foo:
                mock_foo.return_value = datetime.now() - relativedelta(months=5)
                days = 1
                date_to = datetime(2016, 12, 20)
                date_from = datetime(2016, 12, 25)
                err = CompensatoireVacation.validate_request(user, None, days,
                                                             date_from, date_to)
                msg = 'You must request a date after 25/12/2016'
                self.assertEqual(err, msg)

        with freeze_time('2017-01-20',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            with patch('pyvac.models.User.arrival_date',
                       new_callable=PropertyMock) as mock_foo:
                mock_foo.return_value = datetime.now() - relativedelta(months=5)
                days = 1
                date_to = datetime(2017, 4, 1)
                date_from = datetime(2016, 12, 25)
                err = CompensatoireVacation.validate_request(user, None, days,
                                                             date_from, date_to)
                msg = ('You must request a date in the following 3 months '
                       'after 25/12/2016')
                self.assertEqual(err, msg)
Beispiel #45
0
    def test_post_send_n_1_ok(self):
        self.config.testing_securitypolicy(userid=u'admin',
                                           permissive=True)
        from pyvac.models import Request, User, CPVacation
        from pyvac.views.request import Send

        total_req = Request.find(self.session, count=True)

        jdoe = User.by_login(self.session, u'jdoe')
        with freeze_time('2016-12-23',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):

            with patch('pyvac.models.User.arrival_date',
                       new_callable=PropertyMock) as mock_foo:
                mock_foo.return_value = datetime.now() - relativedelta(months=5) # noqa
                CPVacation.users_base = {'jdoe': {'n_1': 20, 'restants': 25}}
                CPVacation.epoch = datetime(2016, 6, 1)
                pool = jdoe.get_cp_usage(self.session)
                self.assertEqual(pool['n_1']['left'], 20)

                request = self.create_request({
                    'days': 5,
                    'date_from': '09/01/2017 - 13/01/2017',
                    'type': '1',
                    'breakdown': 'FULL',
                    'sudo_user': '******',
                })
                view = Send(request)()
                self.session.commit()

                self.assertIsRedirect(view)
                self.assertEqual(Request.find(self.session, count=True), total_req + 1)  # noqa
                last_req = Request.find(self.session)[-1]
                self.assertEqual(last_req.user_id, jdoe.id)
                self.assertEqual(last_req.status, u'APPROVED_ADMIN')
                self.assertEqual(last_req.days, 5.0)
                pool = jdoe.get_cp_usage(self.session)
                self.assertEqual(pool['n_1']['left'], 15)
                self.delete_last_req(last_req)
                self.session.flush()
                self.session.commit()

        with freeze_time('2017-01-02',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):

            with patch('pyvac.models.User.arrival_date',
                       new_callable=PropertyMock) as mock_foo:
                mock_foo.return_value = datetime.now() - relativedelta(months=5) # noqa
                CPVacation.users_base = {'jdoe': {'n_1': 20, 'restants': 25}}
                CPVacation.epoch = datetime(2016, 6, 1)
                pool = jdoe.get_cp_usage(self.session)
                self.assertEqual(pool['n_1']['left'], 0)
                self.assertEqual(pool['restant']['left'], 25)

                request = self.create_request({
                    'days': 5,
                    'date_from': '16/01/2017 - 20/01/2017',
                    'type': '1',
                    'breakdown': 'FULL',
                    'sudo_user': '******',
                })
                view = Send(request)()
                self.session.commit()

                self.assertIsRedirect(view)
                self.assertEqual(Request.find(self.session, count=True), total_req + 1)  # noqa
                last_req = Request.find(self.session)[-1]
                self.assertEqual(last_req.user_id, jdoe.id)
                self.assertEqual(last_req.status, u'APPROVED_ADMIN')
                self.assertEqual(last_req.days, 5.0)
                pool = jdoe.get_cp_usage(self.session)
                self.assertEqual(pool['n_1']['left'], 0)
                self.assertEqual(pool['restant']['left'], 20.0)
                self.delete_last_req(last_req)
Beispiel #46
0
 def test_by_name_country_no_rtt_ko(self):
     from pyvac.models import User, VacationType
     manager3 = User.by_login(self.session, u'manager3')
     vac = VacationType.by_name_country(self.session, u'RTT',
                                        manager3.country)
     self.assertIsNone(vac)
Beispiel #47
0
 def test_by_login_ko_mirrored(self):
     from pyvac.models import User
     user = User.by_login(self.session, u'johndo')
     self.assertEqual(user, None)
Beispiel #48
0
    def test_lu_validate_request(self):
        from pyvac.models import CPLUVacation, CompensatoireVacation, User

        date_start = datetime.now() - relativedelta(months=3)
        date_end = datetime.now() + relativedelta(months=3)
        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=5)
            with patch('pyvac.models.User.pool',
                       new_callable=PropertyMock) as mock_foo:
                mocked_pool1 = mock_pool(200, date_start, date_end)
                mocked_pool2 = mock_pool(0, date_start, date_end)
                mock_foo.return_value = {'CP acquis': mocked_pool1,
                                         'CP restant': mocked_pool2}
                user = User.by_login(self.session, u'sarah.doe')
                self.assertIsInstance(user, User)

                days = 3
                date_from = datetime.now()
                date_to = datetime.now() + relativedelta(days=3)
                err = CPLUVacation.validate_request(user, None, days,
                                                    date_from, date_to)
                self.assertEqual(err, None)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=2)
            with patch('pyvac.models.User.pool',
                       new_callable=PropertyMock) as mock_foo:
                mocked_pool1 = mock_pool(200, date_start, date_end)
                mocked_pool2 = mock_pool(0, date_start, date_end)
                mock_foo.return_value = {'CP acquis': mocked_pool1,
                                         'CP restant': mocked_pool2}
                user = User.by_login(self.session, u'sarah.doe')
                self.assertIsInstance(user, User)

                days = 3
                date_from = datetime.now()
                date_to = datetime.now() + relativedelta(days=3)
                err = CPLUVacation.validate_request(user, None, days,
                                                    date_from, date_to)
                msg = 'You need 3 months of seniority before using your CP'
                self.assertEqual(err, msg)

        with freeze_time('2017-12-25',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            with patch('pyvac.models.User.arrival_date',
                       new_callable=PropertyMock) as mock_foo:
                mock_foo.return_value = datetime.now() - relativedelta(months=5) # noqa
                with patch('pyvac.models.User.pool',
                           new_callable=PropertyMock) as mock_foo:
                    mocked_pool1 = mock_pool(200, date_start, date_end)
                    mocked_pool2 = mock_pool(0, date_start, date_end)
                    mock_foo.return_value = {'CP acquis': mocked_pool1,
                                             'CP restant': mocked_pool2}
                    user = User.by_login(self.session, u'sarah.doe')
                    self.assertIsInstance(user, User)
                    days = 3
                    date_from = datetime.now().replace(year=datetime.now().year + 1) # noqa
                    date_to = date_from + relativedelta(days=3)
                    err = CPLUVacation.validate_request(user, None, days,
                                                        date_from, date_to)
                    msg = 'CP can only be used until %s.' % user.pool['CP acquis'].date_end.strftime('%d/%m/%Y') # noqa
                    self.assertEqual(err, msg)

        with freeze_time('2016-12-25',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            with patch('pyvac.models.User.arrival_date',
                       new_callable=PropertyMock) as mock_foo:
                mock_foo.return_value = datetime.now() - relativedelta(months=5) # noqa
                with patch('pyvac.models.User.pool',
                           new_callable=PropertyMock) as mock_foo:
                    mocked_pool1 = mock_pool(200, date_start, date_end)
                    mocked_pool2 = mock_pool(0, date_start, date_end)
                    mock_foo.return_value = {'CP acquis': mocked_pool1,
                                             'CP restant': mocked_pool2}
                    user = User.by_login(self.session, u'sarah.doe')
                    self.assertIsInstance(user, User)
                    days = 250
                    date_from = datetime.now()
                    date_to = datetime.now() + relativedelta(days=3)
                    err = CPLUVacation.validate_request(user, None, days,
                                                        date_from, date_to)
                    msg = 'You only have 200 CP to use.'
                    self.assertEqual(err, msg)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=5)
            with patch('pyvac.models.User.pool',
                       new_callable=PropertyMock) as mock_foo:
                mocked_pool1 = mock_pool(0, date_start, date_end)
                mocked_pool2 = mock_pool(0, date_start, date_end)
                mock_foo.return_value = {'CP acquis': mocked_pool1,
                                         'CP restant': mocked_pool2}
                user = User.by_login(self.session, u'sarah.doe')
                self.assertIsInstance(user, User)
                days = 20
                date_from = datetime.now()
                date_to = datetime.now() + relativedelta(days=3)
                err = CPLUVacation.validate_request(user, None, days,
                                                    date_from, date_to)
                msg = 'No CP left to take.'
                self.assertEqual(err, msg)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=5)
            days = 3
            date_from = datetime(2016, 12, 25)
            err = CompensatoireVacation.validate_request(user, None, days,
                                                         date_from, None)
            msg = ('You can only use 1 Compensatory holiday at a time, '
                   'for a full day.')
            self.assertEqual(err, msg)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=5)
            days = 0.5
            date_from = datetime(2016, 12, 25)
            err = CompensatoireVacation.validate_request(user, None, days,
                                                         date_from, None)
            msg = ('You can only use 1 Compensatory holiday at a time, '
                   'for a full day.')
            self.assertEqual(err, msg)

        with patch('pyvac.models.User.arrival_date',
                   new_callable=PropertyMock) as mock_foo:
            mock_foo.return_value = datetime.now() - relativedelta(months=5)
            days = 1
            date_from = datetime(2016, 12, 30)
            err = CompensatoireVacation.validate_request(user, None, days,
                                                         date_from, None)
            msg = '30/12/2016 is not a valid value for Compensatory vacation'
            self.assertEqual(err, msg)

        with freeze_time('2017-01-20',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            with patch('pyvac.models.User.arrival_date',
                       new_callable=PropertyMock) as mock_foo:
                mock_foo.return_value = datetime.now() - relativedelta(months=5)
                days = 1
                date_to = datetime(2016, 12, 20)
                date_from = datetime(2016, 12, 25)
                err = CompensatoireVacation.validate_request(user, None, days,
                                                             date_from, date_to)
                msg = 'You must request a date after 25/12/2016'
                self.assertEqual(err, msg)

        with freeze_time('2017-01-20',
                         ignore=['celery', 'psycopg2', 'sqlalchemy',
                                 'icalendar']):
            with patch('pyvac.models.User.arrival_date',
                       new_callable=PropertyMock) as mock_foo:
                mock_foo.return_value = datetime.now() - relativedelta(months=5)
                days = 1
                date_to = datetime(2017, 4, 1)
                date_from = datetime(2016, 12, 25)
                err = CompensatoireVacation.validate_request(user, None, days,
                                                             date_from, date_to)
                msg = ('You must request a date in the following 3 months '
                       'after 25/12/2016')
                self.assertEqual(err, msg)
Beispiel #49
0
 def test_by_login_ko_mirrored(self):
     from pyvac.models import User
     user = User.by_login(self.session, u'johndo')
     self.assertEqual(user, None)
Beispiel #50
0
 def test_by_name_country_no_rtt_ko(self):
     from pyvac.models import User, VacationType
     manager3 = User.by_login(self.session, u'manager3')
     vac = VacationType.by_name_country(self.session, u'RTT',
                                        manager3.country)
     self.assertIsNone(vac)