Fix flake8 & reformat using black

This commit is contained in:
Santiago L 2022-09-29 11:44:43 +02:00
parent 332c1088c0
commit 7245708807
1 changed files with 230 additions and 121 deletions

View File

@ -1,14 +1,12 @@
import copy import copy
import datetime import datetime
import pytest
import pytz
from uuid import UUID from uuid import UUID
from flask import g
import pytest
from colour import Color from colour import Color
from ereuse_utils.naming import Naming from ereuse_utils.naming import Naming
from ereuse_utils.test import ANY from ereuse_utils.test import ANY
from flask import g
from pytest import raises from pytest import raises
from sqlalchemy.util import OrderedSet from sqlalchemy.util import OrderedSet
from teal.db import ResourceNotFound from teal.db import ResourceNotFound
@ -21,26 +19,35 @@ from ereuse_devicehub.resources.action import models as m
from ereuse_devicehub.resources.action.models import Remove, TestConnectivity from ereuse_devicehub.resources.action.models import Remove, TestConnectivity
from ereuse_devicehub.resources.agent.models import Person from ereuse_devicehub.resources.agent.models import Person
from ereuse_devicehub.resources.device import models as d from ereuse_devicehub.resources.device import models as d
from ereuse_devicehub.resources.device.exceptions import NeedsId
from ereuse_devicehub.resources.device.schemas import Device as DeviceS from ereuse_devicehub.resources.device.schemas import Device as DeviceS
from ereuse_devicehub.resources.device.sync import MismatchBetweenTags, MismatchBetweenTagsAndHid, \ from ereuse_devicehub.resources.device.sync import (
Sync MismatchBetweenTags,
from ereuse_devicehub.resources.enums import ComputerChassis, DisplayTech, Severity, \ MismatchBetweenTagsAndHid,
SnapshotSoftware, TransferState Sync,
)
from ereuse_devicehub.resources.enums import (
ComputerChassis,
DisplayTech,
Severity,
SnapshotSoftware,
TransferState,
)
from ereuse_devicehub.resources.tag.model import Tag from ereuse_devicehub.resources.tag.model import Tag
from ereuse_devicehub.resources.user import User from ereuse_devicehub.resources.user import User
from tests import conftest from tests import conftest
from tests.conftest import file, yaml2json, json_encode from tests.conftest import file, json_encode, yaml2json
@pytest.mark.mvp @pytest.mark.mvp
@pytest.mark.usefixtures(conftest.auth_app_context.__name__) @pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_device_model(): def test_device_model():
"""Tests that the correctness of the device model and its relationships.""" """Tests that the correctness of the device model and its relationships."""
pc = d.Desktop(model='p1mo', pc = d.Desktop(
manufacturer='p1ma', model='p1mo',
serial_number='p1s', manufacturer='p1ma',
chassis=ComputerChassis.Tower) serial_number='p1s',
chassis=ComputerChassis.Tower,
)
net = d.NetworkAdapter(model='c1mo', manufacturer='c1ma', serial_number='c1s') net = d.NetworkAdapter(model='c1mo', manufacturer='c1ma', serial_number='c1s')
graphic = d.GraphicCard(model='c2mo', manufacturer='c2ma', memory=1500) graphic = d.GraphicCard(model='c2mo', manufacturer='c2ma', memory=1500)
pc.components.add(net) pc.components.add(net)
@ -56,7 +63,9 @@ def test_device_model():
# Removing a component from pc doesn't delete the component # Removing a component from pc doesn't delete the component
pc.components.remove(net) pc.components.remove(net)
db.session.commit() db.session.commit()
pc = d.Device.query.filter_by(id=pc.id).first() # this is the same as querying for d.Desktop directly pc = d.Device.query.filter_by(
id=pc.id
).first() # this is the same as querying for d.Desktop directly
assert pc.components == {graphic} assert pc.components == {graphic}
network_adapter = d.NetworkAdapter.query.one() network_adapter = d.NetworkAdapter.query.one()
assert network_adapter not in pc.components assert network_adapter not in pc.components
@ -73,7 +82,9 @@ def test_device_model():
assert network_adapter.id == 4 assert network_adapter.id == 4
assert d.NetworkAdapter.query.first() is not None, 'We removed the network adaptor' assert d.NetworkAdapter.query.first() is not None, 'We removed the network adaptor'
assert gcard.id == 5, 'We should still hold a reference to a zombie graphic card' assert gcard.id == 5, 'We should still hold a reference to a zombie graphic card'
assert d.GraphicCard.query.first() is None, 'We should have deleted it it was inside the pc' assert (
d.GraphicCard.query.first() is None
), 'We should have deleted it it was inside the pc'
@pytest.mark.xfail(reason='Test not developed') @pytest.mark.xfail(reason='Test not developed')
@ -93,21 +104,25 @@ def test_device_schema():
@pytest.mark.mvp @pytest.mark.mvp
@pytest.mark.usefixtures(conftest.auth_app_context.__name__) @pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_physical_properties(): def test_physical_properties():
c = d.Motherboard(slots=2, c = d.Motherboard(
usb=3, slots=2,
serial_number='sn', usb=3,
model='ml', serial_number='sn',
manufacturer='mr', model='ml',
width=2.0, manufacturer='mr',
color=Color()) width=2.0,
pc = d.Desktop(chassis=ComputerChassis.Tower, color=Color(),
model='foo', )
manufacturer='bar', pc = d.Desktop(
serial_number='foo-bar', chassis=ComputerChassis.Tower,
weight=2.8, model='foo',
width=1.4, manufacturer='bar',
height=2.1, serial_number='foo-bar',
color=Color('LightSeaGreen')) weight=2.8,
width=1.4,
height=2.1,
color=Color('LightSeaGreen'),
)
pc.components.add(c) pc.components.add(c)
db.session.add(pc) db.session.add(pc)
db.session.commit() db.session.commit()
@ -123,7 +138,7 @@ def test_physical_properties():
'manufacturer': 'mr', 'manufacturer': 'mr',
'bios_date': None, 'bios_date': None,
'ram_max_size': None, 'ram_max_size': None,
'ram_slots': None 'ram_slots': None,
} }
assert pc.physical_properties == { assert pc.physical_properties == {
'chassis': ComputerChassis.Tower, 'chassis': ComputerChassis.Tower,
@ -133,7 +148,7 @@ def test_physical_properties():
'receiver_id': None, 'receiver_id': None,
'serial_number': 'foo-bar', 'serial_number': 'foo-bar',
'part_number': None, 'part_number': None,
'transfer_state': TransferState.Initial 'transfer_state': TransferState.Initial,
} }
@ -143,14 +158,19 @@ def test_component_similar_one():
user = User.query.filter().first() user = User.query.filter().first()
snapshot = yaml2json('pc-components.db') snapshot = yaml2json('pc-components.db')
pc = snapshot['device'] pc = snapshot['device']
snapshot['components'][0]['serial_number'] = snapshot['components'][1]['serial_number'] = None snapshot['components'][0]['serial_number'] = snapshot['components'][1][
pc = d.Desktop(**pc, components=OrderedSet(d.Component(**c) for c in snapshot['components'])) 'serial_number'
] = None
pc = d.Desktop(
**pc, components=OrderedSet(d.Component(**c) for c in snapshot['components'])
)
component1, component2 = pc.components # type: d.Component component1, component2 = pc.components # type: d.Component
db.session.add(pc) db.session.add(pc)
db.session.flush() db.session.flush()
# Let's create a new component named 'A' similar to 1 # Let's create a new component named 'A' similar to 1
componentA = d.Component(model=component1.model, manufacturer=component1.manufacturer, componentA = d.Component(
owner_id=user.id) model=component1.model, manufacturer=component1.manufacturer, owner_id=user.id
)
similar_to_a = componentA.similar_one(pc, set()) similar_to_a = componentA.similar_one(pc, set())
assert similar_to_a == component1 assert similar_to_a == component1
# d.Component B does not have the same model # d.Component B does not have the same model
@ -176,9 +196,11 @@ def test_add_remove():
pc = d.Desktop(**pc, components=OrderedSet([c1, c2])) pc = d.Desktop(**pc, components=OrderedSet([c1, c2]))
db.session.add(pc) db.session.add(pc)
c3 = d.Component(serial_number='nc1', owner_id=user.id) c3 = d.Component(serial_number='nc1', owner_id=user.id)
pc2 = d.Desktop(serial_number='s2', pc2 = d.Desktop(
components=OrderedSet([c3]), serial_number='s2',
chassis=ComputerChassis.Microtower) components=OrderedSet([c3]),
chassis=ComputerChassis.Microtower,
)
c4 = d.Component(serial_number='c4s', owner_id=user.id) c4 = d.Component(serial_number='c4s', owner_id=user.id)
db.session.add(pc2) db.session.add(pc2)
db.session.add(c4) db.session.add(c4)
@ -202,7 +224,9 @@ def test_sync_run_components_empty():
remove all the components from the device. remove all the components from the device.
""" """
s = yaml2json('pc-components.db') s = yaml2json('pc-components.db')
pc = d.Desktop(**s['device'], components=OrderedSet(d.Component(**c) for c in s['components'])) pc = d.Desktop(
**s['device'], components=OrderedSet(d.Component(**c) for c in s['components'])
)
db.session.add(pc) db.session.add(pc)
db.session.commit() db.session.commit()
@ -220,7 +244,9 @@ def test_sync_run_components_none():
keep all the components from the device. keep all the components from the device.
""" """
s = yaml2json('pc-components.db') s = yaml2json('pc-components.db')
pc = d.Desktop(**s['device'], components=OrderedSet(d.Component(**c) for c in s['components'])) pc = d.Desktop(
**s['device'], components=OrderedSet(d.Component(**c) for c in s['components'])
)
db.session.add(pc) db.session.add(pc)
db.session.commit() db.session.commit()
@ -250,7 +276,8 @@ def test_sync_execute_register_desktop_existing_no_tag():
db.session.commit() db.session.commit()
pc = d.Desktop( pc = d.Desktop(
**yaml2json('pc-components.db')['device']) # Create a new transient non-db object **yaml2json('pc-components.db')['device']
) # Create a new transient non-db object
# 1: device exists on DB # 1: device exists on DB
db_pc = Sync().execute_register(pc) db_pc = Sync().execute_register(pc)
pc.amount = 0 pc.amount = 0
@ -286,7 +313,9 @@ def test_sync_execute_register_desktop_tag_not_linked():
db.session.commit() db.session.commit()
# Create a new transient non-db object # Create a new transient non-db object
pc = d.Desktop(**yaml2json('pc-components.db')['device'], tags=OrderedSet([Tag(id='foo')])) pc = d.Desktop(
**yaml2json('pc-components.db')['device'], tags=OrderedSet([Tag(id='foo')])
)
returned_pc = Sync().execute_register(pc) returned_pc = Sync().execute_register(pc)
assert returned_pc == pc assert returned_pc == pc
assert tag.device == pc, 'Tag has to be linked' assert tag.device == pc, 'Tag has to be linked'
@ -327,7 +356,9 @@ def test_sync_execute_register_tag_does_not_exist():
Tags have to be created before trying to link them through a Snapshot. Tags have to be created before trying to link them through a Snapshot.
""" """
user = User.query.filter().first() user = User.query.filter().first()
pc = d.Desktop(**yaml2json('pc-components.db')['device'], tags=OrderedSet([Tag('foo')])) pc = d.Desktop(
**yaml2json('pc-components.db')['device'], tags=OrderedSet([Tag('foo')])
)
pc.owner_id = user.id pc.owner_id = user.id
with raises(ResourceNotFound): with raises(ResourceNotFound):
Sync().execute_register(pc) Sync().execute_register(pc)
@ -346,7 +377,8 @@ def test_sync_execute_register_tag_linked_same_device():
db.session.commit() db.session.commit()
pc = d.Desktop( pc = d.Desktop(
**yaml2json('pc-components.db')['device']) # Create a new transient non-db object **yaml2json('pc-components.db')['device']
) # Create a new transient non-db object
pc.tags.add(Tag(id='foo')) pc.tags.add(Tag(id='foo'))
db_pc = Sync().execute_register(pc) db_pc = Sync().execute_register(pc)
assert db_pc.id == orig_pc.id assert db_pc.id == orig_pc.id
@ -370,7 +402,8 @@ def test_sync_execute_register_tag_linked_other_device_mismatch_between_tags():
db.session.commit() db.session.commit()
pc1 = d.Desktop( pc1 = d.Desktop(
**yaml2json('pc-components.db')['device']) # Create a new transient non-db object **yaml2json('pc-components.db')['device']
) # Create a new transient non-db object
pc1.tags.add(Tag(id='foo-1')) pc1.tags.add(Tag(id='foo-1'))
pc1.tags.add(Tag(id='foo-2')) pc1.tags.add(Tag(id='foo-2'))
with raises(MismatchBetweenTags): with raises(MismatchBetweenTags):
@ -394,7 +427,8 @@ def test_sync_execute_register_mismatch_between_tags_and_hid():
db.session.commit() db.session.commit()
pc1 = d.Desktop( pc1 = d.Desktop(
**yaml2json('pc-components.db')['device']) # Create a new transient non-db object **yaml2json('pc-components.db')['device']
) # Create a new transient non-db object
pc1.tags.add(Tag(id='foo-2')) pc1.tags.add(Tag(id='foo-2'))
with raises(MismatchBetweenTagsAndHid): with raises(MismatchBetweenTagsAndHid):
Sync().execute_register(pc1) Sync().execute_register(pc1)
@ -405,22 +439,36 @@ def test_sync_execute_register_mismatch_between_tags_and_hid():
def test_get_device(user: UserClient): def test_get_device(user: UserClient):
"""Checks GETting a d.Desktop with its components.""" """Checks GETting a d.Desktop with its components."""
g.user = User.query.one() g.user = User.query.one()
pc = d.Desktop(model='p1mo', pc = d.Desktop(
manufacturer='p1ma', model='p1mo',
serial_number='p1s', manufacturer='p1ma',
chassis=ComputerChassis.Tower, serial_number='p1s',
owner_id=user.user['id']) chassis=ComputerChassis.Tower,
pc.components = OrderedSet([ owner_id=user.user['id'],
d.NetworkAdapter(model='c1mo', manufacturer='c1ma', serial_number='c1s', )
owner_id=user.user['id']), pc.components = OrderedSet(
d.GraphicCard(model='c2mo', manufacturer='c2ma', memory=1500, owner_id=user.user['id']) [
]) d.NetworkAdapter(
model='c1mo',
manufacturer='c1ma',
serial_number='c1s',
owner_id=user.user['id'],
),
d.GraphicCard(
model='c2mo', manufacturer='c2ma', memory=1500, owner_id=user.user['id']
),
]
)
db.session.add(pc) db.session.add(pc)
# todo test is an abstract class. replace with another one # todo test is an abstract class. replace with another one
db.session.add(TestConnectivity(device=pc, db.session.add(
severity=Severity.Info, TestConnectivity(
agent=Person(name='Timmy'), device=pc,
author=User(email='bar@bar.com'))) severity=Severity.Info,
agent=Person(name='Timmy'),
author=User(email='bar@bar.com'),
)
)
db.session.commit() db.session.commit()
pc_api, _ = user.get(res=d.Device, item=pc.devicehub_id) pc_api, _ = user.get(res=d.Device, item=pc.devicehub_id)
assert len(pc_api['actions']) == 1 assert len(pc_api['actions']) == 1
@ -428,10 +476,14 @@ def test_get_device(user: UserClient):
assert pc_api['actions'][0]['device'] == pc.id assert pc_api['actions'][0]['device'] == pc.id
assert pc_api['actions'][0]['severity'] == 'Info' assert pc_api['actions'][0]['severity'] == 'Info'
assert UUID(pc_api['actions'][0]['author']) assert UUID(pc_api['actions'][0]['author'])
assert 'actions_components' not in pc_api, 'actions_components are internal use only' assert (
'actions_components' not in pc_api
), 'actions_components are internal use only'
assert 'actions_one' not in pc_api, 'they are internal use only' assert 'actions_one' not in pc_api, 'they are internal use only'
assert 'author' not in pc_api assert 'author' not in pc_api
assert tuple(c['id'] for c in pc_api['components']) == tuple(c.id for c in pc.components) assert tuple(c['id'] for c in pc_api['components']) == tuple(
c.id for c in pc.components
)
assert pc_api['hid'] == 'desktop-p1ma-p1mo-p1s' assert pc_api['hid'] == 'desktop-p1ma-p1mo-p1s'
assert pc_api['model'] == 'p1mo' assert pc_api['model'] == 'p1mo'
assert pc_api['manufacturer'] == 'p1ma' assert pc_api['manufacturer'] == 'p1ma'
@ -444,41 +496,59 @@ def test_get_device(user: UserClient):
def test_get_devices(app: Devicehub, user: UserClient): def test_get_devices(app: Devicehub, user: UserClient):
"""Checks GETting multiple devices.""" """Checks GETting multiple devices."""
g.user = User.query.one() g.user = User.query.one()
pc = d.Desktop(model='p1mo', pc = d.Desktop(
manufacturer='p1ma', model='p1mo',
serial_number='p1s', manufacturer='p1ma',
chassis=ComputerChassis.Tower, serial_number='p1s',
owner_id=user.user['id']) chassis=ComputerChassis.Tower,
pc.components = OrderedSet([ owner_id=user.user['id'],
d.NetworkAdapter(model='c1mo', manufacturer='c1ma', serial_number='c1s', )
owner_id=user.user['id']), pc.components = OrderedSet(
d.GraphicCard(model='c2mo', manufacturer='c2ma', memory=1500, [
owner_id=user.user['id']) d.NetworkAdapter(
]) model='c1mo',
pc1 = d.Desktop(model='p2mo', manufacturer='c1ma',
manufacturer='p2ma', serial_number='c1s',
serial_number='p2s', owner_id=user.user['id'],
chassis=ComputerChassis.Tower, ),
owner_id=user.user['id']) d.GraphicCard(
pc2 = d.Laptop(model='p3mo', model='c2mo', manufacturer='c2ma', memory=1500, owner_id=user.user['id']
manufacturer='p3ma', ),
serial_number='p3s', ]
chassis=ComputerChassis.Netbook, )
owner_id=user.user['id']) pc1 = d.Desktop(
model='p2mo',
manufacturer='p2ma',
serial_number='p2s',
chassis=ComputerChassis.Tower,
owner_id=user.user['id'],
)
pc2 = d.Laptop(
model='p3mo',
manufacturer='p3ma',
serial_number='p3s',
chassis=ComputerChassis.Netbook,
owner_id=user.user['id'],
)
db.session.add_all((pc, pc1, pc2)) db.session.add_all((pc, pc1, pc2))
db.session.commit() db.session.commit()
devices, _ = user.get(res=d.Device) devices, _ = user.get(res=d.Device)
ids = (pc.id, pc1.id, pc2.id, pc.components[0].id, pc.components[1].id) ids = (pc.id, pc1.id, pc2.id, pc.components[0].id, pc.components[1].id)
assert tuple(dev['id'] for dev in devices['items']) == ids assert tuple(dev['id'] for dev in devices['items']) == ids
assert tuple(dev['type'] for dev in devices['items']) == ( assert tuple(dev['type'] for dev in devices['items']) == (
d.Desktop.t, d.Desktop.t, d.Laptop.t, d.NetworkAdapter.t, d.GraphicCard.t d.Desktop.t,
d.Desktop.t,
d.Laptop.t,
d.NetworkAdapter.t,
d.GraphicCard.t,
) )
@pytest.mark.mvp @pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__) @pytest.mark.usefixtures(conftest.app_context.__name__)
def test_get_device_permissions(app: Devicehub, user: UserClient, user2: UserClient, def test_get_device_permissions(
client: Client): app: Devicehub, user: UserClient, user2: UserClient, client: Client
):
"""Checks GETting a d.Desktop with its components.""" """Checks GETting a d.Desktop with its components."""
s, _ = user.post(file('asus-eee-1000h.snapshot.11'), res=m.Snapshot) s, _ = user.post(file('asus-eee-1000h.snapshot.11'), res=m.Snapshot)
@ -530,12 +600,12 @@ def test_get_devices_unassigned(user: UserClient):
assert len(devices['items']) == 2 assert len(devices['items']) == 2
from ereuse_devicehub.resources.lot.models import Lot from ereuse_devicehub.resources.lot.models import Lot
device_id = devices['items'][0]['id'] device_id = devices['items'][0]['id']
my_lot, _ = user.post(({'name': 'My_lot'}), res=Lot) my_lot, _ = user.post(({'name': 'My_lot'}), res=Lot)
lot, _ = user.post({}, lot, _ = user.post(
res=Lot, {}, res=Lot, item='{}/devices'.format(my_lot['id']), query=[('id', device_id)]
item='{}/devices'.format(my_lot['id']), )
query=[('id', device_id)])
lot = Lot.query.filter_by(id=lot['id']).one() lot = Lot.query.filter_by(id=lot['id']).one()
assert next(iter(lot.devices)).id == device_id assert next(iter(lot.devices)).id == device_id
@ -555,13 +625,15 @@ def test_get_devices_unassigned(user: UserClient):
@pytest.mark.mvp @pytest.mark.mvp
@pytest.mark.usefixtures(conftest.auth_app_context.__name__) @pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_computer_monitor(): def test_computer_monitor():
m = d.ComputerMonitor(technology=DisplayTech.LCD, m = d.ComputerMonitor(
manufacturer='foo', technology=DisplayTech.LCD,
model='bar', manufacturer='foo',
serial_number='foo-bar', model='bar',
resolution_width=1920, serial_number='foo-bar',
resolution_height=1080, resolution_width=1920,
size=14.5) resolution_height=1080,
size=14.5,
)
db.session.add(m) db.session.add(m)
db.session.commit() db.session.commit()
@ -569,7 +641,9 @@ def test_computer_monitor():
@pytest.mark.mvp @pytest.mark.mvp
def test_manufacturer(user: UserClient): def test_manufacturer(user: UserClient):
m, r = user.get(res='Manufacturer', query=[('search', 'asus')]) m, r = user.get(res='Manufacturer', query=[('search', 'asus')])
assert m == {'items': [{'name': 'Asus', 'url': 'https://en.wikipedia.org/wiki/Asus'}]} assert m == {
'items': [{'name': 'Asus', 'url': 'https://en.wikipedia.org/wiki/Asus'}]
}
assert r.cache_control.public assert r.cache_control.public
assert r.expires.timestamp() > datetime.datetime.now().timestamp() assert r.expires.timestamp() > datetime.datetime.now().timestamp()
@ -592,12 +666,20 @@ def test_device_properties_format(app: Devicehub, user: UserClient):
assert format(pc, 's') == '(asustek computer inc.) S/N 94OAAQ021116' assert format(pc, 's') == '(asustek computer inc.) S/N 94OAAQ021116'
assert pc.ram_size == 1024 assert pc.ram_size == 1024
assert pc.data_storage_size == 152627 assert pc.data_storage_size == 152627
assert pc.graphic_card_model == 'mobile 945gse express integrated graphics controller' assert (
pc.graphic_card_model
== 'mobile 945gse express integrated graphics controller'
)
assert pc.processor_model == 'intel atom cpu n270 @ 1.60ghz' assert pc.processor_model == 'intel atom cpu n270 @ 1.60ghz'
net = next(c for c in pc.components if isinstance(c, d.NetworkAdapter)) net = next(c for c in pc.components if isinstance(c, d.NetworkAdapter))
assert format(net) == 'NetworkAdapter 5: model ar8121/ar8113/ar8114 ' \ assert (
'gigabit or fast ethernet, S/N 00:24:8c:7f:cf:2d' format(net) == 'NetworkAdapter 5: model ar8121/ar8113/ar8114 '
assert format(net, 't') == 'NetworkAdapter ar8121/ar8113/ar8114 gigabit or fast ethernet' 'gigabit or fast ethernet, S/N 00:24:8c:7f:cf:2d'
)
assert (
format(net, 't')
== 'NetworkAdapter ar8121/ar8113/ar8114 gigabit or fast ethernet'
)
assert format(net, 's') == 'qualcomm atheros 00:24:8C:7F:CF:2D 100 Mbps' assert format(net, 's') == 'qualcomm atheros 00:24:8C:7F:CF:2D 100 Mbps'
hdd = next(c for c in pc.components if isinstance(c, d.DataStorage)) hdd = next(c for c in pc.components if isinstance(c, d.DataStorage))
assert format(hdd) == 'HardDrive 10: model st9160310as, S/N 5sv4tqa6' assert format(hdd) == 'HardDrive 10: model st9160310as, S/N 5sv4tqa6'
@ -639,8 +721,12 @@ def test_networking_model(user: UserClient):
@pytest.mark.usefixtures(conftest.app_context.__name__) @pytest.mark.usefixtures(conftest.app_context.__name__)
def test_cooking_mixer(user: UserClient): def test_cooking_mixer(user: UserClient):
mixer = d.Mixer(serial_number='foo', model='bar', manufacturer='foobar', mixer = d.Mixer(
owner_id=user.user['id']) serial_number='foo',
model='bar',
manufacturer='foobar',
owner_id=user.user['id'],
)
db.session.add(mixer) db.session.add(mixer)
db.session.commit() db.session.commit()
@ -653,12 +739,12 @@ def test_cooking_mixer_api(user: UserClient):
'serialNumber': 'foo', 'serialNumber': 'foo',
'model': 'bar', 'model': 'bar',
'manufacturer': 'foobar', 'manufacturer': 'foobar',
'type': 'Mixer' 'type': 'Mixer',
}, },
'version': '11.0', 'version': '11.0',
'software': SnapshotSoftware.Web.name 'software': SnapshotSoftware.Web.name,
}, },
res=m.Snapshot res=m.Snapshot,
) )
mixer, _ = user.get(res=d.Device, item=snapshot['device']['id']) mixer, _ = user.get(res=d.Device, item=snapshot['device']['id'])
assert mixer['type'] == 'Mixer' assert mixer['type'] == 'Mixer'
@ -674,14 +760,19 @@ def test_hid_with_mac(app: Devicehub, user: UserClient):
pc, _ = user.get(res=d.Device, item=snap['device']['devicehubID']) pc, _ = user.get(res=d.Device, item=snap['device']['devicehubID'])
assert pc['hid'] == 'laptop-asustek_computer_inc-1000h-94oaaq021116' assert pc['hid'] == 'laptop-asustek_computer_inc-1000h-94oaaq021116'
pc = d.Device.query.filter_by(devicehub_id=snap['device']['devicehubID']).one() pc = d.Device.query.filter_by(devicehub_id=snap['device']['devicehubID']).one()
assert pc.placeholder.binding.hid == 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d' assert (
pc.placeholder.binding.hid
== 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d'
)
@pytest.mark.mvp @pytest.mark.mvp
def test_hid_without_mac(app: Devicehub, user: UserClient): def test_hid_without_mac(app: Devicehub, user: UserClient):
"""Checks hid without mac.""" """Checks hid without mac."""
snapshot = yaml2json('asus-eee-1000h.snapshot.11') snapshot = yaml2json('asus-eee-1000h.snapshot.11')
snapshot['components'] = [c for c in snapshot['components'] if c['type'] != 'NetworkAdapter'] snapshot['components'] = [
c for c in snapshot['components'] if c['type'] != 'NetworkAdapter'
]
snap, _ = user.post(json_encode(snapshot), res=m.Snapshot) snap, _ = user.post(json_encode(snapshot), res=m.Snapshot)
pc, _ = user.get(res=d.Device, item=snap['device']['devicehubID']) pc, _ = user.get(res=d.Device, item=snap['device']['devicehubID'])
assert pc['hid'] == 'laptop-asustek_computer_inc-1000h-94oaaq021116' assert pc['hid'] == 'laptop-asustek_computer_inc-1000h-94oaaq021116'
@ -710,7 +801,10 @@ def test_hid_with_2networkadapters(app: Devicehub, user: UserClient):
devices, _ = user.get(res=d.Device) devices, _ = user.get(res=d.Device)
laptop = devices['items'][0] laptop = devices['items'][0]
assert laptop['hid'] == 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d' assert (
laptop['hid']
== 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d'
)
assert len([c for c in devices['items'] if c['type'] == 'Laptop']) == 2 assert len([c for c in devices['items'] if c['type'] == 'Laptop']) == 2
@ -727,14 +821,20 @@ def test_hid_with_2network_and_drop_no_mac_in_hid(app: Devicehub, user: UserClie
pc, _ = user.get(res=d.Device, item=snap['device']['devicehubID']) pc, _ = user.get(res=d.Device, item=snap['device']['devicehubID'])
assert pc['hid'] == 'laptop-asustek_computer_inc-1000h-94oaaq021116' assert pc['hid'] == 'laptop-asustek_computer_inc-1000h-94oaaq021116'
pc = d.Device.query.filter_by(devicehub_id=snap['device']['devicehubID']).one() pc = d.Device.query.filter_by(devicehub_id=snap['device']['devicehubID']).one()
assert pc.placeholder.binding.hid == 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d' assert (
pc.placeholder.binding.hid
== 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d'
)
snapshot['uuid'] = 'd1b70cb8-8929-4f36-99b7-fe052cec0abb' snapshot['uuid'] = 'd1b70cb8-8929-4f36-99b7-fe052cec0abb'
snapshot['components'] = [c for c in snapshot['components'] if c != network] snapshot['components'] = [c for c in snapshot['components'] if c != network]
user.post(json_encode(snapshot), res=m.Snapshot) user.post(json_encode(snapshot), res=m.Snapshot)
devices, _ = user.get(res=d.Device) devices, _ = user.get(res=d.Device)
laptop = devices['items'][0] laptop = devices['items'][0]
assert pc.placeholder.binding.hid == 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d' assert (
pc.placeholder.binding.hid
== 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d'
)
assert len([c for c in devices['items'] if c['type'] == 'Laptop']) == 2 assert len([c for c in devices['items'] if c['type'] == 'Laptop']) == 2
assert len([c for c in laptop['components'] if c['type'] == 'NetworkAdapter']) == 1 assert len([c for c in laptop['components'] if c['type'] == 'NetworkAdapter']) == 1
@ -753,7 +853,10 @@ def test_hid_with_2network_and_drop_mac_in_hid(app: Devicehub, user: UserClient)
pc, _ = user.get(res=d.Device, item=snap['device']['devicehubID']) pc, _ = user.get(res=d.Device, item=snap['device']['devicehubID'])
assert pc['hid'] == 'laptop-asustek_computer_inc-1000h-94oaaq021116' assert pc['hid'] == 'laptop-asustek_computer_inc-1000h-94oaaq021116'
pc = d.Device.query.filter_by(devicehub_id=snap['device']['devicehubID']).one() pc = d.Device.query.filter_by(devicehub_id=snap['device']['devicehubID']).one()
assert pc.placeholder.binding.hid == 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d' assert (
pc.placeholder.binding.hid
== 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d'
)
# we drop the network card then is used for to build the hid # we drop the network card then is used for to build the hid
snapshot['uuid'] = 'd1b70cb8-8929-4f36-99b7-fe052cec0abb' snapshot['uuid'] = 'd1b70cb8-8929-4f36-99b7-fe052cec0abb'
@ -763,19 +866,25 @@ def test_hid_with_2network_and_drop_mac_in_hid(app: Devicehub, user: UserClient)
laptops = [c for c in devices['items'] if c['type'] == 'Laptop'] laptops = [c for c in devices['items'] if c['type'] == 'Laptop']
assert len(laptops) == 4 assert len(laptops) == 4
hids = [laptops[0]['hid'], laptops[2]['hid']] hids = [laptops[0]['hid'], laptops[2]['hid']]
proof_hid = ['laptop-asustek_computer_inc-1000h-94oaaq021116-a0:24:8c:7f:cf:2d', proof_hid = [
'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d'] 'laptop-asustek_computer_inc-1000h-94oaaq021116-a0:24:8c:7f:cf:2d',
'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d',
]
assert all([h in proof_hid for h in hids]) assert all([h in proof_hid for h in hids])
# we drop all network cards # we drop all network cards
snapshot['uuid'] = 'd1b70cb8-8929-4f36-99b7-fe052cec0abc' snapshot['uuid'] = 'd1b70cb8-8929-4f36-99b7-fe052cec0abc'
snapshot['components'] = [c for c in snapshot['components'] if c not in [network, network2]] snapshot['components'] = [
c for c in snapshot['components'] if c not in [network, network2]
]
user.post(json_encode(snapshot), res=m.Snapshot) user.post(json_encode(snapshot), res=m.Snapshot)
devices, _ = user.get(res=d.Device) devices, _ = user.get(res=d.Device)
laptops = [c for c in devices['items'] if c['type'] == 'Laptop'] laptops = [c for c in devices['items'] if c['type'] == 'Laptop']
assert len(laptops) == 4 assert len(laptops) == 4
hids = [laptops[0]['hid'], laptops[2]['hid']] hids = [laptops[0]['hid'], laptops[2]['hid']]
proof_hid = ['laptop-asustek_computer_inc-1000h-94oaaq021116-a0:24:8c:7f:cf:2d', proof_hid = [
'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d', 'laptop-asustek_computer_inc-1000h-94oaaq021116-a0:24:8c:7f:cf:2d',
'laptop-asustek_computer_inc-1000h-94oaaq021116'] 'laptop-asustek_computer_inc-1000h-94oaaq021116-00:24:8c:7f:cf:2d',
'laptop-asustek_computer_inc-1000h-94oaaq021116',
]
assert all([h in proof_hid for h in hids]) assert all([h in proof_hid for h in hids])