def test_create_twice_ok(self, internal_client, management_client, clean_db, inventory_attributes):
        # insert first device
        devid = "".join([ format(i, "02x") for i in os.urandom(128)])
        _, r = internal_client.create_device(device_id = devid,
                                             attributes=inventory_attributes)
        assert r.status_code == 201

        # add extra attribute, modify existing
        new_attr = internal_client.Attribute(name="new attr",
                                             value="new value",
                                              description="desc")

        existing = inventory_attributes[0]
        existing.value = "newval"
        existing.description = "newdesc"

        new_attrs = [new_attr, existing]

        # inventory_attributes will now act as 'expected' output attrs
        inventory_attributes.append(new_attr)

        # insert 'the same' device
        _, r = internal_client.create_device(device_id = devid,
                                             attributes=new_attrs)
        assert r.status_code == 201

        # verify update
        r, _ = management_client.client.devices.get_devices_id(id=devid,
                                                               Authorization="foo").result()

        self._verify_inventory(inventory_attributes, r.attributes)
示例#2
0
    def test_inventory_sorting(self, management_client, internal_client,
                               inventory_attributes):
        numbers = [100, 1000, 1, 999]

        for n in range(20):
            did = "".join([format(i, "02x") for i in os.urandom(128)])
            internal_client.create_device(did, inventory_attributes)

        for n in numbers:
            it = list(inventory_attributes)
            it.append(internal_client.Attribute(name="number", value=n))

            did = "".join([format(i, "02x") for i in os.urandom(128)])
            internal_client.create_device(did, it)

        t = []
        r = management_client.getAllDevices(sort="number:asc")
        for deviceInventoryList in r:
            for i in deviceInventoryList.attributes:
                if i.name == "number":
                    t.append(i.value)

        assert sorted(numbers) == t

        t = []
        r = management_client.getAllDevices(sort="number:desc")
        for deviceInventoryList in r:
            for i in deviceInventoryList.attributes:
                if i.name == "number":
                    t.append(i.value)

        assert sorted(numbers, reverse=True) == t
    def test_delete_device_non_existent_2(self, management_client, internal_client, inventory_attributes):
        """ Delete existent device from non-existent group """
        d1 = "".join([ format(i, "02x") for i in os.urandom(128)])
        internal_client.create_device(d1, inventory_attributes)

        management_client.deleteDeviceInGroup(device=d1,
                                              group="404 group", expected_error=True)
示例#4
0
    def test_inventory_searching(self, management_client, internal_client,
                                 inventory_attributes):
        extra_inventory_items = {
            "users_logged_in": 100,
            "open_connections": 1231,
            "open_ports": 523,
        }

        for i in extra_inventory_items.keys():
            it = list(inventory_attributes)
            it.append(
                management_client.inventoryAttribute(
                    name=i, value=extra_inventory_items[i]))

            did = "".join([format(i, "02x") for i in os.urandom(128)])
            internal_client.create_device(did, it)

        r = requests.get(management_client.client.swagger_spec.api_url +
                         "/devices",
                         params=({
                             "users_logged_in": 100
                         }),
                         verify=False)
        assert len(r.json()) == 1

        r = requests.get(management_client.client.swagger_spec.api_url +
                         "/devices",
                         params=({
                             "open_connections": 1231
                         }),
                         verify=False)
        assert len(r.json()) == 1
示例#5
0
    def test_moving_devices_1(self, management_client, internal_client,
                              inventory_attributes):
        """
        Create 2 devices and move them amoung 2 different groups
        """
        did1 = "device-id-1"
        did2 = "device-id-2"
        internal_client.create_device(did1, inventory_attributes)
        internal_client.create_device(did2, inventory_attributes)

        group = management_client.group(group="group-test-1")
        management_client.addDeviceToGroup(group=group, device=did1)
        management_client.addDeviceToGroup(group=group, device=did2)
        assert len(management_client.getGroupDevices("group-test-1")) == 2

        group = management_client.group(group="group-test-2")
        management_client.addDeviceToGroup(group=group, device=did2)
        assert len(management_client.getGroupDevices("group-test-1")) == 1
        assert len(management_client.getGroupDevices("group-test-2")) == 1

        management_client.addDeviceToGroup(group=group, device=did1)
        assert (len(
            management_client.getGroupDevices("group-test-1",
                                              expected_error=True)) == 0)
        assert len(management_client.getGroupDevices("group-test-2")) == 2

        group = management_client.group(group="group-test-1")
        management_client.addDeviceToGroup(group=group, device=did1)
        management_client.addDeviceToGroup(group=group, device=did2)
        assert len(management_client.getGroupDevices("group-test-1")) == 2
        assert (len(
            management_client.getGroupDevices("group-test-2",
                                              expected_error=True)) == 0)
示例#6
0
    def test_get_groups(self, management_client, internal_client,
                        inventory_attributes):
        for i in range(10):
            group = management_client.group(group="group" + str(i))
            did = "".join([format(i, "02x") for i in os.urandom(128)])
            internal_client.create_device(did, inventory_attributes)
            management_client.addDeviceToGroup(group=group, device=did)

        assert len(management_client.getAllGroups()) == 10
    def test_get_groups(self, management_client, internal_client,
                        inventory_attributes):
        for i in range(10):
            group = management_client.group(group="group" + str(i))
            did = "".join([format(i, "02x") for i in os.urandom(128)])
            internal_client.create_device(did, inventory_attributes)
            management_client.client.devices.put_devices_id_group(
                group=group, Authorization="foo", id=did).result()

        assert len(
            management_client.client.groups.get_groups().result()[0]) == 10
示例#8
0
    def test_get_groups_3(self, management_client, internal_client,
                          inventory_attributes):
        """
        Create 1 device, and move through 100 different groups
        """

        did = "some-device-id"
        internal_client.create_device(did, inventory_attributes)
        for i in range(10):
            group = management_client.group(group="group" + str(i))
            management_client.addDeviceToGroup(group, did)

        assert len(management_client.getAllGroups()) == 1
    def test_delete_device(self, management_client, internal_client, inventory_attributes):
        d1 = "".join([ format(i, "02x") for i in os.urandom(128)])
        internal_client.create_device(d1, inventory_attributes)

        g1 = "group-test-3"

        management_client.addDeviceToGroup(device=d1,
                                           group=management_client.group(group=g1))
        assert len(management_client.getGroupDevices(g1)) == 1

        management_client.deleteDeviceInGroup(device=d1,
                                              group=g1,
                                              expected_error=False)
        assert len(management_client.getGroupDevices(g1,
                                                     expected_error=True)) == 0
    def test_get_groups_3(self, management_client, internal_client,
                          inventory_attributes):
        """
        Create 1 device, and move through 100 different groups
        """

        did = "some-device-id"
        internal_client.create_device(did, inventory_attributes)
        for i in range(10):
            group = management_client.group(group="group" + str(i))
            management_client.client.devices.put_devices_id_group(
                group=group, id=did, Authorization="foo").result()

        assert len(
            management_client.client.groups.get_groups().result()[0]) == 1
示例#11
0
    def test_has_group(self, management_client, internal_client,
                       inventory_attributes):
        """
            Verify has_group functionality
        """
        did = "some-device-id"
        internal_client.create_device(did, inventory_attributes)
        assert len(management_client.getAllGroups()) == 0
        assert len(management_client.getAllDevices(has_group=True)) == 0

        group = management_client.group(group="has_group_test_1")
        management_client.addDeviceToGroup(group=group, device=did)
        assert len(management_client.getAllDevices(has_group=True)) == 1

        management_client.deleteDeviceInGroup(group="has_group_test_1",
                                              device=did)
        assert len(management_client.getAllDevices(has_group=True)) == 0
示例#12
0
    def test_moving_device_group_1(self, management_client, internal_client,
                                   inventory_attributes):
        """
        Create 1 device and move it amung 2 different groups
        """
        did = "some-device-id"
        internal_client.create_device(did, inventory_attributes)
        group = management_client.group(group="groupA")
        management_client.addDeviceToGroup(group, did)
        group_a_devs = management_client.getGroupDevices("groupA")
        assert len(group_a_devs) == 1

        group = management_client.group(group="groupB")
        management_client.addDeviceToGroup(group=group, device=did)

        assert (len(
            management_client.getGroupDevices("groupA",
                                              expected_error=True)) == 0)
        assert len(management_client.getGroupDevices("groupB")) == 1
示例#13
0
    def test_generic_groups_1(self, management_client, internal_client,
                              inventory_attributes):
        total_groups = 10
        items_per_group = 2
        devices_in_groups = {}

        for i in range(total_groups):
            group = management_client.group(group="group" + str(i))
            for j in range(items_per_group):
                device = "".join([format(i, "02x") for i in os.urandom(128)])
                internal_client.create_device(device, inventory_attributes)
                devices_in_groups.setdefault(str(i), []).append(device)
                management_client.addDeviceToGroup(group=group, device=device)

        assert len(management_client.getAllGroups()) == 10

        groups = management_client.getAllGroups()
        for idx, g in enumerate(groups):
            assert sorted(management_client.getGroupDevices(g)) == sorted(
                devices_in_groups[str(idx)])
    def test_create_ok(self, internal_client, management_client, clean_db, inventory_attributes):
        devid = "".join([ format(i, "02x") for i in os.urandom(128)])
        _, r = internal_client.create_device(device_id = devid,
                                             attributes=inventory_attributes)
        assert r.status_code == 201

        r, _ = management_client.client.devices.get_devices_id(id=devid,
                                                               Authorization="foo").result()

        self._verify_inventory(inventory_attributes,
                              [internal_client.Attribute(name=attr.name,
                                                         value=attr.value,
                                                         description=attr.description) for attr in r.attributes])
    def test_moving_device_group_1(self, management_client, internal_client,
                                   inventory_attributes):
        """
        Create 1 device and move it amung 2 different groups
        """
        did = "some-device-id"
        internal_client.create_device(did, inventory_attributes)
        group = management_client.group(group="groupA")
        management_client.client.devices.put_devices_id_group(
            group=group, id=did, Authorization="foo").result()
        group_a_devs = management_client.getGroupDevices("groupA")
        print(group_a_devs)
        assert len(group_a_devs) == 1

        group = management_client.group(group="groupB")
        management_client.client.devices.put_devices_id_group(
            group=group, id=did, Authorization="foo").result()

        assert len(
            management_client.getGroupDevices("groupA",
                                              expected_error=True)) == 0
        assert len(management_client.getGroupDevices("groupB")) == 1
示例#16
0
    def test_create_ok(
        self,
        internal_client,
        management_client,
        clean_db,
        inventory_attributes,
    ):
        devid = "".join([format(i, "02x") for i in os.urandom(128)])
        _, r = internal_client.create_device(device_id=devid,
                                             attributes=inventory_attributes)
        assert r.status_code == 201

        dev = management_client.getDevice(device_id=devid)

        self._verify_inventory(inventory_attributes, dev.attributes)