예제 #1
0
    def test_flat_person_xml_conversion(self):
        # Open rwperson-database yang model
        yang = rw_peas.PeasPlugin('yangmodel_plugin-c', 'YangModelPlugin-1.0')
        yang_model = yang.get_interface('Model')
        yang_module = yang.get_interface('Module')
        yang_node = yang.get_interface('Node')
        yang_key = yang.get_interface('Key')
        model = yang_model.alloc()
        module = yang_model.load_module(model, "rwperson-db")

        #populate the person
        self.flat_person.name = "test-name"
        self.flat_person.email = "*****@*****.**"
        self.flat_person.employed = True
        self.flat_person.id = 12345
        self.flat_person.emergency_phone.number = "123-456-7890"
        self.flat_person.emergency_phone.type_yang = 'WORK'
        new_flat_phone = [
            RwpersonDbYang.FlatPhoneNumber(),
            RwpersonDbYang.FlatPhoneNumber()
        ]
        new_flat_phone[0].number = '#1'
        new_flat_phone[1].number = '#2'
        self.flat_person.phone = new_flat_phone

        # recreate a person using to_xml and from_xml methods
        xml_str = self.flat_person.to_xml(model)
        recreated_flat_person = RwpersonDbYang.FlatPerson()
        recreated_flat_person.from_xml(model, xml_str)
        print("Person           : ", self.flat_person)
        print("Recreated Person : ", recreated_flat_person)

        # check the newly created person is identical
        self.assertEqual(self.flat_person.name, recreated_flat_person.name)
        self.assertEqual(self.flat_person.email, recreated_flat_person.email)
        self.assertEqual(self.flat_person.employed,
                         recreated_flat_person.employed)
        self.assertEqual(self.flat_person.id, recreated_flat_person.id)
        self.assertEqual(self.flat_person.emergency_phone.number,
                         recreated_flat_person.emergency_phone.number)
        self.assertEqual(self.flat_person.emergency_phone.type_yang,
                         recreated_flat_person.emergency_phone.type_yang)
        self.assertEqual(len(self.flat_person.phone),
                         len(recreated_flat_person.phone))
        for phone, recreated_phone in zip(self.flat_person.phone,
                                          recreated_flat_person.phone):
            self.assertEqual(phone.number, recreated_phone.number)
            self.assertEqual(phone.type_yang, recreated_phone.type_yang)

        flat_person = None
        recreated_flat_person = None
        new_flat_phone = None
예제 #2
0
    def test_flat_person_protobuf_conversion(self):
        self.flat_person.name = "test-name"
        self.flat_person.email = "*****@*****.**"
        self.flat_person.employed = True
        self.flat_person.id = 12345
        self.flat_person.emergency_phone.number = "123-456-7890"
        self.flat_person.emergency_phone.type_yang = 'WORK'
        new_phone = [
            RwpersonDbYang.FlatPhoneNumber(),
            RwpersonDbYang.FlatPhoneNumber()
        ]
        new_phone[0].number = '#1'
        new_phone[1].number = '#2'
        self.flat_person.phone = new_phone

        # recreate a flat person using to_pbuf and from_pbuf methods
        flat_pbuf = self.flat_person.to_pbuf()
        recreated_flat_person = RwpersonDbYang.FlatPerson()
        recreated_flat_person.from_pbuf(flat_pbuf)
        print("Flat Person           : ", self.flat_person)
        print("Recreated Flat Person : ", recreated_flat_person)

        # check the newly created flat person is identical
        self.assertEqual(self.flat_person.name, recreated_flat_person.name)
        self.assertEqual(self.flat_person.email, recreated_flat_person.email)
        self.assertEqual(self.flat_person.employed,
                         recreated_flat_person.employed)
        self.assertEqual(self.flat_person.id, recreated_flat_person.id)
        self.assertEqual(self.flat_person.emergency_phone.number,
                         recreated_flat_person.emergency_phone.number)
        self.assertEqual(self.flat_person.emergency_phone.type_yang,
                         recreated_flat_person.emergency_phone.type_yang)
        self.assertEqual(len(self.flat_person.phone),
                         len(recreated_flat_person.phone))
        for phone, recreated_phone in zip(self.flat_person.phone,
                                          recreated_flat_person.phone):
            self.assertEqual(phone.number, recreated_phone.number)
            self.assertEqual(phone.type_yang, recreated_phone.type_yang)
예제 #3
0
    def test_nullable(self):
        person = RwpersonDbYang.Person()
        person.name = "jeff"
        person.emergency_phone.type_yang = 'WORK'
        person.blob = bytearray([0x1, 0x2, 0x3, 0x0, 0x4])

        self.assertTrue(person.has_field('name'))
        try:
            person.name = None
        except Exception as e:
            self.fail('Unexpected exception thrown: ' + str(e))
        else:
            pass
        self.assertFalse(person.has_field('name'))

        self.assertTrue(person.emergency_phone.has_field('type'))
        try:
            person.emergency_phone.type_yang = None
        except TypeError:
            pass
        except Exception as e:
            self.fail('Unexpected exception thrown: ' + str(e))
        else:
            self.fail('ExpectedException not thrown')
        self.assertTrue(person.emergency_phone.has_field('type'))

        self.assertTrue(person.has_field('emergency_phone'))
        try:
            person.emergency_phone = None
        except Exception as e:
            self.fail('Unexpected exception thrown: ' + str(e))
        else:
            pass
        self.assertFalse(person.has_field('emergency_phone'))

        self.assertTrue(person.has_field('blob'))
        try:
            person.blob = None
        except TypeError:
            pass
        except Exception as e:
            self.fail('Unexpected exception thrown: ' + str(e))
        else:
            self.fail('ExpectedException not thrown')
        self.assertTrue(person.has_field('blob'))

        flat_person = RwpersonDbYang.FlatPerson()
        flat_person.name = "jeff"
        flat_person.emergency_phone.type_yang = 'WORK'
        flat_person.blob = bytearray([0x1, 0x2, 0x3, 0x0, 0x4])

        self.assertTrue(flat_person.has_field('name'))
        try:
            flat_person.name = None
        except TypeError:
            pass
        except Exception as e:
            self.fail('Unexpected exception thrown: ' + str(e))
        else:
            self.fail('ExpectedException not thrown')
        self.assertTrue(flat_person.has_field('name'))

        self.assertTrue(flat_person.emergency_phone.has_field('type'))
        try:
            flat_person.emergency_phone.type_yang = None
        except TypeError:
            pass
        except Exception as e:
            self.fail('Unexpected exception thrown: ' + str(e))
        else:
            self.fail('ExpectedException not thrown')
        self.assertTrue(flat_person.emergency_phone.has_field('type'))

        self.assertTrue(flat_person.has_field('emergency_phone'))
        try:
            flat_person.emergency_phone = None
        except TypeError:
            pass
        except Exception as e:
            self.fail('Unexpected exception thrown: ' + str(e))
        else:
            self.fail('ExpectedException not thrown')
        self.assertTrue(flat_person.has_field('emergency_phone'))

        self.assertTrue(flat_person.has_field('blob'))
        try:
            flat_person.blob = None
        except TypeError:
            pass
        except Exception as e:
            self.fail('Unexpected exception thrown: ' + str(e))
        else:
            self.fail('ExpectedException not thrown')
        self.assertTrue(flat_person.has_field('blob'))
예제 #4
0
 def setUp(self):
     self.person = RwpersonDbYang.Person()
     self.flat_person = RwpersonDbYang.FlatPerson()
예제 #5
0
 def test_to_json_string_invalid_type(self):
     with self.assertRaises(TypeError):
         self._serializer.to_json_string(
             RwpersonDbYang.FlatPerson(name="bob"))