コード例 #1
0
    def test_registered_endpoints(self):
        """Test view context with one valid endpoint."""
        url = reverse('django-numerics-index')

        self.create_user()
        api.register('label_endpoint',
                     self.label_endpoint,
                     responses.LabelResponse)

        api.register('number_endpoint',
                     self.number_endpoint,
                     responses.NumberResponse)

        self.client.login(username=self.USERNAME, password=self.PASSWORD)
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        endpoint_urls = sorted(response.context[0].get('endpoints'),
                               key=itemgetter('name'))
        expected_urls = [{'help_url': '/help/username/label_endpoint',
                          'name': 'label_endpoint',
                          'url': '/username/label_endpoint'},
                         {'help_url': '/help/username/number_endpoint',
                          'name': 'number_endpoint',
                          'url': '/username/number_endpoint'}]
        self.assertListEqual(endpoint_urls, expected_urls)
コード例 #2
0
    def test_registered_endpoints(self):
        """Test view context with one valid endpoint."""
        url = reverse('django-numerics-index')

        self.create_user()
        api.register('label_endpoint',
                     self.label_endpoint,
                     responses.LabelResponse)

        api.register('number_endpoint',
                     self.number_endpoint,
                     responses.NumberResponse)

        self.client.login(username=self.USERNAME, password=self.PASSWORD)
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        endpoint_urls = sorted(response.context[0].get('endpoints'),
                               key=itemgetter('name'))
        expected_urls = [{'help_url': '/help/username/label_endpoint',
                          'name': 'label_endpoint',
                          'url': '/username/label_endpoint'},
                         {'help_url': '/help/username/number_endpoint',
                          'name': 'number_endpoint',
                          'url': '/username/number_endpoint'}]
        self.assertListEqual(endpoint_urls, expected_urls)
コード例 #3
0
 def test_valid_endpoint_with_permission_func(self):
     """Test register call with valid endpoint and permission function."""
     name = 'label_endpoint'
     api.register(name,
                  self.label_endpoint,
                  responses.LabelResponse,
                  permission_func=self.always_true)
     endpoint = next(iter(api._CODE_ENDPOINT_MAP.values()))
     self.assertEqual(endpoint.name, name)
     self.assertEqual(endpoint.func, self.label_endpoint)
     self.assertEqual(endpoint.permission_func, self.always_true)
コード例 #4
0
ファイル: test_api.py プロジェクト: wallace57/django-numerics
 def test_valid_endpoint_with_permission_func(self):
     """Test register call with valid endpoint and permission function."""
     name = 'label_endpoint'
     api.register(name,
                  self.label_endpoint,
                  responses.LabelResponse,
                  permission_func=self.always_true)
     endpoint = next(iter(api._CODE_ENDPOINT_MAP.values()))
     self.assertEqual(endpoint.name, name)
     self.assertEqual(endpoint.func, self.label_endpoint)
     self.assertEqual(endpoint.permission_func, self.always_true)
コード例 #5
0
    def test_valid_serialize(self):
        """Test serialize/deserialize with valid data."""
        serializer = self.serializer_class()
        endpoint_name = 'label_endpoint'
        api.register(endpoint_name, self.label_endpoint,
                     responses.LabelResponse)

        user = self.create_user()
        endpoint = api.get_endpoint_by_name(endpoint_name)

        data = (user, endpoint)
        output_data = serializer.deserialize(serializer.serialize(*data))
        self.assertEqual(data, output_data)
コード例 #6
0
 def test_valid_endpoint(self):
     """Test register call with valid endpoint."""
     name = 'label_endpoint'
     api.register(name, self.label_endpoint, responses.LabelResponse)
     # make sure that values code end name maps have same value.
     self.assertEqual(list(api._CODE_ENDPOINT_MAP.values()),
                      list(api._NAME_ENDPOINT_MAP.values()))
     # make sure there is only one endpoint registered
     self.assertEqual(len(api._CODE_ENDPOINT_MAP.values()), 1)
     endpoint = next(iter(api._CODE_ENDPOINT_MAP.values()))
     self.assertEqual(endpoint.name, name)
     self.assertEqual(endpoint.func, self.label_endpoint)
     self.assertEqual(endpoint.permission_func, api.grant_access)
コード例 #7
0
 def test_no_granted_endpoints(self):
     """Test endpoints with denied access."""
     user = self.create_user()
     api.register('label_endpoint',
                  self.label_endpoint,
                  responses.LabelResponse,
                  permission_func=self.always_false)
     api.register('number_endpoint',
                  self.number_endpoint,
                  responses.NumberResponse,
                  permission_func=self.always_false)
     endpoints = api.get_endpoints(user)
     expected_endpoints = []
     self.assertEqual(endpoints, expected_endpoints)
コード例 #8
0
ファイル: test_api.py プロジェクト: wallace57/django-numerics
 def test_no_granted_endpoints(self):
     """Test endpoints with denied access."""
     user = self.create_user()
     api.register('label_endpoint',
                  self.label_endpoint,
                  responses.LabelResponse,
                  permission_func=self.always_false)
     api.register('number_endpoint',
                  self.number_endpoint,
                  responses.NumberResponse,
                  permission_func=self.always_false)
     endpoints = api.get_endpoints(user)
     expected_endpoints = []
     self.assertEqual(endpoints, expected_endpoints)
コード例 #9
0
    def test_valid_serialize(self):
        """Test serialize/deserialize with valid data."""
        serializer = self.serializer_class()
        endpoint_name = 'label_endpoint'
        api.register(endpoint_name,
                     self.label_endpoint,
                     responses.LabelResponse)

        user = self.create_user()
        endpoint = api.get_endpoint_by_name(endpoint_name)

        data = (user, endpoint)
        output_data = serializer.deserialize(serializer.serialize(*data))
        self.assertEqual(data, output_data)
コード例 #10
0
ファイル: test_api.py プロジェクト: wallace57/django-numerics
 def test_valid_endpoint(self):
     """Test register call with valid endpoint."""
     name = 'label_endpoint'
     api.register(name,
                  self.label_endpoint,
                  responses.LabelResponse)
     # make sure that values code end name maps have same value.
     self.assertEqual(list(api._CODE_ENDPOINT_MAP.values()),
                      list(api._NAME_ENDPOINT_MAP.values()))
     # make sure there is only one endpoint registered
     self.assertEqual(len(api._CODE_ENDPOINT_MAP.values()), 1)
     endpoint = next(iter(api._CODE_ENDPOINT_MAP.values()))
     self.assertEqual(endpoint.name, name)
     self.assertEqual(endpoint.func, self.label_endpoint)
     self.assertEqual(endpoint.permission_func, api.grant_access)
コード例 #11
0
    def test_registered_endpoints_with_wrong_return_type(self):
        """Test view context with one valid endpoint."""
        User = get_user_model()
        User.objects.create_user('test', '*****@*****.**', 'test')
        user = User.objects.get()

        api.register('label_endpoint',
                     self.label_endpoint,
                     responses.NumberResponse)

        url = api.get_endpoints(user)[0]['url']

        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        resp_json = json.loads(response.content.decode('utf-8'))
        self.assertFalse(resp_json['success'])
コード例 #12
0
    def test_registered_endpoints_with_wrong_return_type(self):
        """Test view context with one valid endpoint."""
        User = get_user_model()
        User.objects.create_user('test', '*****@*****.**', 'test')
        user = User.objects.get()

        api.register('label_endpoint',
                     self.label_endpoint,
                     responses.NumberResponse)

        url = api.get_endpoints(user)[0]['url']

        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        resp_json = json.loads(response.content.decode('utf-8'))
        self.assertFalse(resp_json['success'])
コード例 #13
0
    def test_invalid_serialize(self):
        """Test serialize/deserialize with tempered data."""
        serializer = self.serializer_class()
        endpoint_name = 'label_endpoint'
        api.register(endpoint_name, self.label_endpoint,
                     responses.LabelResponse)

        user = self.create_user()
        endpoint = api.get_endpoint_by_name(endpoint_name)

        data = (user, endpoint)
        serialized_code = serializer.serialize(*data)

        tempered_code = serialized_code + 'X'
        with self.assertRaises(serializers.SerializerException):
            serializer.deserialize(tempered_code)
コード例 #14
0
    def test_invalid_serialize(self):
        """Test serialize/deserialize with tempered data."""
        serializer = self.serializer_class()
        endpoint_name = 'label_endpoint'
        api.register(endpoint_name,
                     self.label_endpoint,
                     responses.LabelResponse)

        user = self.create_user()
        endpoint = api.get_endpoint_by_name(endpoint_name)

        data = (user, endpoint)
        serialized_code = serializer.serialize(*data)

        tempered_code = serialized_code + 'X'
        with self.assertRaises(serializers.SerializerException):
            serializer.deserialize(tempered_code)
コード例 #15
0
    def test_registered_endpoints(self):
        """Test view context with one valid endpoint."""
        User = get_user_model()
        User.objects.create_user('test', '*****@*****.**', 'test')
        user = User.objects.get()

        api.register('label_endpoint',
                     self.label_endpoint,
                     responses.LabelResponse)

        url = api.get_endpoints(user)[0]['url']

        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        resp_json = json.loads(response.content.decode('utf-8'))
        expected_json = {'data': {'value': 'label_val'},
                         'postfix': 'postfix_label'}
        self.assertEqual(resp_json, expected_json)
コード例 #16
0
ファイル: test_api.py プロジェクト: wallace57/django-numerics
    def test_one_granted_endpoints(self):
        """Test endpoints with one granted, one denied access."""
        user = self.create_user()
        api.register('label_endpoint',
                     self.label_endpoint,
                     responses.LabelResponse,
                     permission_func=self.always_true)
        api.register('number_endpoint',
                     self.number_endpoint,
                     responses.NumberResponse,
                     permission_func=self.always_false)
        endpoints = sorted(api.get_endpoints(user),
                           key=itemgetter('name'))

        expected_endpoints = [{'help_url': '/help/username/label_endpoint',
                               'name': 'label_endpoint',
                               'url': '/username/label_endpoint'}]
        self.assertEqual(endpoints, expected_endpoints)
コード例 #17
0
    def test_valid_endpoint_register_twice_with_permission_func(self):
        """Test register call with valid endpoint and permission function.

        This time endpoint will be registered twice and it will be with
        different permission function. In that case, we will use the first one
        registered.

        """
        name = 'label_endpoint'
        api.register(name,
                     self.label_endpoint,
                     responses.LabelResponse,
                     permission_func=self.always_true)
        api.register(name, self.number_endpoint, responses.LabelResponse)
        endpoint = next(iter(api._CODE_ENDPOINT_MAP.values()))
        self.assertEqual(endpoint.name, name)
        self.assertEqual(endpoint.func, self.label_endpoint)
        self.assertEqual(endpoint.permission_func, self.always_true)
コード例 #18
0
    def test_registered_endpoints(self):
        """Test view context with one valid endpoint."""
        User = get_user_model()
        User.objects.create_user('test', '*****@*****.**', 'test')
        user = User.objects.get()

        api.register('label_endpoint',
                     self.label_endpoint,
                     responses.LabelResponse)

        url = api.get_endpoints(user)[0]['url']

        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        resp_json = json.loads(response.content.decode('utf-8'))
        expected_json = {'data': {'value': 'label_val'},
                         'postfix': 'postfix_label'}
        self.assertEqual(resp_json, expected_json)
コード例 #19
0
    def test_one_registered_endpoint_no_user(self):
        """Test view context with one valid endpoint.

        this time there will not be any logged in users. Default
        permission function will filter all the results. As a result,
        this request will return http404
        """
        url = reverse('django-numerics-index')

        api.register('label_endpoint',
                     self.label_endpoint,
                     responses.LabelResponse)

        api.register('number_endpoint',
                     self.number_endpoint,
                     responses.NumberResponse)

        response = self.client.get(url)
        self.assertEqual(response.status_code, 404)
コード例 #20
0
    def test_one_registered_endpoint_no_user(self):
        """Test view context with one valid endpoint.

        this time there will not be any logged in users. Default
        permission function will filter all the results. As a result,
        this request will return http404
        """
        url = reverse('django-numerics-index')

        api.register('label_endpoint',
                     self.label_endpoint,
                     responses.LabelResponse)

        api.register('number_endpoint',
                     self.number_endpoint,
                     responses.NumberResponse)

        response = self.client.get(url)
        self.assertEqual(response.status_code, 404)
コード例 #21
0
    def test_one_granted_endpoints(self):
        """Test endpoints with one granted, one denied access."""
        user = self.create_user()
        api.register('label_endpoint',
                     self.label_endpoint,
                     responses.LabelResponse,
                     permission_func=self.always_true)
        api.register('number_endpoint',
                     self.number_endpoint,
                     responses.NumberResponse,
                     permission_func=self.always_false)
        endpoints = sorted(api.get_endpoints(user), key=itemgetter('name'))

        expected_endpoints = [{
            'help_url': '/help/username/label_endpoint',
            'name': 'label_endpoint',
            'url': '/username/label_endpoint'
        }]
        self.assertEqual(endpoints, expected_endpoints)
コード例 #22
0
ファイル: test_api.py プロジェクト: wallace57/django-numerics
    def test_valid_endpoint_register_twice_with_permission_func(self):
        """Test register call with valid endpoint and permission function.

        This time endpoint will be registered twice and it will be with
        different permission function. In that case, we will use the first one
        registered.

        """
        name = 'label_endpoint'
        api.register(name,
                     self.label_endpoint,
                     responses.LabelResponse,
                     permission_func=self.always_true)
        api.register(name,
                     self.number_endpoint,
                     responses.LabelResponse)
        endpoint = next(iter(api._CODE_ENDPOINT_MAP.values()))
        self.assertEqual(endpoint.name, name)
        self.assertEqual(endpoint.func, self.label_endpoint)
        self.assertEqual(endpoint.permission_func, self.always_true)
コード例 #23
0
ファイル: views.py プロジェクト: huseyinyilmaz/worklogger
    Info includes name of the job and total time spent for this job.
    If there is no active log, 'Not Working' will be returned.
    """
    logs = user.log_set.filter(finish__isnull=True)[:1]
    if logs:
        log = logs[0]
        result = LabelResponse(log.job.name,
                               log.get_duration_display())
    else:
        log = user.log_set.latest()
        result = LabelResponse('Not Working',
                               str(timezone.localtime(log.start).date()))

    return result


def total_users(user):
    """Return total number of users."""
    user_count = User.objects.filter(is_active=True).count()

    return NumberResponse(user_count, 'Total number of users')


register('total-users', total_users, NumberResponse)
register('last-day-hours', last_day_hours, LabelResponse)
register('last-month-hours', last_month_hours, LabelResponse)
register('previous-month-hours', previous_month_hours, LabelResponse,
         cache_timeout=60*60)  # one hour
register('current-job', current_job, LabelResponse)
コード例 #24
0
    Info includes name of the job and total time spent for this job.
    If there is no active log, 'Not Working' will be returned.
    """
    logs = user.log_set.filter(finish__isnull=True)[:1]
    if logs:
        log = logs[0]
        result = LabelResponse(log.job.name, log.get_duration_display())
    else:
        log = user.log_set.latest()
        result = LabelResponse('Not Working',
                               str(timezone.localtime(log.start).date()))

    return result


def total_users(user):
    """Return total number of users."""
    user_count = User.objects.filter(is_active=True).count()

    return NumberResponse(user_count, 'Total number of users')


register('total-users', total_users, NumberResponse)
register('last-day-hours', last_day_hours, LabelResponse)
register('last-month-hours', last_month_hours, LabelResponse)
register('previous-month-hours',
         previous_month_hours,
         LabelResponse,
         cache_timeout=60 * 60)  # one hour
register('current-job', current_job, LabelResponse)