Exemple #1
0
 def test_not_fuzzable_num_mutations_zero(self):
     '''
     Verify that the number of mutations is zero when the field is not fuzzable
     '''
     t = warp_with_template(kjson.JsonString(name='test', value='kitty', fuzzable=False))
     self.assertEqual(t.num_mutations(), 0)
     self.assertEqual(t.mutate(), False)
Exemple #2
0
 def test_not_fuzzable_num_mutations_zero(self):
     '''
     Verify that the number of mutations is zero when the field is not fuzzable
     '''
     t = warp_with_template(kjson.JsonNull(name='null'))
     self.assertEqual(t.num_mutations(), 0)
     self.assertEqual(t.mutate(), False)
Exemple #3
0
 def test_multiple_types_in_object(self):
     '''
     Verify that multiple types are encoded properly in a JsonObject
     '''
     t = warp_with_template(
         kjson.JsonObject(
             name='obj1',
             member_dict={
                 'obj2a': kjson.JsonObject(
                     name='obj2a',
                     member_dict={
                     }
                 ),
                 'an_int': UInt32(value=1, encoder=ENC_INT_DEC),
                 'a_string': kjson.JsonString(name='some_name', value='some string')
             }
         )
     )
     reference = {
         'obj2a': {
         },
         'an_int': 1,
         'a_string': 'some string',
     }
     rendered = t.render().bytes
     self.logger.debug(rendered)
     result = json.loads(rendered)
     reference = json.loads(json.dumps(reference))
     self.assertEqual(reference, result)
Exemple #4
0
 def test_no_value_2_mutations(self):
     '''
     Verify that when no value is set, only two mutations may happen - true and false
     '''
     t = warp_with_template(kjson.JsonBoolean(name='bool'))
     self.assertEqual(t.num_mutations(), 2)
     mutations = get_mutation_set(t)
     self.assertEqual(mutations, set(['true', 'false']))
Exemple #5
0
 def test_valid_string_format(self):
     '''
     Test that a JsonString lego results in a quoted string
     '''
     value = 'kitty'
     t = warp_with_template(kjson.JsonString(name='test', value=value, fuzzable=True))
     res = t.render().bytes
     self.assertEqual(res, '"%s"' % value)
Exemple #6
0
 def test_value_no_fuzzable_false(self):
     '''
     Verify that the number of mutations is zero when value is set and the field is not fuzzable
     value: False
     '''
     t = warp_with_template(kjson.JsonBoolean(name='bool', value=False, fuzzable=False))
     self.assertEqual(t.num_mutations(), 0)
     self.assertEqual(t.mutate(), False)
     self.assertEqual(t.render().bytes, 'false')
Exemple #7
0
 def test_fuzzable_same_as_string_field_null(self):
     '''
     Verify that the number of mutations is the same as for a StringField with value 'null'
     '''
     t = warp_with_template(kjson.JsonNull(name='null', fuzzable=True))
     st = Template(name='reference template', fields=String('null', name='snull'))
     self.assertEqual(t.num_mutations(), st.num_mutations())
     while t.mutate():
         st.mutate()
         self.assertEqual(t.render().bytes, st.render().bytes)
Exemple #8
0
 def test_string_in_object(self):
     '''
     Verify that a JsonString is encoded properly in a JsonObject
     '''
     member_value, member_key = ('test string', 'the_string')
     member_field = kjson.JsonString(name='field', value=member_value)
     member_dict = {member_key: member_field}
     t = warp_with_template(kjson.JsonObject(name='test', member_dict=member_dict, fuzz_keys=False))
     rendered = t.render().bytes
     d = json.loads(rendered)
     self.assertEqual(d[member_key], member_value)
Exemple #9
0
 def test_fuzzable_same_as_quoted_string_field(self):
     '''
     Verify that the number of mutations is the same as for a quoted StringField with the same default value
     '''
     value = 'kitty'
     t = warp_with_template(kjson.JsonString(name='test', value=value, fuzzable=True))
     st = Template(name='reference template', fields=String(name='reference', value=value))
     self.assertEqual(t.num_mutations(), st.num_mutations())
     while t.mutate():
         st.mutate()
         self.assertEqual(t.render().bytes, '"%s"' % st.render().bytes)
Exemple #10
0
 def test_int_in_object(self):
     '''
     Verify that an int is encoded properly in a JsonObject
     '''
     member_value, member_key = (123, 'the_int')
     member_field = UInt32(member_value, encoder=ENC_INT_DEC, name='field')
     member_dict = {member_key: member_field}
     t = warp_with_template(kjson.JsonObject(name='test', member_dict=member_dict, fuzz_keys=False))
     rendered = t.render().bytes
     d = json.loads(rendered)
     self.assertEqual(d[member_key], member_value)
Exemple #11
0
 def test_null_in_object(self):
     '''
     Verify that a null is encoded properly in a JsonObject
     '''
     member_value, member_key = (None, 'the_bool')
     member_field = kjson.JsonNull(name='field')
     member_dict = {member_key: member_field}
     t = warp_with_template(kjson.JsonObject(name='test', member_dict=member_dict, fuzz_keys=False))
     rendered = t.render().bytes
     d = json.loads(rendered)
     self.assertEqual(d[member_key], member_value)
Exemple #12
0
 def test_empty_array(self):
     '''
     Verify that an empty list is encoded properly in a JsonArray
     '''
     the_list = []
     t = warp_with_template(kjson.JsonArray(name='test', values=the_list))
     rendered = t.render().bytes
     self.logger.debug('rendered: %s', rendered)
     self.logger.debug('rendered (hex): %s', rendered.encode('hex'))
     res = json.loads(rendered)
     for i, j in zip(the_list, res):
         self.assertEqual(i, j)
Exemple #13
0
 def test_strings_in_array(self):
     '''
     Verify that a list of JsonStrings is encoded properly in a JsonArray
     '''
     the_list = ['1', 'broom', 'link', 'overflow', 'doritos']
     field_list = [kjson.JsonString(name=x, value=x) for x in the_list]
     t = warp_with_template(kjson.JsonArray(name='test', values=field_list))
     rendered = t.render().bytes
     self.logger.debug('rendered: %s', rendered)
     self.logger.debug('rendered (hex): %s', rendered.encode('hex'))
     res = json.loads(rendered)
     for i, j in zip(the_list, res):
         self.assertEqual(i, j)
Exemple #14
0
 def test_nulls_in_array(self):
     '''
     Verify that a list of JsonNulls is encoded properly in a JsonArray
     '''
     the_list = [None, None, None]
     field_list = [kjson.JsonNull(name='%s' % x) for x in range(len(the_list))]
     t = warp_with_template(kjson.JsonArray(name='test', values=field_list))
     rendered = t.render().bytes
     self.logger.debug('rendered: %s', rendered)
     self.logger.debug('rendered (hex): %s', rendered.encode('hex'))
     res = json.loads(rendered)
     for i, j in zip(the_list, res):
         self.assertEqual(i, j)
Exemple #15
0
 def test_bools_in_array(self):
     '''
     Verify that a list of JsonBoolean is encoded properly in a JsonArray
     '''
     the_list = [True, False, True, True, False, False, True]
     field_list = [kjson.JsonBoolean(name='%s_%s' % (x, i), value=x) for i, x in enumerate(the_list)]
     t = warp_with_template(kjson.JsonArray(name='test', values=field_list))
     rendered = t.render().bytes
     self.logger.debug('rendered: %s', rendered)
     self.logger.debug('rendered (hex): %s', rendered.encode('hex'))
     res = json.loads(rendered)
     for i, j in zip(the_list, res):
         self.assertEqual(i, j)
Exemple #16
0
 def test_ints_in_array(self):
     '''
     Verify that a list of ints is encoded properly in a JsonArray
     '''
     the_list = [1, 5, 2, 1000]
     field_list = [UInt32(x, encoder=ENC_INT_DEC, name='%s' % x) for x in the_list]
     t = warp_with_template(kjson.JsonArray(name='test', values=field_list))
     rendered = t.render().bytes
     self.logger.debug('rendered: %s', rendered)
     self.logger.debug('rendered (hex): %s', rendered.encode('hex'))
     res = json.loads(rendered)
     for i, j in zip(the_list, res):
         self.assertEqual(i, j)
Exemple #17
0
 def test_objects_in_array(self):
     '''
     Verify that a list of JsonObjects is encoded properly in a JsonArray
     '''
     the_list = []
     for i in range(10):
         the_list.append(kjson.JsonObject(name='obj_%d' % i, member_dict={'internal': UInt32(value=i, encoder=ENC_INT_DEC)}, fuzz_keys=False))
     t = warp_with_template(kjson.JsonArray(name='test', values=the_list))
     rendered = t.render().bytes
     self.logger.debug('rendered: %s', rendered)
     self.logger.debug('rendered (hex): %s', rendered.encode('hex'))
     res = json.loads(rendered)
     self.assertEqual(len(res), 10)
     for i in range(10):
         self.assertEqual(res[i]['internal'], i)
Exemple #18
0
 def test_empty_object(self):
     '''
     Verify that an empty object is encoded properly json
     '''
     t = warp_with_template(
         kjson.JsonObject(
             name='obj1',
             member_dict={}
         )
     )
     reference = {}
     rendered = t.render().bytes
     self.logger.debug(rendered)
     result = json.loads(rendered)
     reference = json.loads(json.dumps(reference))
     self.assertEqual(reference, result)
Exemple #19
0
 def test_arrays_in_array(self):
     '''
     Verify that a list of JsonArrays is encoded properly in a JsonArray
     '''
     the_list = []
     for i in range(10):
         the_list.append(
             kjson.JsonArray(
                 name='arr_%d' % i,
                 values=[
                     UInt32(value=x, encoder=ENC_INT_DEC) for x in range(i, i + 5)
                 ]))
     t = warp_with_template(kjson.JsonArray(name='test', values=the_list))
     rendered = t.render().bytes
     self.logger.debug('rendered: %s', rendered)
     self.logger.debug('rendered (hex): %s', rendered.encode('hex'))
     res = json.loads(rendered)
     self.assertEqual(len(res), 10)
     for i in range(10):
         self.assertEqual(res[i], list(range(i, i + 5)))
Exemple #20
0
 def test_array_in_object(self):
     '''
     Verify that a JsonArray is encoded properly in a JsonObject
     '''
     t = warp_with_template(
         kjson.JsonObject(
             name='obj1',
             member_dict={
                 'arr': kjson.JsonArray(
                     name='arr',
                     values=[UInt32(value=x, encoder=ENC_INT_DEC) for x in range(0, 10)]
                 )
             }
         )
     )
     reference = {'arr': list(range(0, 10))}
     rendered = t.render().bytes
     self.logger.debug(rendered)
     result = json.loads(rendered)
     reference = json.loads(json.dumps(reference))
     self.assertEqual(reference, result)
Exemple #21
0
 def test_value_fuzzable_multiple_mutations(self):
     '''
     Verify that when a value is specified and fuzzable is True, there are multiple mutations
     '''
     t = warp_with_template(kjson.JsonBoolean(name='bool', value=False, fuzzable=True))
     self.assertGreater(t.num_mutations(), 10)