def test_extract_root_meta_invalid_meta():
    def get_root_meta(resource, many):
        return 'not a dict'

    serializer = InvalidExtractRootMetaResourceSerializer()
    with pytest.raises(AssertionError) as e_info:
        JSONRenderer.extract_root_meta(serializer, {})
def test_extract_root_meta_invalid_meta():
    def get_root_meta(resource, many):
        return 'not a dict'

    serializer = InvalidExtractRootMetaResourceSerializer()
    with pytest.raises(AssertionError) as e_info:
        JSONRenderer.extract_root_meta(serializer, {})
Beispiel #3
0
def test_extract_root_meta_invalid_meta():
    def get_root_meta(obj):
        return 'not a dict'

    serializer = ResourceSerializer()
    serializer.get_root_meta = get_root_meta
    with pytest.raises(AssertionError) as e_info:
        JSONRenderer.extract_root_meta(serializer, {}, {})
def test_extract_root_meta_invalid_meta():
    def get_root_meta(obj):
        return 'not a dict'

    serializer = ResourceSerializer()
    serializer.get_root_meta = get_root_meta
    with pytest.raises(AssertionError) as e_info:
        JSONRenderer.extract_root_meta(serializer, {}, {})
Beispiel #5
0
def test_simple_reverse_relation_included_renderer():
    '''
    Test renderer when a single reverse fk relation is passed.
    '''
    serializer = DummyTestSerializer(instance=Entry())
    renderer = JSONRenderer()
    rendered = renderer.render(serializer.data,
                               renderer_context={'view': DummyTestViewSet()})

    assert rendered
def test_simple_reverse_relation_included_renderer():
    '''
    Test renderer when a single reverse fk relation is passed.
    '''
    serializer = DummyTestSerializer(instance=Entry())
    renderer = JSONRenderer()
    rendered = renderer.render(
        serializer.data,
        renderer_context={'view': DummyTestViewSet()})

    assert rendered
Beispiel #7
0
def test_api_patch(fixture, admin_client, viewset, snapshot, minio_mock):
    url = reverse("{0}-detail".format(viewset.base_name), args=[fixture.pk])

    serializer = viewset.serializer_class(fixture)
    renderer = JSONRenderer()
    context = {"view": viewset}
    data = renderer.render(serializer.data, renderer_context=context)

    with CaptureQueriesContext(connection) as context:
        response = admin_client.patch(url, data=json.loads(data))

    assert_response(response, context, snapshot, request_payload=data)
Beispiel #8
0
def test_api_create(fixture, admin_client, viewset, snapshot):
    url = reverse("{0}-list".format(viewset.base_name))

    serializer = viewset.serializer_class(fixture)
    renderer = JSONRenderer()
    context = {"view": viewset}
    data = renderer.render(serializer.data, renderer_context=context)
    fixture.delete()  # avoid constraint issues

    with CaptureQueriesContext(connection) as context:
        response = admin_client.post(url, data=json.loads(data))

    assert_response(response, context, snapshot)
def test_extract_attributes():
    fields = {
        'id': serializers.Field(),
        'username': serializers.Field(),
        'deleted': serializers.ReadOnlyField(),
    }
    resource = {'id': 1, 'deleted': None, 'username': '******'}
    expected = {'username': '******', 'deleted': None}
    assert sorted(JSONRenderer.extract_attributes(
        fields,
        resource)) == sorted(expected), 'Regular fields should be extracted'
    assert sorted(JSONRenderer.extract_attributes(fields, {})) == sorted(
        {'username':
         ''}), 'Should not extract read_only fields on empty serializer'
def test_extract_attributes():
    fields = {
        'id': serializers.Field(),
        'username': serializers.Field(),
        'deleted': serializers.ReadOnlyField(),
    }
    resource = {'id': 1, 'deleted': None, 'username': '******'}
    expected = {
        'username': '******',
        'deleted': None
    }
    assert sorted(JSONRenderer.extract_attributes(fields, resource)) == sorted(expected), 'Regular fields should be extracted'
    assert sorted(JSONRenderer.extract_attributes(fields, {})) == sorted(
        {'username': ''}), 'Should not extract read_only fields on empty serializer'
Beispiel #11
0
def test_extract_attributes():
    fields = {
        "id": serializers.Field(),
        "username": serializers.Field(),
        "deleted": serializers.ReadOnlyField(),
    }
    resource = {"id": 1, "deleted": None, "username": "******"}
    expected = {"username": "******", "deleted": None}
    assert sorted(JSONRenderer.extract_attributes(
        fields,
        resource)) == sorted(expected), "Regular fields should be extracted"
    assert sorted(JSONRenderer.extract_attributes(fields, {})) == sorted(
        {"username":
         ""}), "Should not extract read_only fields on empty serializer"
Beispiel #12
0
def test_build_json_resource_obj():
    resource = {"username": "******", "version": "1.0.0"}

    serializer = ResourceSerializer(data={"username": "******"})
    serializer.is_valid()
    resource_instance = serializer.save()

    output = {
        "type": "user",
        "id": "1",
        "attributes": {
            "username": "******"
        },
        "meta": {
            "version": "1.0.0"
        },
    }

    assert (JSONRenderer.build_json_resource_obj(
        get_serializer_fields(serializer),
        resource,
        resource_instance,
        "user",
        serializer,
    ) == output)
def test_extract_meta():
    serializer = ResourceSerializer(data={'username': '******', 'version':'1.0.0'})
    serializer.is_valid()
    expected = {
        'version': '1.0.0',
    }
    assert JSONRenderer.extract_meta(serializer, serializer.data) == expected
Beispiel #14
0
def test_extract_relation_instance(comment):
    serializer = RelatedModelSerializer(instance=comment)

    got = JSONRenderer.extract_relation_instance(
        field=serializer.fields['blog'], resource_instance=comment
    )
    assert got == comment.entry.blog
def test_extract_meta():
    serializer = ResourceSerializer(data={'username': '******', 'version': '1.0.0'})
    serializer.is_valid()
    expected = {
        'version': '1.0.0',
    }
    assert JSONRenderer.extract_meta(serializer, serializer.data) == expected
Beispiel #16
0
def test_extract_root_meta_many():
    def get_root_meta(obj):
        return {'foo': 'meta-value'}

    serializer = ResourceSerializer(many=True)
    serializer.get_root_meta = get_root_meta
    expected = {'foo': 'meta-value'}
    assert JSONRenderer.extract_root_meta(serializer, {}, {}) == expected
Beispiel #17
0
def test_extract_meta():
    serializer = ResourceSerializer(data={
        "username": "******",
        "version": "1.0.0"
    })
    serializer.is_valid()
    expected = {
        "version": "1.0.0",
    }
    assert JSONRenderer.extract_meta(serializer, serializer.data) == expected
def test_extract_root_meta_many():
    def get_root_meta(obj):
        return {
          'foo': 'meta-value'
        }

    serializer = ResourceSerializer(many=True)
    serializer.get_root_meta = get_root_meta
    expected = {
      'foo': 'meta-value'
    }
    assert JSONRenderer.extract_root_meta(serializer, {}, {}) == expected
 def extract_relationships(fields, resource, resource_instance):
     data = JSONRenderer.extract_relationships(fields, resource,
                                               resource_instance)
     # Do not alter RelationshipFields, which handle JSON API formatting
     for field_name, field in six.iteritems(fields):
         if isinstance(field, RelationshipField):
             data.update({field_name: resource.get(field_name)})
     # Remove embedded relationship data
     for field in data:
         if isinstance(field, RelationshipField):
             ret = {}
             for key in data[field]:
                 if key != 'data':
                     ret[key] = data[field][key]
             data[field] = ret
     return utils.format_keys(data)
Beispiel #20
0
 def json(cls, *args, **kwargs):
     """Render a JSON POST request."""
     serializer = cls.build(*args, **kwargs)
     attributes = {}
     relationships = {}
     for key, value in serializer.initial_data.items():
         if is_relation(value):
             relationships[format_value(key)] = {"data": value}
         else:
             attributes[format_value(key)] = value
     data = {"type": get_resource_type_from_serializer(serializer)}
     if attributes:
         data["attributes"] = attributes
     if relationships:
         data["relationships"] = relationships
     return JSONRenderer().render({"data": data})
 def build_json_resource_obj(fields, resource, resource_instance,
                             resource_name):
     resource_data = [
         ('type', resource_name),
         ('id', encoding.force_text(resource_instance.pk)
          if resource_instance else None),
         ('attributes', JSONRenderer.extract_attributes(fields, resource)),
     ]
     # Use CustomJSONRenderer.extract_relationships, which removes embedded data
     relationships = CustomJSONRenderer.extract_relationships(
         fields, resource, resource_instance)
     if relationships:
         resource_data.append(('relationships', relationships))
     # Add 'self' link if field is present and valid
     if api_settings.URL_FIELD_NAME in resource and \
             isinstance(fields[api_settings.URL_FIELD_NAME], relations.RelatedField):
         resource_data.append(('links', {
             'self': resource[api_settings.URL_FIELD_NAME]
         }))
     return OrderedDict(resource_data)
def test_build_json_resource_obj():
    resource = {
        'pk': 1,
        'username': '******',
    }

    serializer = ResourceSerializer(data={'username': '******'})
    serializer.is_valid()
    resource_instance = serializer.save()

    output = {
        'type': 'user',
        'id': '1',
        'attributes': {
            'username': '******'
        },
    }

    assert JSONRenderer.build_json_resource_obj(
        serializer.fields, resource, resource_instance, 'user') == output
def test_build_json_resource_obj():
    resource = {
        'pk': 1,
        'username': '******',
    }

    serializer = ResourceSerializer(data={'username': '******'})
    serializer.is_valid()
    resource_instance = serializer.save()

    output = {
        'type': 'user',
        'id': '1',
        'attributes': {
            'username': '******'
        },
    }

    assert JSONRenderer.build_json_resource_obj(
        serializer.fields, resource, resource_instance, 'user') == output
Beispiel #24
0
def test_build_json_resource_obj():
    resource = {
        "pk": 1,
        "username": "******",
    }

    serializer = ResourceSerializer(data={"username": "******"})
    serializer.is_valid()
    resource_instance = serializer.save()

    output = {
        "type": "user",
        "id": "1",
        "attributes": {
            "username": "******"
        },
    }

    assert (JSONRenderer.build_json_resource_obj(serializer.fields, resource,
                                                 resource_instance,
                                                 "user") == output)
def test_extract_root_meta():
    serializer = ExtractRootMetaResourceSerializer()
    expected = {
        'foo': 'meta-value',
    }
    assert JSONRenderer.extract_root_meta(serializer, {}) == expected
def test_extract_root_meta_many():
    serializer = ExtractRootMetaResourceSerializer(many=True)
    expected = {
      'foo': 'meta-many-value'
    }
    assert JSONRenderer.extract_root_meta(serializer, {}) == expected
def test_extract_root_meta_invalid_meta():
    serializer = InvalidExtractRootMetaResourceSerializer()
    with pytest.raises(AssertionError):
        JSONRenderer.extract_root_meta(serializer, {})
def render_dummy_test_serialized_view(view_class):
    serializer = DummyTestSerializer(instance=Entry())
    renderer = JSONRenderer()
    return renderer.render(
        serializer.data,
        renderer_context={'view': view_class()})
Beispiel #29
0
def render_dummy_test_serialized_view(view_class, instance):
    serializer = view_class.serializer_class(instance=instance)
    renderer = JSONRenderer()
    return renderer.render(serializer.data,
                           renderer_context={'view': view_class()})
def test_extract_root_meta():
    serializer = ExtractRootMetaResourceSerializer()
    expected = {
        'foo': 'meta-value',
    }
    assert JSONRenderer.extract_root_meta(serializer, {}) == expected
def render_dummy_test_serialized_view(view_class, instance):
    serializer = view_class.serializer_class(instance=instance)
    renderer = JSONRenderer()
    return renderer.render(
        serializer.data,
        renderer_context={'view': view_class()})
def test_extract_root_meta_many():
    serializer = ExtractRootMetaResourceSerializer(many=True)
    expected = {'foo': 'meta-many-value'}
    assert JSONRenderer.extract_root_meta(serializer, {}) == expected
def render_dummy_test_serialized_view(view_class):
    serializer = DummyTestSerializer(instance=Entry())
    renderer = JSONRenderer()
    return renderer.render(serializer.data,
                           renderer_context={'view': view_class()})
Beispiel #34
0
def test_extract_root_meta_invalid_meta():
    serializer = InvalidExtractRootMetaResourceSerializer()
    with pytest.raises(AssertionError):
        JSONRenderer.extract_root_meta(serializer, {})