Пример #1
0
    def test_04_find_entities(self):
        connection = MongoDatabaseAPI("localhost", DB_NAME)
        connection.connect()
        #   Given wrong object filter type
        self.assertRaises(BIValueError, connection.find_entities, MongoDatabaseAPI.ET_RESOURCE, "fake_object_filter_type")
        conn = Connection()
        result = []
        for item in conn[DB_NAME][MongoDatabaseAPI.ET_RESOURCE].find({}):
            result.append(item)

        #   Find all entities
        api_result = connection.find_entities("resource")
        self.assertEqual(api_result.sort(), RESOURCE_LIST.sort())

        #   Find entities with "ne" and "in"
        api_result = connection.find_entities("resource", {"res_status__ne": "active", "res_type__in": ["switch", "printer"]})
        result = [{u'res_type': u'switch', u'description': u"Some Ukrtelecom's Device", u'additional_parameters': {u'model': u'Catalist 6503', u'Vendor': u'Cisco', u'port_speed': [u'10Mb/s', u'100Mb/s', u'1Gb/s', u'10Gb/s']}, u'owner': u'Ukrtelecom', u'_id': objectid.ObjectId('5010319237adc71128000004'), u'external_system': u'', u'res_status': u'standby'}, 
                  {u'res_type': u'printer', u'description': u'Printer of Aleksey Bogoslovskyi', u'additional_parameters': {u'model': u'1020', u'Vendor': u'HP'}, u'owner': u'Alex', u'_id': objectid.ObjectId('5010319237adc71128000005'), u'external_system': u'', u'res_status': u'down'}]
        self.assertEqual(api_result.sort(), result.sort())

        #   Find entities with "equal" and "nin"
        api_result = connection.find_entities("resource", {"res_status": "active", "res_type__nin": ["router", "modem", "switch"]})
        result = [{u'res_type': u'computer', u'description': u'Portable computer of Yaroslav Chernyakov', u'additional_parameters': {u'model': u'XPS 15z', u'Vendor': u'Dell', u'CPU': u'Intel Core i5', u'memory': 6144}, u'owner': u'YAC', u'_id': objectid.ObjectId('5010319237adc71128000000'), u'external_system': u'', u'res_status': u'active'}]
        self.assertEqual(api_result.sort(), result.sort())

        #   Use nested dict
        api_result = connection.find_entities("resource", {"additional_parameters.memory__gte": 1024, "_id__nin":["5010319237adc71128000006", "5010319237adc71128000000", "5010319237adc71128000001"]})
        result = [{u'res_type': u'computer', u'description': u'Portable computer of Aleksey Bogoslovskyi', u'additional_parameters': {u'model': u'Vostro 1310', u'Vendor': u'Dell', u'CPU': u'Intel Core2Duo T5670', u'memory': 4096}, u'owner': u'Alex', u'_id': objectid.ObjectId('5010319237adc71128000002'), u'external_system': u'', u'res_status': u'down'}]
        self.assertEqual(api_result.sort(), result.sort())
        connection.close()
Пример #2
0
    def test_05_save_entity(self):
        connection = MongoDatabaseAPI("localhost", DB_NAME)
        connection.connect()
        #   Given wrong record type to save
        self.assertRaises(BIValueError, connection.save_entity, MongoDatabaseAPI.ET_RESOURCE, "not a dict value")

        #   Insert new record("_id" exist in incoming dictionary but not in DB)
        new_record = {"_id" : objectid.ObjectId("5010cb8137adc7191b000000"), "res_type" : "printer", "res_status" : "active", "owner" : "Priocom", "external_system" : "", "description" : "Printer in the Brannigan Team workroom", "additional_parameters" : {"Vendor" : "Canon", "model" : "iR1018"}}
        
        id = connection.save_entity(MongoDatabaseAPI.ET_RESOURCE, new_record)
        conn = Connection()
        result = conn[DB_NAME][MongoDatabaseAPI.ET_RESOURCE].find_one({'_id': objectid.ObjectId(id)})
        self.assertEqual(new_record, result)

        #   Insert another new record(no "_id" key in incoming dictionary)
        new_record = {"res_type" : "printer", "res_status" : "active", "owner" : "Priocom", "external_system" : "", "description" : "Printer in the Brannigan Team workroom", "additional_parameters" : {"Vendor" : "Canon", "model" : "iR1018"}}
        id = connection.save_entity(MongoDatabaseAPI.ET_RESOURCE, new_record)
        conn = Connection()
        result = conn[DB_NAME][MongoDatabaseAPI.ET_RESOURCE].find_one({'_id': objectid.ObjectId(id)})
        self.assertEqual(new_record, result)

        #   Update existing record(change res_status and additional_parameters:model)
        new_record = {"_id": id, "res_type" : "printer", "res_status" : "down", "owner" : "Priocom", "external_system" : "", "description" : "Printer in the Brannigan Team workroom", "additional_parameters" : {"Vendor" : "Canon", "model" : "iR1022"}}
        id = connection.save_entity(MongoDatabaseAPI.ET_RESOURCE, new_record)
        result = conn[DB_NAME][MongoDatabaseAPI.ET_RESOURCE].find_one({'_id': objectid.ObjectId(id)})
        self.assertEqual(new_record, result)

        conn.disconnect()
        connection.close()
Пример #3
0
    def test_06_remove_entity(self):
        connection = MongoDatabaseAPI("localhost", DB_NAME)
        connection.connect()
        conn = Connection()

        #   Check that record is exist in DB
        result = conn[DB_NAME][MongoDatabaseAPI.ET_RESOURCE].find_one({'_id': objectid.ObjectId('5010cb8137adc7191b000000')})
        self.assertNotEqual(result, None)

        #   Remove record and check again
        connection.remove_entity(MongoDatabaseAPI.ET_RESOURCE, "5010cb8137adc7191b000000")
        result = conn[DB_NAME][MongoDatabaseAPI.ET_RESOURCE].find_one({'_id': objectid.ObjectId('5010cb8137adc7191b000000')})
        self.assertEqual(result, None)

        #   Remove record that was deleted at previous step
        connection.remove_entity(MongoDatabaseAPI.ET_RESOURCE, "5010cb8137adc7191b000000")
        result = conn[DB_NAME][MongoDatabaseAPI.ET_RESOURCE].find_one({'_id': objectid.ObjectId('5010cb8137adc7191b000000')})
        self.assertEqual(result, None)

        conn.disconnect()
        connection.close()
Пример #4
0
    def test_03_get_entity(self, entity_id = "5010319237adc71128000001"):
        connection = MongoDatabaseAPI("localhost", DB_NAME)
        connection.connect()
        self.maxDiff = None

        #   Try get information about entity that not exist
        self.assertRaises(BIValueError, connection.get_entity, MongoDatabaseAPI.ET_RESOURCE, "some_fake_id")

        #   Get information about entity that exist
        api_result = connection.get_entity(MongoDatabaseAPI.ET_RESOURCE, entity_id)
        result = {u'res_type': u'computer', u'description': u'Portable computer of Konstantin Andrusenko', u'additional_parameters': {u'model': u'MacBook Pro ', u'Vendor': u'Apple', u'CPU': u'Intel Core i5', u'memory': 8192}, u'owner': u'KST', u'_id': '5010319237adc71128000001', u'external_system': u'', u'res_status': u'standby'}
        self.assertEqual(api_result, result)

        connection.close()