コード例 #1
0
 def check_output_json(self, want, got, optionsflags):
     """
     Tries to compare want and got as if they were JSON-encoded data
     """
     want, got = self._strip_quotes(want, got)
     try:
         want_json = simplejson.loads(want)
         got_json = simplejson.loads(got)
     except Exception:
         return False
     return want_json == got_json
コード例 #2
0
 def geometries(self):
     global GEOMETRIES
     if GEOMETRIES is None:
         # Load up the test geometry data from fixture into global.
         gzf = gzip.GzipFile(os.path.join(TEST_DATA, 'geometries.json.gz'))
         geometries = simplejson.loads(gzf.read())
         GEOMETRIES = TestGeomSet(**strconvert(geometries))
     return GEOMETRIES
コード例 #3
0
 def load_data(self):
     try:
         data = self.request.get_signed_cookie(self.prefix)
     except KeyError:
         data = None
     except BadSignature:
         raise SuspiciousOperation('WizardView cookie manipulated')
     if data is None:
         return None
     return json.loads(data, cls=json.JSONDecoder)
コード例 #4
0
 def test_json_encoder_decoder(self):
     """
     Tests that a complex nested data structure containing Message
     instances is properly encoded/decoded by the custom JSON
     encoder/decoder classes.
     """
     messages = [
         {
             'message': Message(constants.INFO, 'Test message'),
             'message_list': [Message(constants.INFO, 'message %s') \
                              for x in xrange(5)] + [{'another-message': \
                              Message(constants.ERROR, 'error')}],
         },
         Message(constants.INFO, 'message %s'),
     ]
     encoder = MessageEncoder(separators=(',', ':'))
     value = encoder.encode(messages)
     decoded_messages = json.loads(value, cls=MessageDecoder)
     self.assertEqual(messages, decoded_messages)
コード例 #5
0
    def _decode(self, data):
        """
        Safely decodes a encoded text stream back into a list of messages.

        If the encoded text stream contained an invalid hash or was in an
        invalid format, ``None`` is returned.
        """
        if not data:
            return None
        bits = data.split('$', 1)
        if len(bits) == 2:
            hash, value = bits
            if constant_time_compare(hash, self._hash(value)):
                try:
                    # If we get here (and the JSON decode works), everything is
                    # good. In any other case, drop back and return None.
                    return json.loads(value, cls=MessageDecoder)
                except ValueError:
                    pass
        # Mark the data as used (so it gets removed) since something was wrong
        # with the data.
        self.used = True
        return None
コード例 #6
0
 def loads(self, data):
     return simplejson.loads(data)