Пример #1
0
def test_json():
    account = Account(id=1, name=2)
    user = User(1, 2, account)

    payload = json.dumps(user)
    deser = json.loads(payload)
    assert deser == {
        "id": 1,
        "username": 2,
        "account": {
            "id": 1,
            "name": 2,
            "active": True,
            "__faust": {
                "ns": Account._options.namespace
            },
        },
        "__faust": {
            "ns": User._options.namespace
        },
    }

    assert user.__json__() == {
        "id": 1,
        "username": 2,
        "account": account,
        "__faust": {
            "ns": User._options.namespace
        },
    }

    assert User.from_data(deser) == user
Пример #2
0
    def json(
        self,
        value: Any,
        *,
        content_type: str = None,
        status: int = 200,
        reason: str = None,
        headers: MutableMapping = None,
    ) -> Any:
        """Create new JSON response.

        Accepts any JSON-serializable value and will automatically
        serialize it for you.

        The content-type is set to "application/json".
        """
        ctype = content_type or "application/json"
        payload: Any = _json.dumps(value)
        # normal json returns str, orjson returns bytes
        if isinstance(payload, bytes):
            return self.bytes(
                payload,
                content_type=ctype,
                status=status,
                reason=reason,
                headers=headers,
            )
        else:
            return self.text(
                payload,
                content_type=ctype,
                status=status,
                reason=reason,
                headers=headers,
            )
Пример #3
0
def test_loads_key_missing_key_raises_error(*, app):
    account = ACCOUNT1.to_representation()
    account.pop('active')
    with pytest.raises(KeyDecodeError):
        app.serializers.loads_key(Account,
                                  json.dumps(account),
                                  serializer='json')
Пример #4
0
def test_json():
    account = Account(id=1, name=2)
    user = User(1, 2, account)

    payload = json.dumps(user)
    deser = json.loads(payload)
    assert deser == {
        'id': 1,
        'username': 2,
        'account': {
            'id': 1,
            'name': 2,
            'active': True,
            '__faust': {
                'ns': Account._options.namespace
            },
        },
        '__faust': {
            'ns': User._options.namespace
        },
    }

    assert user.__json__() == {
        'id': 1,
        'username': 2,
        'account': account,
        '__faust': {
            'ns': User._options.namespace
        },
    }

    assert User.from_data(deser) == user
Пример #5
0
def test_loads_value_missing_key_raises_error(*, app):
    account = ACCOUNT1.to_representation()
    account.pop("active")
    with pytest.raises(ValueDecodeError):
        app.serializers.loads_value(Account,
                                    json.dumps(account),
                                    serializer="json")
Пример #6
0
 def _dumps(self, s: Any) -> bytes:
     return want_bytes(_json.dumps(s))
Пример #7
0
class Account(faust.Record):
    id: str
    active: bool
    user: User


# Account1
USER1 = User('A2', 'George', 'Costanza')
ACCOUNT1 = Account(id='A1', active=True, user=USER1)
ACCOUNT1_JSON = ACCOUNT1.dumps(serializer='json')

# Account1 without blessed key
ACCOUNT1_UNBLESSED = ACCOUNT1.to_representation()
ACCOUNT1_UNBLESSED.pop('__faust')
ACCOUNT1_UNBLESSED_JSON = json.dumps(ACCOUNT1_UNBLESSED)

# Account1 with extra fields
ACCOUNT1_EXTRA_FIELDS = ACCOUNT1.to_representation()
ACCOUNT1_EXTRA_FIELDS.update(
    join_date='12321321312',
    foo={
        'a': 'A',
        'b': 'B'
    },
    bar=[1, 2, 3, 4],
)
ACCOUNT1_EXTRA_FIELDS_JSON = json.dumps(ACCOUNT1_EXTRA_FIELDS)

# Account2
USER2 = User('B2', 'Elaine', 'Benes')
Пример #8
0
 def dumps(self, obj: Any) -> str:
     """Serialize object using JSON."""
     return json.dumps(obj)
Пример #9
0
 def _tabulate_json(self,
                    data: terminal.TableDataT,
                    headers: Sequence[str] = None) -> str:
     if headers:
         return json.dumps([dict(zip(headers, row)) for row in data])
     return json.dumps(data)
Пример #10
0
 def dumps(self, obj: Any) -> str:
     return json.dumps(obj)
Пример #11
0
 def test_window_range_json_dump(self):
     serialized = dumps(WindowRange(1, 2))
     assert serialized == '[1, 2]'