fixing test for jwt in snapshots

This commit is contained in:
Cayo Puigdefabregas 2021-07-02 17:40:20 +02:00
parent 3d027270cc
commit 57007b3d92
9 changed files with 121 additions and 122 deletions

View file

@ -29,7 +29,7 @@ from ereuse_devicehub.resources.enums import ComputerChassis, DisplayTech, Sever
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 from tests.conftest import file, yaml2json, json_encode
@pytest.mark.mvp @pytest.mark.mvp
@ -138,7 +138,7 @@ def test_physical_properties():
@pytest.mark.usefixtures(conftest.auth_app_context.__name__) @pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_component_similar_one(): def test_component_similar_one():
user = User.query.filter().first() user = User.query.filter().first()
snapshot = conftest.file('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]['serial_number'] = None
pc = d.Desktop(**pc, components=OrderedSet(d.Component(**c) for c in snapshot['components'])) pc = d.Desktop(**pc, components=OrderedSet(d.Component(**c) for c in snapshot['components']))
@ -167,7 +167,7 @@ def test_add_remove():
# pc2 has c3 # pc2 has c3
# c4 is not with any pc # c4 is not with any pc
user = User.query.filter().first() user = User.query.filter().first()
values = conftest.file('pc-components.db') values = yaml2json('pc-components.db')
pc = values['device'] pc = values['device']
c1, c2 = (d.Component(**c) for c in values['components']) c1, c2 = (d.Component(**c) for c in values['components'])
pc = d.Desktop(**pc, components=OrderedSet([c1, c2])) pc = d.Desktop(**pc, components=OrderedSet([c1, c2]))
@ -198,7 +198,7 @@ def test_sync_run_components_empty():
"""Syncs a device that has an empty components list. The system should """Syncs a device that has an empty components list. The system should
remove all the components from the device. remove all the components from the device.
""" """
s = conftest.file('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()
@ -216,7 +216,7 @@ def test_sync_run_components_none():
"""Syncs a device that has a None components. The system should """Syncs a device that has a None components. The system should
keep all the components from the device. keep all the components from the device.
""" """
s = conftest.file('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()
@ -233,7 +233,7 @@ def test_sync_run_components_none():
def test_sync_execute_register_desktop_new_desktop_no_tag(): def test_sync_execute_register_desktop_new_desktop_no_tag():
"""Syncs a new d.Desktop with HID and without a tag, creating it.""" """Syncs a new d.Desktop with HID and without a tag, creating it."""
# Case 1: device does not exist on DB # Case 1: device does not exist on DB
pc = d.Desktop(**conftest.file('pc-components.db')['device']) pc = d.Desktop(**yaml2json('pc-components.db')['device'])
db_pc = Sync().execute_register(pc) db_pc = Sync().execute_register(pc)
assert pc.physical_properties == db_pc.physical_properties assert pc.physical_properties == db_pc.physical_properties
@ -242,12 +242,12 @@ def test_sync_execute_register_desktop_new_desktop_no_tag():
@pytest.mark.usefixtures(conftest.auth_app_context.__name__) @pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_sync_execute_register_desktop_existing_no_tag(): def test_sync_execute_register_desktop_existing_no_tag():
"""Syncs an existing d.Desktop with HID and without a tag.""" """Syncs an existing d.Desktop with HID and without a tag."""
pc = d.Desktop(**conftest.file('pc-components.db')['device']) pc = d.Desktop(**yaml2json('pc-components.db')['device'])
db.session.add(pc) db.session.add(pc)
db.session.commit() db.session.commit()
pc = d.Desktop( pc = d.Desktop(
**conftest.file('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
@ -262,7 +262,7 @@ def test_sync_execute_register_desktop_no_hid_no_tag(user: UserClient):
"""Syncs a d.Desktop without HID and no tag. """Syncs a d.Desktop without HID and no tag.
This should not fail as we don't have a way to identify it. This should not fail as we don't have a way to identify it.
""" """
device = conftest.file('pc-components.db')['device'] device = yaml2json('pc-components.db')['device']
device['owner_id'] = user.user['id'] device['owner_id'] = user.user['id']
pc = d.Desktop(**device) pc = d.Desktop(**device)
# 1: device has no HID # 1: device has no HID
@ -283,7 +283,7 @@ 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(**conftest.file('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'
@ -300,7 +300,7 @@ def test_sync_execute_register_no_hid_tag_not_linked(tag_id: str):
be linked), and thus it creates a new d.Desktop. be linked), and thus it creates a new d.Desktop.
""" """
tag = Tag(id=tag_id) tag = Tag(id=tag_id)
pc = d.Desktop(**conftest.file('pc-components.db')['device'], tags=OrderedSet([tag])) pc = d.Desktop(**yaml2json('pc-components.db')['device'], tags=OrderedSet([tag]))
db.session.add(g.user) db.session.add(g.user)
returned_pc = Sync().execute_register(pc) returned_pc = Sync().execute_register(pc)
db.session.commit() db.session.commit()
@ -323,7 +323,7 @@ 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(**conftest.file('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)
@ -337,12 +337,12 @@ def test_sync_execute_register_tag_linked_same_device():
(If it has HID it validates both HID and tag point at the same (If it has HID it validates both HID and tag point at the same
device, this his checked in ). device, this his checked in ).
""" """
orig_pc = d.Desktop(**conftest.file('pc-components.db')['device']) orig_pc = d.Desktop(**yaml2json('pc-components.db')['device'])
db.session.add(Tag(id='foo', device=orig_pc)) db.session.add(Tag(id='foo', device=orig_pc))
db.session.commit() db.session.commit()
pc = d.Desktop( pc = d.Desktop(
**conftest.file('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
@ -356,16 +356,16 @@ def test_sync_execute_register_tag_linked_other_device_mismatch_between_tags():
"""Checks that sync raises an error if finds that at least two passed-in """Checks that sync raises an error if finds that at least two passed-in
tags are not linked to the same device. tags are not linked to the same device.
""" """
pc1 = d.Desktop(**conftest.file('pc-components.db')['device']) pc1 = d.Desktop(**yaml2json('pc-components.db')['device'])
db.session.add(Tag(id='foo-1', device=pc1)) db.session.add(Tag(id='foo-1', device=pc1))
pc2 = d.Desktop(**conftest.file('pc-components.db')['device']) pc2 = d.Desktop(**yaml2json('pc-components.db')['device'])
pc2.serial_number = 'pc2-serial' pc2.serial_number = 'pc2-serial'
pc2.hid = Naming.hid(pc2.type, pc2.manufacturer, pc2.model, pc2.serial_number) pc2.hid = Naming.hid(pc2.type, pc2.manufacturer, pc2.model, pc2.serial_number)
db.session.add(Tag(id='foo-2', device=pc2)) db.session.add(Tag(id='foo-2', device=pc2))
db.session.commit() db.session.commit()
pc1 = d.Desktop( pc1 = d.Desktop(
**conftest.file('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):
@ -380,16 +380,16 @@ def test_sync_execute_register_mismatch_between_tags_and_hid():
In this case we set HID -> pc1 but tag -> pc2 In this case we set HID -> pc1 but tag -> pc2
""" """
pc1 = d.Desktop(**conftest.file('pc-components.db')['device']) pc1 = d.Desktop(**yaml2json('pc-components.db')['device'])
db.session.add(Tag(id='foo-1', device=pc1)) db.session.add(Tag(id='foo-1', device=pc1))
pc2 = d.Desktop(**conftest.file('pc-components.db')['device']) pc2 = d.Desktop(**yaml2json('pc-components.db')['device'])
pc2.serial_number = 'pc2-serial' pc2.serial_number = 'pc2-serial'
pc2.hid = Naming.hid(pc2.type, pc2.manufacturer, pc2.model, pc2.serial_number) pc2.hid = Naming.hid(pc2.type, pc2.manufacturer, pc2.model, pc2.serial_number)
db.session.add(Tag(id='foo-2', device=pc2)) db.session.add(Tag(id='foo-2', device=pc2))
db.session.commit() db.session.commit()
pc1 = d.Desktop( pc1 = d.Desktop(
**conftest.file('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)
@ -623,9 +623,9 @@ def test_hid_with_mac(app: Devicehub, user: UserClient):
@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 = file('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(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'
@ -633,10 +633,10 @@ def test_hid_without_mac(app: Devicehub, user: UserClient):
@pytest.mark.mvp @pytest.mark.mvp
def test_hid_with_mac_none(app: Devicehub, user: UserClient): def test_hid_with_mac_none(app: Devicehub, user: UserClient):
"""Checks hid with mac = None.""" """Checks hid with mac = None."""
snapshot = file('asus-eee-1000h.snapshot.11') snapshot = yaml2json('asus-eee-1000h.snapshot.11')
network = [c for c in snapshot['components'] if c['type'] == 'NetworkAdapter'][0] network = [c for c in snapshot['components'] if c['type'] == 'NetworkAdapter'][0]
network['serialNumber'] = None network['serialNumber'] = None
snap, _ = user.post(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'
@ -644,12 +644,12 @@ def test_hid_with_mac_none(app: Devicehub, user: UserClient):
@pytest.mark.mvp @pytest.mark.mvp
def test_hid_with_2networkadapters(app: Devicehub, user: UserClient): def test_hid_with_2networkadapters(app: Devicehub, user: UserClient):
"""Checks hid with 2 networks adapters""" """Checks hid with 2 networks adapters"""
snapshot = file('asus-eee-1000h.snapshot.11') snapshot = yaml2json('asus-eee-1000h.snapshot.11')
network = [c for c in snapshot['components'] if c['type'] == 'NetworkAdapter'][0] network = [c for c in snapshot['components'] if c['type'] == 'NetworkAdapter'][0]
network2 = copy.copy(network) network2 = copy.copy(network)
snapshot['components'].append(network2) snapshot['components'].append(network2)
network['serialNumber'] = 'a0:24:8c:7f:cf:2d' network['serialNumber'] = 'a0:24:8c:7f:cf:2d'
user.post(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]
@ -660,18 +660,18 @@ def test_hid_with_2networkadapters(app: Devicehub, user: UserClient):
@pytest.mark.mvp @pytest.mark.mvp
def test_hid_with_2network_and_drop_no_mac_in_hid(app: Devicehub, user: UserClient): def test_hid_with_2network_and_drop_no_mac_in_hid(app: Devicehub, user: UserClient):
"""Checks hid with 2 networks adapters and next drop the network is not used in hid""" """Checks hid with 2 networks adapters and next drop the network is not used in hid"""
snapshot = file('asus-eee-1000h.snapshot.11') snapshot = yaml2json('asus-eee-1000h.snapshot.11')
network = [c for c in snapshot['components'] if c['type'] == 'NetworkAdapter'][0] network = [c for c in snapshot['components'] if c['type'] == 'NetworkAdapter'][0]
network2 = copy.copy(network) network2 = copy.copy(network)
snapshot['components'].append(network2) snapshot['components'].append(network2)
network['serialNumber'] = 'a0:24:8c:7f:cf:2d' network['serialNumber'] = 'a0:24:8c:7f:cf:2d'
snap, _ = user.post(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-00:24:8c:7f:cf:2d' assert pc['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(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 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'
@ -683,19 +683,19 @@ def test_hid_with_2network_and_drop_no_mac_in_hid(app: Devicehub, user: UserClie
def test_hid_with_2network_and_drop_mac_in_hid(app: Devicehub, user: UserClient): def test_hid_with_2network_and_drop_mac_in_hid(app: Devicehub, user: UserClient):
"""Checks hid with 2 networks adapters and next drop the network is used in hid""" """Checks hid with 2 networks adapters and next drop the network is used in hid"""
# One tipical snapshot with 2 network cards # One tipical snapshot with 2 network cards
snapshot = file('asus-eee-1000h.snapshot.11') snapshot = yaml2json('asus-eee-1000h.snapshot.11')
network = [c for c in snapshot['components'] if c['type'] == 'NetworkAdapter'][0] network = [c for c in snapshot['components'] if c['type'] == 'NetworkAdapter'][0]
network2 = copy.copy(network) network2 = copy.copy(network)
snapshot['components'].append(network2) snapshot['components'].append(network2)
network['serialNumber'] = 'a0:24:8c:7f:cf:2d' network['serialNumber'] = 'a0:24:8c:7f:cf:2d'
snap, _ = user.post(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-00:24:8c:7f:cf:2d' assert pc['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'
snapshot['components'] = [c for c in snapshot['components'] if c != network2] snapshot['components'] = [c for c in snapshot['components'] if c != network2]
user.post(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) == 2 assert len(laptops) == 2
@ -707,7 +707,7 @@ def test_hid_with_2network_and_drop_mac_in_hid(app: Devicehub, user: UserClient)
# 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 not c in [network, network2]] snapshot['components'] = [c for c in snapshot['components'] if not c in [network, network2]]
user.post(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) == 3 assert len(laptops) == 3

View file

@ -13,7 +13,7 @@ from ereuse_devicehub.resources.device.views import Filters, Sorting
from ereuse_devicehub.resources.enums import ComputerChassis from ereuse_devicehub.resources.enums import ComputerChassis
from ereuse_devicehub.resources.lot.models import Lot from ereuse_devicehub.resources.lot.models import Lot
from tests import conftest from tests import conftest
from tests.conftest import file from tests.conftest import file, yaml2json, json_encode
@pytest.mark.mvp @pytest.mark.mvp
@ -196,9 +196,9 @@ def test_device_query_permitions(user: UserClient, user2: UserClient):
i2, _ = user2.get(res=Device) i2, _ = user2.get(res=Device)
assert i2['items'] == [] assert i2['items'] == []
basic_snapshot = file('basic.snapshot') basic_snapshot = yaml2json('basic.snapshot')
basic_snapshot['uuid'] = f"{uuid.uuid4()}" basic_snapshot['uuid'] = f"{uuid.uuid4()}"
user2.post(basic_snapshot, res=Snapshot) user2.post(json_encode(basic_snapshot), res=Snapshot)
i2, _ = user2.get(res=Device) i2, _ = user2.get(res=Device)
pc2 = next(d for d in i2['items'] if d['type'] == 'Desktop') pc2 = next(d for d in i2['items'] if d['type'] == 'Desktop')
@ -265,9 +265,9 @@ def test_device_query_search_synonyms_asus(user: UserClient):
@pytest.mark.mvp @pytest.mark.mvp
def test_device_query_search_synonyms_intel(user: UserClient): def test_device_query_search_synonyms_intel(user: UserClient):
s = file('real-hp.snapshot.11') s = yaml2json('real-hp.snapshot.11')
s['device']['model'] = 'foo' # The model had the word 'HP' in it s['device']['model'] = 'foo' # The model had the word 'HP' in it
user.post(s, res=Snapshot) user.post(json_encode(s), res=Snapshot)
i, _ = user.get(res=Device, query=[('search', 'hewlett packard')]) i, _ = user.get(res=Device, query=[('search', 'hewlett packard')])
assert 1 == len(i['items']) assert 1 == len(i['items'])
i, _ = user.get(res=Device, query=[('search', 'hewlett')]) i, _ = user.get(res=Device, query=[('search', 'hewlett')])

View file

@ -23,7 +23,7 @@ from ereuse_devicehub.resources.hash_reports import ReportHash
from ereuse_devicehub.resources.enums import SessionType from ereuse_devicehub.resources.enums import SessionType
from ereuse_devicehub.db import db from ereuse_devicehub.db import db
from tests import conftest from tests import conftest
from tests.conftest import file from tests.conftest import file, yaml2json, json_encode
@pytest.mark.mvp @pytest.mark.mvp
@ -114,8 +114,8 @@ def test_export_csv_permitions(user: UserClient, user2: UserClient, client: Clie
@pytest.mark.mvp @pytest.mark.mvp
def test_export_csv_actions(user: UserClient, user2: UserClient, client: Client): def test_export_csv_actions(user: UserClient, user2: UserClient, client: Client):
"""Test export device information in a csv file with others users.""" """Test export device information in a csv file with others users."""
acer = file('acer.happy.battery.snapshot') acer = yaml2json('acer.happy.battery.snapshot')
snapshot, _ = user.post(acer, res=Snapshot) snapshot, _ = user.post(json_encode(acer), res=Snapshot)
device_id = snapshot['device']['id'] device_id = snapshot['device']['id']
post_request = {"transaction": "ccc", "name": "John", "endUsers": 1, post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
"devices": [device_id], "description": "aaa", "devices": [device_id], "description": "aaa",
@ -156,8 +156,8 @@ def test_export_csv_actions(user: UserClient, user2: UserClient, client: Client)
@pytest.mark.usefixtures(conftest.app_context.__name__) @pytest.mark.usefixtures(conftest.app_context.__name__)
def test_live_export_csv2(user: UserClient, client: Client, app: Devicehub): def test_live_export_csv2(user: UserClient, client: Client, app: Devicehub):
"""Tests inserting a Live into the database and GETting it.""" """Tests inserting a Live into the database and GETting it."""
acer = file('acer-happy.snapshot-test1') acer = yaml2json('acer-happy.snapshot-test1')
snapshot, _ = user.post(acer, res=Snapshot) snapshot, _ = user.post(json_encode(acer), res=Snapshot)
device_id = snapshot['device']['id'] device_id = snapshot['device']['id']
post_request = {"transaction": "ccc", "name": "John", "endUsers": 1, post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
"devices": [device_id], "description": "aaa", "devices": [device_id], "description": "aaa",
@ -168,7 +168,7 @@ def test_live_export_csv2(user: UserClient, client: Client, app: Devicehub):
user.post(res=Allocate, data=post_request) user.post(res=Allocate, data=post_request)
acer = file('acer-happy.live-test1') acer = yaml2json('acer-happy.live-test1')
live, _ = client.post(acer, res=Live) live, _ = client.post(acer, res=Live)
csv_user, _ = user.get(res=documents.DocumentDef.t, csv_user, _ = user.get(res=documents.DocumentDef.t,
item='actions/', item='actions/',
@ -183,8 +183,8 @@ def test_live_export_csv2(user: UserClient, client: Client, app: Devicehub):
@pytest.mark.usefixtures(conftest.app_context.__name__) @pytest.mark.usefixtures(conftest.app_context.__name__)
def test_live_example2(user: UserClient, client: Client, app: Devicehub): def test_live_example2(user: UserClient, client: Client, app: Devicehub):
"""Tests inserting a Live into the database and GETting it.""" """Tests inserting a Live into the database and GETting it."""
acer = file('acer-happy.snapshot-test1') acer = yaml2json('acer-happy.snapshot-test1')
snapshot, _ = user.post(acer, res=Snapshot) snapshot, _ = user.post(json_encode(acer), res=Snapshot)
device_id = snapshot['device']['id'] device_id = snapshot['device']['id']
post_request = {"transaction": "ccc", "name": "John", "endUsers": 1, post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
"devices": [device_id], "description": "aaa", "devices": [device_id], "description": "aaa",
@ -195,7 +195,7 @@ def test_live_example2(user: UserClient, client: Client, app: Devicehub):
user.post(res=Allocate, data=post_request) user.post(res=Allocate, data=post_request)
acer = file('acer-happy.live-test1') acer = yaml2json('acer-happy.live-test1')
live, _ = client.post(acer, res=Live) live, _ = client.post(acer, res=Live)
db_device = d.Device.query.filter_by(id=device_id).one() db_device = d.Device.query.filter_by(id=device_id).one()
action_live = [a for a in db_device.actions if a.type == 'Live'] action_live = [a for a in db_device.actions if a.type == 'Live']
@ -553,8 +553,8 @@ def test_verify_stamp_devices_stock(user: UserClient, client: Client):
@pytest.mark.mvp @pytest.mark.mvp
def test_verify_stamp_csv_actions(user: UserClient, client: Client): def test_verify_stamp_csv_actions(user: UserClient, client: Client):
"""Test verify stamp of one export device information in a csv file with others users.""" """Test verify stamp of one export device information in a csv file with others users."""
acer = file('acer.happy.battery.snapshot') acer = yaml2json('acer.happy.battery.snapshot')
snapshot, _ = user.post(acer, res=Snapshot) snapshot, _ = user.post(json_encode(acer), res=Snapshot)
device_id = snapshot['device']['id'] device_id = snapshot['device']['id']
post_request = {"transaction": "ccc", "name": "John", "endUsers": 1, post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
"devices": [device_id], "description": "aaa", "devices": [device_id], "description": "aaa",

View file

@ -3,7 +3,7 @@ import pytest
from ereuse_devicehub.client import UserClient from ereuse_devicehub.client import UserClient
from ereuse_devicehub.resources.action import models as ma from ereuse_devicehub.resources.action import models as ma
from tests import conftest from tests import conftest
from tests.conftest import file from tests.conftest import file, yaml2json, json_encode
@pytest.mark.mvp @pytest.mark.mvp
@ -11,10 +11,10 @@ from tests.conftest import file
def test_simple_metrics(user: UserClient): def test_simple_metrics(user: UserClient):
""" Checks one standard query of metrics """ """ Checks one standard query of metrics """
# Insert computer # Insert computer
lenovo = file('desktop-9644w8n-lenovo-0169622.snapshot') lenovo = yaml2json('desktop-9644w8n-lenovo-0169622.snapshot')
acer = file('acer.happy.battery.snapshot') acer = yaml2json('acer.happy.battery.snapshot')
user.post(lenovo, res=ma.Snapshot) user.post(json_encode(lenovo), res=ma.Snapshot)
snapshot, _ = user.post(acer, res=ma.Snapshot) snapshot, _ = user.post(json_encode(acer), res=ma.Snapshot)
device_id = snapshot['device']['id'] device_id = snapshot['device']['id']
post_request = {"transaction": "ccc", "name": "John", "endUsers": 1, post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
"finalUserCode": "abcdefjhi", "finalUserCode": "abcdefjhi",
@ -58,8 +58,8 @@ def test_simple_metrics(user: UserClient):
def test_second_hdd_metrics(user: UserClient): def test_second_hdd_metrics(user: UserClient):
""" Checks one standard query of metrics """ """ Checks one standard query of metrics """
# Insert computer # Insert computer
acer = file('acer.happy.battery.snapshot') acer = yaml2json('acer.happy.battery.snapshot')
snapshot, _ = user.post(acer, res=ma.Snapshot) snapshot, _ = user.post(json_encode(acer), res=ma.Snapshot)
device_id = snapshot['device']['id'] device_id = snapshot['device']['id']
post_request = {"transaction": "ccc", "name": "John", "endUsers": 1, post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
"finalUserCode": "abcdefjhi", "finalUserCode": "abcdefjhi",

View file

@ -12,7 +12,7 @@ from ereuse_devicehub.resources.device.models import Computer, Desktop, Device,
from ereuse_devicehub.resources.enums import AppearanceRange, ComputerChassis, \ from ereuse_devicehub.resources.enums import AppearanceRange, ComputerChassis, \
FunctionalityRange FunctionalityRange
from tests import conftest from tests import conftest
from tests.conftest import file from tests.conftest import file, yaml2json, json_encode
@pytest.mark.mvp @pytest.mark.mvp
@ -104,16 +104,16 @@ def test_when_rate_must_not_compute(user: UserClient):
... ...
""" """
# Checking case 1 # Checking case 1
s = file('basic.snapshot') s = yaml2json('basic.snapshot')
# Delete snapshot device actions to delete VisualTest # Delete snapshot device actions to delete VisualTest
del s['device']['actions'] del s['device']['actions']
# Post to compute rate and check to didn't do it # Post to compute rate and check to didn't do it
snapshot, _ = user.post(s, res=Snapshot) snapshot, _ = user.post(json_encode(s), res=Snapshot)
assert 'rate' not in snapshot['device'] assert 'rate' not in snapshot['device']
# Checking case 2 # Checking case 2
s = file('basic.snapshot') s = yaml2json('basic.snapshot')
# Change snapshot software source # Change snapshot software source
s['software'] = 'Web' s['software'] = 'Web'
del s['uuid'] del s['uuid']
@ -121,14 +121,14 @@ def test_when_rate_must_not_compute(user: UserClient):
del s['components'] del s['components']
# Post to compute rate and check to didn't do it # Post to compute rate and check to didn't do it
snapshot, _ = user.post(s, res=Snapshot) snapshot, _ = user.post(json_encode(s), res=Snapshot)
assert 'rate' not in snapshot['device'] assert 'rate' not in snapshot['device']
# Checking case 3 # Checking case 3
s = file('keyboard.snapshot') s = yaml2json('keyboard.snapshot')
# Post to compute rate and check to didn't do it # Post to compute rate and check to didn't do it
snapshot, _ = user.post(s, res=Snapshot) snapshot, _ = user.post(json_encode(s), res=Snapshot)
assert 'rate' not in snapshot['device'] assert 'rate' not in snapshot['device']

View file

@ -31,7 +31,7 @@ from ereuse_devicehub.resources.tag import Tag
from ereuse_devicehub.resources.user.models import User from ereuse_devicehub.resources.user.models import User
from ereuse_devicehub.resources.action.views.snapshot import save_json from ereuse_devicehub.resources.action.views.snapshot import save_json
from ereuse_devicehub.resources.documents import documents from ereuse_devicehub.resources.documents import documents
from tests.conftest import file from tests.conftest import file, yaml2json, json_encode
from tests import conftest from tests import conftest
@ -70,7 +70,7 @@ def test_snapshot_model():
@pytest.mark.mvp @pytest.mark.mvp
def test_snapshot_schema(app: Devicehub): def test_snapshot_schema(app: Devicehub):
with app.app_context(): with app.app_context():
s = file('basic.snapshot') s = yaml2json('basic.snapshot')
app.resources['Snapshot'].schema.load(s) app.resources['Snapshot'].schema.load(s)
@ -79,7 +79,7 @@ def test_snapshot_post(user: UserClient):
"""Tests the post snapshot endpoint (validation, etc), data correctness, """Tests the post snapshot endpoint (validation, etc), data correctness,
and relationship correctness. and relationship correctness.
""" """
snapshot = snapshot_and_check(user, file('basic.snapshot'), snapshot = snapshot_and_check(user, yaml2json('basic.snapshot'),
action_types=( action_types=(
BenchmarkProcessor.t, BenchmarkProcessor.t,
VisualTest.t, VisualTest.t,
@ -112,16 +112,16 @@ def test_snapshot_post(user: UserClient):
@pytest.mark.mvp @pytest.mark.mvp
def test_same_device_tow_users(user: UserClient, user2: UserClient): def test_same_device_tow_users(user: UserClient, user2: UserClient):
"""Two users can up the same snapshot and the system save 2 computers""" """Two users can up the same snapshot and the system save 2 computers"""
user.post(file('basic.snapshot'), res=Snapshot) user.post(yaml2json('basic.snapshot'), res=Snapshot)
i, _ = user.get(res=m.Device) i, _ = user.get(res=m.Device)
pc = next(d for d in i['items'] if d['type'] == 'Desktop') pc = next(d for d in i['items'] if d['type'] == 'Desktop')
pc_id = pc['id'] pc_id = pc['id']
devicehub_id = pc['devicehubID'] devicehub_id = pc['devicehubID']
assert i['items'][0]['url'] == f'/devices/{devicehub_id}' assert i['items'][0]['url'] == f'/devices/{devicehub_id}'
basic_snapshot = file('basic.snapshot') basic_snapshot = yaml2json('basic.snapshot')
basic_snapshot['uuid'] = f"{uuid.uuid4()}" basic_snapshot['uuid'] = f"{uuid.uuid4()}"
user2.post(basic_snapshot, res=Snapshot) user2.post(json_encode(basic_snapshot), res=Snapshot)
i2, _ = user2.get(res=m.Device) i2, _ = user2.get(res=m.Device)
pc2 = next(d for d in i2['items'] if d['type'] == 'Desktop') pc2 = next(d for d in i2['items'] if d['type'] == 'Desktop')
assert pc['id'] != pc2['id'] assert pc['id'] != pc2['id']
@ -133,13 +133,13 @@ def test_snapshot_update_timefield_updated(user: UserClient):
""" """
Tests for check if one computer have the time mark updated when one component of it is updated Tests for check if one computer have the time mark updated when one component of it is updated
""" """
computer1 = file('1-device-with-components.snapshot') computer1 = yaml2json('1-device-with-components.snapshot')
snapshot = snapshot_and_check(user, snapshot = snapshot_and_check(user,
computer1, computer1,
action_types=(BenchmarkProcessor.t, action_types=(BenchmarkProcessor.t,
RateComputer.t), RateComputer.t),
perform_second_snapshot=False) perform_second_snapshot=False)
computer2 = file('2-second-device-with-components-of-first.snapshot') computer2 = yaml2json('2-second-device-with-components-of-first.snapshot')
snapshot_and_check(user, computer2, action_types=('Remove', 'RateComputer'), snapshot_and_check(user, computer2, action_types=('Remove', 'RateComputer'),
perform_second_snapshot=False) perform_second_snapshot=False)
pc1_devicehub_id = snapshot['device']['devicehubID'] pc1_devicehub_id = snapshot['device']['devicehubID']
@ -165,7 +165,7 @@ def test_snapshot_component_add_remove(user: UserClient):
# We add the first device (2 times). The distribution of components # We add the first device (2 times). The distribution of components
# (represented with their S/N) should be: # (represented with their S/N) should be:
# PC 1: p1c1s, p1c2s, p1c3s. PC 2: ø # PC 1: p1c1s, p1c2s, p1c3s. PC 2: ø
s1 = file('1-device-with-components.snapshot') s1 = yaml2json('1-device-with-components.snapshot')
snapshot1 = snapshot_and_check(user, snapshot1 = snapshot_and_check(user,
s1, s1,
action_types=(BenchmarkProcessor.t, action_types=(BenchmarkProcessor.t,
@ -190,7 +190,7 @@ def test_snapshot_component_add_remove(user: UserClient):
# It has the processor of the first one (p1c2s) # It has the processor of the first one (p1c2s)
# PC 1: p1c1s, p1c3s. PC 2: p2c1s, p1c2s # PC 1: p1c1s, p1c3s. PC 2: p2c1s, p1c2s
# Actions PC1: Snapshot, Remove. PC2: Snapshot # Actions PC1: Snapshot, Remove. PC2: Snapshot
s2 = file('2-second-device-with-components-of-first.snapshot') s2 = yaml2json('2-second-device-with-components-of-first.snapshot')
# num_actions = 2 = Remove, Add # num_actions = 2 = Remove, Add
snapshot2 = snapshot_and_check(user, s2, action_types=('Remove', 'RateComputer'), snapshot2 = snapshot_and_check(user, s2, action_types=('Remove', 'RateComputer'),
perform_second_snapshot=False) perform_second_snapshot=False)
@ -220,7 +220,7 @@ def test_snapshot_component_add_remove(user: UserClient):
# and moving processor from the second device to the first. # and moving processor from the second device to the first.
# We have created 1 Remove (from PC2's processor back to PC1) # We have created 1 Remove (from PC2's processor back to PC1)
# PC 0: p1c2s, p1c3s. PC 1: p2c1s # PC 0: p1c2s, p1c3s. PC 1: p2c1s
s3 = file('3-first-device-but-removing-motherboard-and-adding-processor-from-2.snapshot') s3 = yaml2json('3-first-device-but-removing-motherboard-and-adding-processor-from-2.snapshot')
snapshot_and_check(user, s3, ('Remove', 'RateComputer'), perform_second_snapshot=False) snapshot_and_check(user, s3, ('Remove', 'RateComputer'), perform_second_snapshot=False)
pc1, _ = user.get(res=m.Device, item=pc1_devicehub_id) pc1, _ = user.get(res=m.Device, item=pc1_devicehub_id)
pc2, _ = user.get(res=m.Device, item=pc2_devicehub_id) pc2, _ = user.get(res=m.Device, item=pc2_devicehub_id)
@ -266,7 +266,7 @@ def test_snapshot_component_add_remove(user: UserClient):
# We register the first device but without the processor, # We register the first device but without the processor,
# adding a graphic card and adding a new component # adding a graphic card and adding a new component
s4 = file('4-first-device-but-removing-processor.snapshot-and-adding-graphic-card') s4 = yaml2json('4-first-device-but-removing-processor.snapshot-and-adding-graphic-card')
snapshot4 = snapshot_and_check(user, s4, ('RateComputer',), perform_second_snapshot=False) snapshot4 = snapshot_and_check(user, s4, ('RateComputer',), perform_second_snapshot=False)
pc1, _ = user.get(res=m.Device, item=pc1_devicehub_id) pc1, _ = user.get(res=m.Device, item=pc1_devicehub_id)
pc2, _ = user.get(res=m.Device, item=pc2_devicehub_id) pc2, _ = user.get(res=m.Device, item=pc2_devicehub_id)
@ -312,7 +312,7 @@ def test_snapshot_mismatch_id():
@pytest.mark.mvp @pytest.mark.mvp
def test_snapshot_tag_inner_tag(user: UserClient, tag_id: str, app: Devicehub): def test_snapshot_tag_inner_tag(user: UserClient, tag_id: str, app: Devicehub):
"""Tests a posting Snapshot with a local tag.""" """Tests a posting Snapshot with a local tag."""
b = file('basic.snapshot') b = yaml2json('basic.snapshot')
b['device']['tags'] = [{'type': 'Tag', 'id': tag_id}] b['device']['tags'] = [{'type': 'Tag', 'id': tag_id}]
snapshot_and_check(user, b, snapshot_and_check(user, b,
@ -325,13 +325,13 @@ def test_snapshot_tag_inner_tag(user: UserClient, tag_id: str, app: Devicehub):
@pytest.mark.mvp @pytest.mark.mvp
def test_snapshot_tag_inner_tag_mismatch_between_tags_and_hid(user: UserClient, tag_id: str): def test_snapshot_tag_inner_tag_mismatch_between_tags_and_hid(user: UserClient, tag_id: str):
"""Ensures one device cannot 'steal' the tag from another one.""" """Ensures one device cannot 'steal' the tag from another one."""
pc1 = file('basic.snapshot') pc1 = yaml2json('basic.snapshot')
pc1['device']['tags'] = [{'type': 'Tag', 'id': tag_id}] pc1['device']['tags'] = [{'type': 'Tag', 'id': tag_id}]
user.post(pc1, res=Snapshot) user.post(json_encode(pc1), res=Snapshot)
pc2 = file('1-device-with-components.snapshot') pc2 = yaml2json('1-device-with-components.snapshot')
user.post(pc2, res=Snapshot) # PC2 uploads well user.post(json_encode(pc2), res=Snapshot) # PC2 uploads well
pc2['device']['tags'] = [{'type': 'Tag', 'id': tag_id}] # Set tag from pc1 to pc2 pc2['device']['tags'] = [{'type': 'Tag', 'id': tag_id}] # Set tag from pc1 to pc2
user.post(pc2, res=Snapshot, status=MismatchBetweenTagsAndHid) user.post(json_encode(pc2), res=Snapshot, status=MismatchBetweenTagsAndHid)
@pytest.mark.mvp @pytest.mark.mvp
@ -341,17 +341,17 @@ def test_snapshot_different_properties_same_tags(user: UserClient, tag_id: str):
Devicehub must fail the Snapshot. Devicehub must fail the Snapshot.
""" """
# 1. Upload PC1 without hid but with tag # 1. Upload PC1 without hid but with tag
pc1 = file('basic.snapshot') pc1 = yaml2json('basic.snapshot')
pc1['device']['tags'] = [{'type': 'Tag', 'id': tag_id}] pc1['device']['tags'] = [{'type': 'Tag', 'id': tag_id}]
del pc1['device']['serialNumber'] del pc1['device']['serialNumber']
user.post(pc1, res=Snapshot) user.post(json_encode(pc1), res=Snapshot)
# 2. Upload PC2 without hid, a different characteristic than PC1, but with same tag # 2. Upload PC2 without hid, a different characteristic than PC1, but with same tag
pc2 = file('basic.snapshot') pc2 = yaml2json('basic.snapshot')
pc2['uuid'] = uuid4() pc2['uuid'] = uuid4()
pc2['device']['tags'] = pc1['device']['tags'] pc2['device']['tags'] = pc1['device']['tags']
# pc2 model is unknown but pc1 model is set = different property # pc2 model is unknown but pc1 model is set = different property
del pc2['device']['model'] del pc2['device']['model']
user.post(pc2, res=Snapshot, status=MismatchBetweenProperties) user.post(json_encode(pc2), res=Snapshot, status=MismatchBetweenProperties)
@pytest.mark.mvp @pytest.mark.mvp
@ -368,14 +368,14 @@ def test_snapshot_component_containing_components(user: UserClient):
This test avoids this until an appropriate use-case is presented. This test avoids this until an appropriate use-case is presented.
""" """
s = file('basic.snapshot') s = yaml2json('basic.snapshot')
s['device'] = { s['device'] = {
'type': 'Processor', 'type': 'Processor',
'serialNumber': 'foo', 'serialNumber': 'foo',
'manufacturer': 'bar', 'manufacturer': 'bar',
'model': 'baz' 'model': 'baz'
} }
user.post(s, res=Snapshot, status=ValidationError) user.post(json_encode(s), res=Snapshot, status=ValidationError)
@pytest.mark.mvp @pytest.mark.mvp
@ -386,7 +386,7 @@ def test_ereuse_price(user: UserClient):
This tests ensures that only the last erasure is picked up, as This tests ensures that only the last erasure is picked up, as
erasures have always custom endTime value set. erasures have always custom endTime value set.
""" """
s = file('erase-sectors.snapshot') s = yaml2json('erase-sectors.snapshot')
assert s['components'][0]['actions'][0]['endTime'] == '2018-06-01T09:12:06+02:00' assert s['components'][0]['actions'][0]['endTime'] == '2018-06-01T09:12:06+02:00'
s['device']['type'] = 'Server' s['device']['type'] = 'Server'
snapshot = snapshot_and_check(user, s, action_types=( snapshot = snapshot_and_check(user, s, action_types=(
@ -408,7 +408,7 @@ def test_erase_privacy_standards_endtime_sort(user: UserClient):
This tests ensures that only the last erasure is picked up, as This tests ensures that only the last erasure is picked up, as
erasures have always custom endTime value set. erasures have always custom endTime value set.
""" """
s = file('erase-sectors.snapshot') s = yaml2json('erase-sectors.snapshot')
assert s['components'][0]['actions'][0]['endTime'] == '2018-06-01T09:12:06+02:00' assert s['components'][0]['actions'][0]['endTime'] == '2018-06-01T09:12:06+02:00'
snapshot = snapshot_and_check(user, s, action_types=( snapshot = snapshot_and_check(user, s, action_types=(
EraseSectors.t, EraseSectors.t,
@ -594,7 +594,7 @@ def test_pc_2(user: UserClient):
@pytest.mark.mvp @pytest.mark.mvp
def test_save_snapshot_in_file(app: Devicehub, user: UserClient): def test_save_snapshot_in_file(app: Devicehub, user: UserClient):
""" This test check if works the function save_snapshot_in_file """ """ This test check if works the function save_snapshot_in_file """
snapshot_no_hid = file('basic.snapshot.nohid') snapshot_no_hid = yaml2json('basic.snapshot.nohid')
tmp_snapshots = app.config['TMP_SNAPSHOTS'] tmp_snapshots = app.config['TMP_SNAPSHOTS']
path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors') path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors')
@ -638,9 +638,9 @@ def test_action_no_snapshot_without_save_file(app: Devicehub, user: UserClient):
@pytest.mark.mvp @pytest.mark.mvp
def test_save_snapshot_with_debug(app: Devicehub, user: UserClient): def test_save_snapshot_with_debug(app: Devicehub, user: UserClient):
""" This test check if works the function save_snapshot_in_file """ """ This test check if works the function save_snapshot_in_file """
snapshot_file = file('basic.snapshot.with_debug') snapshot_file = yaml2json('basic.snapshot.with_debug')
debug = snapshot_file['debug'] debug = snapshot_file['debug']
user.post(res=Snapshot, data=snapshot_file) user.post(res=Snapshot, data=json_encode(snapshot_file))
tmp_snapshots = app.config['TMP_SNAPSHOTS'] tmp_snapshots = app.config['TMP_SNAPSHOTS']
path_dir_base = os.path.join(tmp_snapshots, user.user['email']) path_dir_base = os.path.join(tmp_snapshots, user.user['email'])
@ -664,12 +664,12 @@ def test_backup_snapshot_with_errors(app: Devicehub, user: UserClient):
""" This test check if the file snapshot is create when some snapshot is wrong """ """ This test check if the file snapshot is create when some snapshot is wrong """
tmp_snapshots = app.config['TMP_SNAPSHOTS'] tmp_snapshots = app.config['TMP_SNAPSHOTS']
path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors') path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors')
snapshot_no_hid = file('basic.snapshot.badly_formed') snapshot_no_hid = yaml2json('basic.snapshot.badly_formed')
uuid = snapshot_no_hid['uuid'] uuid = snapshot_no_hid['uuid']
snapshot = {'software': '', 'version': '', 'uuid': ''} snapshot = {'software': '', 'version': '', 'uuid': ''}
with pytest.raises(KeyError): with pytest.raises(KeyError):
response = user.post(res=Snapshot, data=snapshot_no_hid) response = user.post(res=Snapshot, data=json_encode(snapshot_no_hid))
files = [x for x in os.listdir(path_dir_base) if uuid in x] files = [x for x in os.listdir(path_dir_base) if uuid in x]
if files: if files:
@ -689,12 +689,12 @@ def test_snapshot_failed_missing_cpu_benchmark(app: Devicehub, user: UserClient)
""" This test check if the file snapshot is create when some snapshot is wrong """ """ This test check if the file snapshot is create when some snapshot is wrong """
tmp_snapshots = app.config['TMP_SNAPSHOTS'] tmp_snapshots = app.config['TMP_SNAPSHOTS']
path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors') path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors')
snapshot_error = file('failed.snapshot.500.missing-cpu-benchmark') snapshot_error = yaml2json('failed.snapshot.500.missing-cpu-benchmark')
uuid = snapshot_error['uuid'] uuid = snapshot_error['uuid']
snapshot = {'software': '', 'version': '', 'uuid': ''} snapshot = {'software': '', 'version': '', 'uuid': ''}
with pytest.raises(TypeError): with pytest.raises(TypeError):
user.post(res=Snapshot, data=snapshot_error) user.post(res=Snapshot, data=json_encode(snapshot_error))
files = [x for x in os.listdir(path_dir_base) if uuid in x] files = [x for x in os.listdir(path_dir_base) if uuid in x]
if files: if files:
@ -714,12 +714,12 @@ def test_snapshot_failed_missing_hdd_benchmark(app: Devicehub, user: UserClient)
""" This test check if the file snapshot is create when some snapshot is wrong """ """ This test check if the file snapshot is create when some snapshot is wrong """
tmp_snapshots = app.config['TMP_SNAPSHOTS'] tmp_snapshots = app.config['TMP_SNAPSHOTS']
path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors') path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors')
snapshot_error = file('failed.snapshot.500.missing-hdd-benchmark') snapshot_error = yaml2json('failed.snapshot.500.missing-hdd-benchmark')
uuid = snapshot_error['uuid'] uuid = snapshot_error['uuid']
snapshot = {'software': '', 'version': '', 'uuid': ''} snapshot = {'software': '', 'version': '', 'uuid': ''}
with pytest.raises(TypeError): with pytest.raises(TypeError):
user.post(res=Snapshot, data=snapshot_error) user.post(res=Snapshot, data=json_encode(snapshot_error))
files = [x for x in os.listdir(path_dir_base) if uuid in x] files = [x for x in os.listdir(path_dir_base) if uuid in x]
if files: if files:
@ -739,11 +739,11 @@ def test_snapshot_not_failed_null_chassis(app: Devicehub, user: UserClient):
""" This test check if the file snapshot is create when some snapshot is wrong """ """ This test check if the file snapshot is create when some snapshot is wrong """
tmp_snapshots = app.config['TMP_SNAPSHOTS'] tmp_snapshots = app.config['TMP_SNAPSHOTS']
path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors') path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors')
snapshot_error = file('desktop-9644w8n-lenovo-0169622.snapshot') snapshot_error = yaml2json('desktop-9644w8n-lenovo-0169622.snapshot')
snapshot_error['device']['chassis'] = None snapshot_error['device']['chassis'] = None
uuid = snapshot_error['uuid'] uuid = snapshot_error['uuid']
snapshot, res = user.post(res=Snapshot, data=snapshot_error) snapshot, res = user.post(res=Snapshot, data=json_encode(snapshot_error))
shutil.rmtree(tmp_snapshots) shutil.rmtree(tmp_snapshots)
@ -757,12 +757,12 @@ def test_snapshot_failed_missing_chassis(app: Devicehub, user: UserClient):
""" This test check if the file snapshot is create when some snapshot is wrong """ """ This test check if the file snapshot is create when some snapshot is wrong """
tmp_snapshots = app.config['TMP_SNAPSHOTS'] tmp_snapshots = app.config['TMP_SNAPSHOTS']
path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors') path_dir_base = os.path.join(tmp_snapshots, user.user['email'], 'errors')
snapshot_error = file('failed.snapshot.422.missing-chassis') snapshot_error = yaml2json('failed.snapshot.422.missing-chassis')
uuid = snapshot_error['uuid'] uuid = snapshot_error['uuid']
snapshot = {'software': '', 'version': '', 'uuid': ''} snapshot = {'software': '', 'version': '', 'uuid': ''}
with pytest.raises(TypeError): with pytest.raises(TypeError):
user.post(res=Snapshot, data=snapshot_error) user.post(res=Snapshot, data=json_encode(snapshot_error))
files = [x for x in os.listdir(path_dir_base) if uuid in x] files = [x for x in os.listdir(path_dir_base) if uuid in x]
if files: if files:
@ -798,9 +798,9 @@ def test_snapshot_not_failed_end_time_bug(app: Devicehub, user: UserClient):
""" This test check if the end_time != 0001-01-01 00:00:00+00:00 """ This test check if the end_time != 0001-01-01 00:00:00+00:00
and then we get a /devices, this create a crash and then we get a /devices, this create a crash
""" """
snapshot_file = file('asus-end_time_bug88.snapshot') snapshot_file = yaml2json('asus-end_time_bug88.snapshot')
snapshot_file['endTime'] = '2001-01-01 00:00:00+00:00' snapshot_file['endTime'] = '2001-01-01 00:00:00+00:00'
snapshot, _ = user.post(res=Snapshot, data=snapshot_file) snapshot, _ = user.post(res=Snapshot, data=json_encode(snapshot_file))
device, _ = user.get(res=m.Device, item=snapshot['device']['devicehubID']) device, _ = user.get(res=m.Device, item=snapshot['device']['devicehubID'])
end_times = [x['endTime'] for x in device['actions']] end_times = [x['endTime'] for x in device['actions']]

View file

@ -19,7 +19,7 @@ from ereuse_devicehub.resources.tag import Tag
from ereuse_devicehub.resources.tag.view import CannotCreateETag, LinkedToAnotherDevice, \ from ereuse_devicehub.resources.tag.view import CannotCreateETag, LinkedToAnotherDevice, \
TagNotLinked TagNotLinked
from tests import conftest from tests import conftest
from tests.conftest import file from tests.conftest import file, yaml2json, json_encode
@pytest.mark.mvp @pytest.mark.mvp
@ -319,9 +319,9 @@ def test_tag_secondary_workbench_link_find(user: UserClient):
with pytest.raises(ResourceNotFound): with pytest.raises(ResourceNotFound):
Tag.from_an_id('nope').one() Tag.from_an_id('nope').one()
s = file('basic.snapshot') s = yaml2json('basic.snapshot')
s['device']['tags'] = [{'id': 'foo', 'secondary': 'bar', 'type': 'Tag'}] s['device']['tags'] = [{'id': 'foo', 'secondary': 'bar', 'type': 'Tag'}]
snapshot, _ = user.post(s, res=Snapshot) snapshot, _ = user.post(json_encode(s), res=Snapshot)
device, _ = user.get(res=Device, item=snapshot['device']['devicehubID']) device, _ = user.get(res=Device, item=snapshot['device']['devicehubID'])
assert device['tags'][0]['id'] == 'foo' assert device['tags'][0]['id'] == 'foo'
assert device['tags'][0]['secondary'] == 'bar' assert device['tags'][0]['secondary'] == 'bar'

View file

@ -11,7 +11,7 @@ from ereuse_devicehub.resources.action.models import RateComputer, BenchmarkProc
from ereuse_devicehub.resources.device.exceptions import NeedsId from ereuse_devicehub.resources.device.exceptions import NeedsId
from ereuse_devicehub.resources.device.models import Device from ereuse_devicehub.resources.device.models import Device
from ereuse_devicehub.resources.tag.model import Tag from ereuse_devicehub.resources.tag.model import Tag
from tests.conftest import file, file_workbench from tests.conftest import file, file_workbench, yaml2json, json_encode
@pytest.mark.mvp @pytest.mark.mvp
@ -20,18 +20,18 @@ def test_workbench_server_condensed(user: UserClient):
condensed in only one big ``Snapshot`` file, as described condensed in only one big ``Snapshot`` file, as described
in the docs. in the docs.
""" """
s = file('workbench-server-1.snapshot') s = yaml2json('workbench-server-1.snapshot')
s['device']['actions'].append(file('workbench-server-2.stress-test')) s['device']['actions'].append(yaml2json('workbench-server-2.stress-test'))
s['components'][4]['actions'].extend(( s['components'][4]['actions'].extend((
file('workbench-server-3.erase'), yaml2json('workbench-server-3.erase'),
file('workbench-server-4.install') yaml2json('workbench-server-4.install')
)) ))
s['components'][5]['actions'].append(file('workbench-server-3.erase')) s['components'][5]['actions'].append(yaml2json('workbench-server-3.erase'))
# Create tags # Create tags
for t in s['device']['tags']: for t in s['device']['tags']:
user.post({'id': t['id']}, res=Tag) user.post({'id': t['id']}, res=Tag)
snapshot, _ = user.post(res=em.Snapshot, data=s) snapshot, _ = user.post(res=em.Snapshot, data=json_encode(s))
pc_id = snapshot['device']['id'] pc_id = snapshot['device']['id']
cpu_id = snapshot['components'][3]['id'] cpu_id = snapshot['components'][3]['id']
ssd_id= snapshot['components'][4]['id'] ssd_id= snapshot['components'][4]['id']
@ -77,28 +77,28 @@ def test_workbench_server_phases(user: UserClient):
actions.html#snapshots-from-workbench>`_. actions.html#snapshots-from-workbench>`_.
""" """
# 1. Snapshot with sync / rate / benchmarks / test data storage # 1. Snapshot with sync / rate / benchmarks / test data storage
s = file('workbench-server-1.snapshot') s = yaml2json('workbench-server-1.snapshot')
snapshot, _ = user.post(res=em.Snapshot, data=s) snapshot, _ = user.post(res=em.Snapshot, data=json_encode(s))
assert not snapshot['closed'], 'Snapshot must be waiting for the new actions' assert not snapshot['closed'], 'Snapshot must be waiting for the new actions'
# 2. stress test # 2. stress test
st = file('workbench-server-2.stress-test') st = yaml2json('workbench-server-2.stress-test')
st['snapshot'] = snapshot['id'] st['snapshot'] = snapshot['id']
stress_test, _ = user.post(res=em.StressTest, data=st) stress_test, _ = user.post(res=em.StressTest, data=st)
# 3. erase # 3. erase
ssd_id, hdd_id = snapshot['components'][4]['id'], snapshot['components'][5]['id'] ssd_id, hdd_id = snapshot['components'][4]['id'], snapshot['components'][5]['id']
e = file('workbench-server-3.erase') e = yaml2json('workbench-server-3.erase')
e['snapshot'], e['device'] = snapshot['id'], ssd_id e['snapshot'], e['device'] = snapshot['id'], ssd_id
erase1, _ = user.post(res=em.EraseSectors, data=e) erase1, _ = user.post(res=em.EraseSectors, data=e)
# 3 bis. a second erase # 3 bis. a second erase
e = file('workbench-server-3.erase') e = yaml2json('workbench-server-3.erase')
e['snapshot'], e['device'] = snapshot['id'], hdd_id e['snapshot'], e['device'] = snapshot['id'], hdd_id
erase2, _ = user.post(res=em.EraseSectors, data=e) erase2, _ = user.post(res=em.EraseSectors, data=e)
# 4. Install # 4. Install
i = file('workbench-server-4.install') i = yaml2json('workbench-server-4.install')
i['snapshot'], i['device'] = snapshot['id'], ssd_id i['snapshot'], i['device'] = snapshot['id'], ssd_id
install, _ = user.post(res=em.Install, data=i) install, _ = user.post(res=em.Install, data=i)
@ -317,7 +317,7 @@ def test_workbench_fixtures(file: pathlib.Path, user: UserClient):
""" """
s = json.load(file.open()) s = json.load(file.open())
user.post(res=em.Snapshot, user.post(res=em.Snapshot,
data=s, data=json_encode(s),
status=201) status=201)

View file

@ -1 +0,0 @@
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0eXBlIjoiU25hcHNob3QiLCJ1dWlkIjoiMDA0MWQ4ZTgtNTY5Yy00NDUyLWIyOTktMDc0YjVmY2M2NDIyIiwic29mdHdhcmUiOiJXb3JrYmVuY2giLCJ2ZXJzaW9uIjoiMTIuMGIwIiwiY2xvc2VkIjp0cnVlLCJlbmRUaW1lIjoiMjAyMS0wNi0yOVQxMzo0NzoxNi42MTI5NjkrMDA6MDAiLCJlbGFwc2VkIjozMSwiZGV2aWNlIjp7ImFjdGlvbnMiOlt7ImVsYXBzZWQiOjEwLCJ0eXBlIjoiQmVuY2htYXJrUmFtU3lzYmVuY2giLCJyYXRlIjoxMC4wMDAxfV0sInR5cGUiOiJDb21wdXRlciIsIm1hbnVmYWN0dXJlciI6IkludGVsIENsaWVudCBTeXN0ZW1zIiwibW9kZWwiOiJOVUM2Q0FZSCIsInNlcmlhbE51bWJlciI6Ikc2QVk5MjIwMEw3OCIsImNoYXNzaXMiOiJWaXJ0dWFsIiwic2t1IjpudWxsLCJ2ZXJzaW9uIjoiSjI2ODQzLTQwOSJ9LCJjb21wb25lbnRzIjpbeyJhY3Rpb25zIjpbeyJlbGFwc2VkIjoxMCwidHlwZSI6IkJlbmNobWFya1Byb2Nlc3NvclN5c2JlbmNoIiwicmF0ZSI6MTAuMDA2NH0seyJlbGFwc2VkIjowLCJ0eXBlIjoiQmVuY2htYXJrUHJvY2Vzc29yIiwicmF0ZSI6MTE5ODAuOH1dLCJ0eXBlIjoiUHJvY2Vzc29yIiwibWFudWZhY3R1cmVyIjoiSW50ZWwgQ29ycC4iLCJtb2RlbCI6IkludGVsIENlbGVyb24gQ1BVIEozNDU1IEAgMS41MEdIeiIsInNlcmlhbE51bWJlciI6bnVsbCwic3BlZWQiOjEuODIxNjk0MDAwMDAwMDAwMSwiYWRkcmVzcyI6NjQsImNvcmVzIjo0LCJ0aHJlYWRzIjo0LCJicmFuZCI6IkNlbGVyb24iLCJnZW5lcmF0aW9uIjpudWxsfSx7ImFjdGlvbnMiOltdLCJ0eXBlIjoiUmFtTW9kdWxlIiwibWFudWZhY3R1cmVyIjoiVW5kZSIsIm1vZGVsIjoiQ1Q0RzNTMTg2REpNLk04RlAiLCJzZXJpYWxOdW1iZXIiOiJFMDgyMjRGRSIsImZvcm1hdCI6IlNPRElNTSIsInNpemUiOjQwOTYuMCwiaW50ZXJmYWNlIjoiRERSMyIsInNwZWVkIjoxODY2LjB9LHsiYWN0aW9ucyI6W3siZWxhcHNlZCI6MiwidHlwZSI6IkJlbmNobWFya0RhdGFTdG9yYWdlIiwicmVhZFNwZWVkIjozNjUuMCwid3JpdGVTcGVlZCI6MTYxLjB9XSwidHlwZSI6IkhhcmREcml2ZSIsIm1hbnVmYWN0dXJlciI6bnVsbCwibW9kZWwiOiJLSU5HU1RPTiBTQTQwMFMzIiwic2VyaWFsTnVtYmVyIjoiNTAwMjZCNzM4MEM5MTA5QSIsInNpemUiOjEyMDAzNC4xMjM3NzYsImludGVyZmFjZSI6IkFUQSIsInZhcmlhbnQiOiJCMUg1In0seyJhY3Rpb25zIjpbXSwidHlwZSI6IkdyYXBoaWNDYXJkIiwibWFudWZhY3R1cmVyIjoiSW50ZWwgQ29ycG9yYXRpb24iLCJtb2RlbCI6IkludGVsIENvcnBvcmF0aW9uIiwic2VyaWFsTnVtYmVyIjpudWxsLCJtZW1vcnkiOm51bGx9LHsiYWN0aW9ucyI6W10sInR5cGUiOiJOZXR3b3JrQWRhcHRlciIsIm1hbnVmYWN0dXJlciI6IkludGVsIENvcnBvcmF0aW9uIiwibW9kZWwiOiJJbnRlbCBDb3Jwb3JhdGlvbiIsInNlcmlhbE51bWJlciI6bnVsbCwic3BlZWQiOm51bGwsInZhcmlhbnQiOiIxMCIsIndpcmVsZXNzIjpmYWxzZX0seyJhY3Rpb25zIjpbXSwidHlwZSI6Ik5ldHdvcmtBZGFwdGVyIiwibWFudWZhY3R1cmVyIjoiUmVhbHRlayBTZW1pY29uZHVjdG9yIENvLiwgTHRkLiIsIm1vZGVsIjoiUlRMODExMS84MTY4Lzg0MTEgUENJIEV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBDb250cm9sbGVyIiwic2VyaWFsTnVtYmVyIjoiMWM6Njk6N2E6MDM6ODU6ZWQiLCJzcGVlZCI6MTAwMC4wLCJ2YXJpYW50IjoiMTUiLCJ3aXJlbGVzcyI6ZmFsc2V9LHsiYWN0aW9ucyI6W10sInR5cGUiOiJTb3VuZENhcmQiLCJtYW51ZmFjdHVyZXIiOiJJbnRlbCBDb3Jwb3JhdGlvbiIsIm1vZGVsIjoiQXRvbS9DZWxlcm9uL1BlbnRpdW0gUHJvY2Vzc29yIE40MjAwL04zMzUwL0UzOTAwIFNlcmllcyBBdWRpbyBDbHVzdGVyIiwic2VyaWFsTnVtYmVyIjpudWxsfSx7ImFjdGlvbnMiOltdLCJ0eXBlIjoiTW90aGVyYm9hcmQiLCJtYW51ZmFjdHVyZXIiOiJJbnRlbCBDb3Jwb3JhdGlvbiIsIm1vZGVsIjoiTlVDNkNBWUIiLCJzZXJpYWxOdW1iZXIiOiJHRUFZOTIxMDBVUjUiLCJ1c2IiOjEsImZpcmV3aXJlIjowLCJzZXJpYWwiOjIsInBjbWNpYSI6MCwic2xvdHMiOjAsImJpb3NEYXRlIjoiMjAxOS0wMi0xOVQwMDowMDowMCIsInZlcnNpb24iOiJBWUFQTENFTC44NkEuMDA2MC4yMDE5LjAyMTkuMTUyNyIsInJhbVNsb3RzIjo0LCJyYW1NYXhTaXplIjozMn1dfQ.7HgnMZhOIqczfYOHyqKp0YcdWBZxj2P7vbe8RbDcGpU