예제 #1
0
 def test_encode_empty_dict(self):
     body, headers = encode_json_data({})
     self.assertEqual(json.loads(body), {})
     self.assertEqual(
         headers,
         {
             "Content-Length": "2",
             "Content-Type": "application/json"
         },
     )
예제 #2
0
 def test_encode_dict(self):
     data = {"param": "value", "alt": [1, 2, 3, 4]}
     body, headers = encode_json_data(data)
     self.assertEqual(json.loads(body), data)
     self.assertEqual(
         headers,
         {
             "Content-Length": "39",
             "Content-Type": "application/json"
         },
     )
예제 #3
0
    def _formulate_change(self, path, params, as_json=False):
        """Return URL, headers, and body for a non-GET request.

        This is similar to _formulate_get, except parameters are encoded as
        a multipart form body.

        :param path: Path to the object to issue a GET on.
        :param params: A dict of parameter values.
        :param as_json: Encode params as application/json instead of
            multipart/form-data. Only use this if you know the API already
            supports JSON requests.
        :return: A tuple: URL, headers, and body for the request.
        """
        url = self._make_url(path)
        if "op" in params:
            params = dict(params)
            op = params.pop("op")
            url += "?" + urlencode([("op", op)])
        if as_json:
            body, headers = encode_json_data(params)
        else:
            body, headers = encode_multipart_data(params, {})
        self.auth.sign_request(url, headers)
        return url, headers, body
예제 #4
0
    def _formulate_change(self, path, params, as_json=False):
        """Return URL, headers, and body for a non-GET request.

        This is similar to _formulate_get, except parameters are encoded as
        a multipart form body.

        :param path: Path to the object to issue a GET on.
        :param params: A dict of parameter values.
        :param as_json: Encode params as application/json instead of
            multipart/form-data. Only use this if you know the API already
            supports JSON requests.
        :return: A tuple: URL, headers, and body for the request.
        """
        url = self._make_url(path)
        if 'op' in params:
            params = dict(params)
            op = params.pop('op')
            url += '?' + urlencode([('op', op)])
        if as_json:
            body, headers = encode_json_data(params)
        else:
            body, headers = encode_multipart_data(params, {})
        self.auth.sign_request(url, headers)
        return url, headers, body
예제 #5
0
 def assertEncodeJSONData(self, expected_body, expected_headers, params):
     self.assertEqual(
         (expected_body, expected_headers),
         encode_json_data(params))
예제 #6
0
 def assertEncodeJSONData(self, expected_body, expected_headers):
     observed_body, observed_headers = encode_json_data(expected_body)
     self.assertEqual(observed_headers, expected_headers)
     self.assertEqual(json.loads(observed_body), expected_body)
예제 #7
0
 def assertEncodeJSONData(self, expected_body, expected_headers):
     observed_body, observed_headers = encode_json_data(expected_body)
     self.expectThat(observed_headers, Equals(expected_headers))
     self.expectThat(json.loads(observed_body), Equals(expected_body))