Ejemplo n.º 1
0
    def test_successful_post_no_home_page(self, client, source_add_user,
                                          mock_icon_urls):
        test_data = get_post_body()
        resp = client.post(
            self.endpoint,
            json.dumps(test_data),
            content_type='application/vnd.api+json',
            HTTP_AUTHORIZATION=source_add_user.authorization(),
        )
        assert resp.status_code == 201
        data = flatten_write_response(resp)

        created_label = data['source']['longTitle'].replace(' ', '_').lower()
        created_user = ShareUser.objects.get(
            pk=IDObfuscator.decode_id(data['user']['id']))

        assert data['source']['longTitle'] == test_data['data']['attributes'][
            'long_title']
        assert data['source']['name'] == created_label
        assert data['source']['homePage'] is None
        assert data['user']['username'] == created_label
        assert data['user']['token'] == created_user.accesstoken_set.first(
        ).token
        assert created_user.is_trusted is True
        assert data['sourceConfig']['label'] == created_label
Ejemplo n.º 2
0
 def _resolve_ref(self, ref):
     model = apps.get_model('share', model_name=ref['@type'])
     ct = ContentType.objects.get_for_model(model, for_concrete_model=True)
     try:
         if ref['@id'].startswith('_:'):
             return next(change.target for change in self._changes_cache
                         if change.target_type == ct
                         and change.node_id == ref['@id'] and change.target)
         return model._meta.concrete_model.objects.get(
             pk=IDObfuscator.decode_id(ref['@id']))
     except (StopIteration, model.DoesNotExist) as ex:
         raise Exception(
             'Could not resolve reference {}'.format(ref)) from ex
Ejemplo n.º 3
0
 def _resolve_ref(self, ref):
     model = apps.get_model('share', model_name=ref['@type'])
     ct = ContentType.objects.get_for_model(model, for_concrete_model=True)
     try:
         if ref['@id'].startswith('_:'):
             return next(
                 change.target
                 for change in self._changes_cache
                 if change.target_type == ct
                 and change.node_id == ref['@id']
                 and change.target
             )
         return model._meta.concrete_model.objects.get(pk=IDObfuscator.decode_id(ref['@id']))
     except (StopIteration, model.DoesNotExist) as ex:
         raise Exception('Could not resolve reference {}'.format(ref)) from ex
Ejemplo n.º 4
0
    def get_search_results(self, request, queryset, search_term):
        try:
            return queryset.filter(id=IDObfuscator.decode_id(search_term)), False
        except InvalidID:
            pass

        # Overriden because there is no way to opt out of a case insensitive search
        search_fields = self.get_search_fields(request)
        use_distinct = bool(search_term)
        if search_fields and search_term:
            orm_lookups = ['{}__startswith'.format(search_field) for search_field in search_fields]
            for bit in search_term.split():
                or_queries = [models.Q(**{orm_lookup: bit}) for orm_lookup in orm_lookups]
                queryset = queryset.filter(reduce(operator.or_, or_queries))

        return queryset, use_distinct
    def test_successful_post_no_home_page(self, client, source_add_user, mock_icon_urls):
        test_data = get_post_body()
        resp = client.post(
            self.endpoint,
            json.dumps(test_data),
            content_type='application/vnd.api+json',
            HTTP_AUTHORIZATION=source_add_user.authorization(),
        )
        assert resp.status_code == 201
        data = flatten_write_response(resp)

        created_label = data['source']['longTitle'].replace(' ', '_').lower()
        created_user = ShareUser.objects.get(pk=IDObfuscator.decode_id(data['user']['id']))

        assert data['source']['longTitle'] == test_data['data']['attributes']['long_title']
        assert data['source']['name'] == created_label
        assert data['source']['homePage'] is None
        assert data['user']['username'] == created_label
        assert data['user']['token'] == created_user.accesstoken_set.first().token
        assert created_user.is_trusted is True