trade test for documents
This commit is contained in:
parent
020e6afd53
commit
443464c9b8
|
@ -21,7 +21,7 @@ from ereuse_devicehub.db import db
|
|||
from ereuse_devicehub.client import UserClient, Client
|
||||
from ereuse_devicehub.devicehub import Devicehub
|
||||
from ereuse_devicehub.resources import enums
|
||||
from ereuse_devicehub.resources.hash_reports import ReportHash
|
||||
from ereuse_devicehub.resources.hash_reports import ReportHash
|
||||
from ereuse_devicehub.resources.user.models import User
|
||||
from ereuse_devicehub.resources.agent.models import Person
|
||||
from ereuse_devicehub.resources.lot.models import Lot
|
||||
|
@ -378,7 +378,7 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
|
|||
item='{}/devices'.format(lot['id']),
|
||||
query=devices[:7])
|
||||
|
||||
# the manager shares the temporary lot with the SCRAP as an incoming lot
|
||||
# the manager shares the temporary lot with the SCRAP as an incoming lot
|
||||
# for the CRAP to confirm it
|
||||
request_post = {
|
||||
'type': 'Trade',
|
||||
|
@ -394,17 +394,19 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
|
|||
user.post(res=models.Action, data=request_post)
|
||||
trade = models.Trade.query.one()
|
||||
|
||||
assert trade.devices[0].actions[-2].t == 'Trade'
|
||||
assert trade.devices[0].actions[-1].t == 'Confirm'
|
||||
assert trade.devices[0].actions[-1].user == trade.user_to
|
||||
|
||||
# the SCRAP confirms 3 of the 10 devices in its outgoing lot
|
||||
request_confirm = {
|
||||
'type': 'Confirm',
|
||||
'action': trade.id,
|
||||
'devices': [snap1['device']['id'], snap2['device']['id'], snap3['device']['id']]
|
||||
}
|
||||
assert trade.devices[0].actions[-2].t == 'Trade'
|
||||
assert trade.devices[0].actions[-1].t == 'Confirm'
|
||||
assert trade.devices[0].actions[-1].user == trade.user_to
|
||||
|
||||
# import pdb; pdb.set_trace()
|
||||
user2.post(res=models.Action, data=request_confirm)
|
||||
|
||||
assert trade.devices[0].actions[-1].t == 'Confirm'
|
||||
assert trade.devices[0].actions[-1].user == trade.user_from
|
||||
n_actions = len(trade.devices[0].actions)
|
||||
|
@ -438,8 +440,8 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
|
|||
'type': 'Confirm',
|
||||
'action': trade.id,
|
||||
'devices': [
|
||||
snap1['device']['id'],
|
||||
snap2['device']['id'],
|
||||
snap1['device']['id'],
|
||||
snap2['device']['id'],
|
||||
snap3['device']['id'],
|
||||
snap4['device']['id'],
|
||||
snap5['device']['id'],
|
||||
|
@ -457,7 +459,7 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
|
|||
assert trade.devices[-1].actions[-1].user == trade.user_from
|
||||
assert len(trade.devices[0].actions) == n_actions
|
||||
|
||||
# The manager remove one device of the lot and automaticaly
|
||||
# The manager remove one device of the lot and automaticaly
|
||||
# is create one revoke action
|
||||
device_10 = trade.devices[-1]
|
||||
lot, _ = user.delete({},
|
||||
|
@ -565,7 +567,7 @@ def test_confirmRevoke(user: UserClient, user2: UserClient):
|
|||
item='{}/devices'.format(lot['id']),
|
||||
query=devices)
|
||||
|
||||
# the manager shares the temporary lot with the SCRAP as an incoming lot
|
||||
# the manager shares the temporary lot with the SCRAP as an incoming lot
|
||||
# for the CRAP to confirm it
|
||||
request_post = {
|
||||
'type': 'Trade',
|
||||
|
@ -586,8 +588,8 @@ def test_confirmRevoke(user: UserClient, user2: UserClient):
|
|||
'type': 'Confirm',
|
||||
'action': trade.id,
|
||||
'devices': [
|
||||
snap1['device']['id'],
|
||||
snap2['device']['id'],
|
||||
snap1['device']['id'],
|
||||
snap2['device']['id'],
|
||||
snap3['device']['id'],
|
||||
snap4['device']['id'],
|
||||
snap5['device']['id'],
|
||||
|
@ -604,7 +606,7 @@ def test_confirmRevoke(user: UserClient, user2: UserClient):
|
|||
assert trade.devices[-1].actions[-1].t == 'Confirm'
|
||||
assert trade.devices[-1].actions[-1].user == trade.user_from
|
||||
|
||||
# The manager remove one device of the lot and automaticaly
|
||||
# The manager remove one device of the lot and automaticaly
|
||||
# is create one revoke action
|
||||
device_10 = trade.devices[-1]
|
||||
lot, _ = user.delete({},
|
||||
|
@ -704,3 +706,182 @@ def test_add_document_to_lot(user: UserClient, user2: UserClient, client: Client
|
|||
user2.get(res=TradeDocument, item=doc['id'], status=404)
|
||||
user2.delete(res=TradeDocument, item=doc['id'], status=404)
|
||||
shutil.rmtree(path)
|
||||
|
||||
|
||||
@pytest.mark.mvp
|
||||
@pytest.mark.usefixtures(conftest.app_context.__name__)
|
||||
def test_usecase1_document(user: UserClient, user2: UserClient):
|
||||
"""Example of one usecase about confirmation"""
|
||||
# the pRp (manatest_usecase_confirmationger) creates a temporary lot
|
||||
lot, _ = user.post({'name': 'MyLot'}, res=Lot)
|
||||
path_dir_base = os.path.join(app.config['PATH_DOCUMENTS_STORAGE'] , user.email)
|
||||
path = os.path.join(path_dir_base, lot['id'])
|
||||
data = {'lot': lot['id'], 'file_name': 'test.csv'}
|
||||
base64_bytes = base64.b64encode(b'This is a test')
|
||||
base64_string = base64_bytes.decode('utf-8')
|
||||
data['file'] = base64_string
|
||||
user.post(res=TradeDocument, data=data)
|
||||
user.post(res=TradeDocument, data=data)
|
||||
|
||||
# the manager shares the temporary lot with the SCRAP as an incoming lot
|
||||
# for the CRAP to confirm it
|
||||
request_post = {
|
||||
'type': 'Trade',
|
||||
'devices': [],
|
||||
'userFrom': user2.email,
|
||||
'userTo': user.email,
|
||||
'price': 10,
|
||||
'date': "2020-12-01T02:00:00+00:00",
|
||||
'lot': lot['id'],
|
||||
'confirm': True,
|
||||
}
|
||||
|
||||
user.post(res=models.Action, data=request_post)
|
||||
trade = models.Trade.query.one()
|
||||
|
||||
assert trade.documents[0].actions[-2].t == 'Trade'
|
||||
assert trade.documents[0].actions[-1].t == 'Confirm'
|
||||
assert trade.documents[0].actions[-1].user == trade.user_to
|
||||
assert trade.documents[1].actions[-2].t == 'Trade'
|
||||
assert trade.documents[1].actions[-1].t == 'Confirm'
|
||||
assert trade.documents[1].actions[-1].user == trade.user_to
|
||||
assert trade.documents[0].path_name != trade.documents[1].path_name
|
||||
|
||||
# ========
|
||||
# import pdb; pdb.set_trace()
|
||||
# the SCRAP confirms 1 of the 2 documents in its outgoing lot
|
||||
request_confirm = {
|
||||
'type': 'Confirm',
|
||||
'action': trade.id,
|
||||
'documents': [trade.documents[0].id]
|
||||
}
|
||||
|
||||
user2.post(res=models.Action, data=request_confirm)
|
||||
assert trade.documents[0].actions[-1].t == 'Confirm'
|
||||
assert trade.documents[0].actions[-1].user == trade.user_from
|
||||
n_actions = len(trade.documents[0].actions)
|
||||
|
||||
# check validation error
|
||||
# request_confirm = {
|
||||
# 'type': 'Confirm',
|
||||
# 'action': trade.id,
|
||||
# 'devices': [
|
||||
# snap10['device']['id']
|
||||
# ]
|
||||
# }
|
||||
|
||||
# user2.post(res=models.Action, data=request_confirm, status=422)
|
||||
|
||||
|
||||
# ========
|
||||
shutil.rmtree(path)
|
||||
"""
|
||||
# The manager add 3 device more into the lot
|
||||
lot, _ = user.post({},
|
||||
res=Lot,
|
||||
item='{}/devices'.format(lot['id']),
|
||||
query=devices[7:])
|
||||
|
||||
assert trade.devices[-1].actions[-2].t == 'Trade'
|
||||
assert trade.devices[-1].actions[-1].t == 'Confirm'
|
||||
assert trade.devices[-1].actions[-1].user == trade.user_to
|
||||
assert len(trade.devices[0].actions) == n_actions
|
||||
|
||||
|
||||
# the SCRAP confirms the rest of devices
|
||||
request_confirm = {
|
||||
'type': 'Confirm',
|
||||
'action': trade.id,
|
||||
'devices': [
|
||||
snap1['device']['id'],
|
||||
snap2['device']['id'],
|
||||
snap3['device']['id'],
|
||||
snap4['device']['id'],
|
||||
snap5['device']['id'],
|
||||
snap6['device']['id'],
|
||||
snap7['device']['id'],
|
||||
snap8['device']['id'],
|
||||
snap9['device']['id'],
|
||||
snap10['device']['id']
|
||||
]
|
||||
}
|
||||
|
||||
user2.post(res=models.Action, data=request_confirm)
|
||||
assert trade.devices[-1].actions[-3].t == 'Trade'
|
||||
assert trade.devices[-1].actions[-1].t == 'Confirm'
|
||||
assert trade.devices[-1].actions[-1].user == trade.user_from
|
||||
assert len(trade.devices[0].actions) == n_actions
|
||||
|
||||
# The manager remove one device of the lot and automaticaly
|
||||
# is create one revoke action
|
||||
device_10 = trade.devices[-1]
|
||||
lot, _ = user.delete({},
|
||||
res=Lot,
|
||||
item='{}/devices'.format(lot['id']),
|
||||
query=devices[-1:], status=200)
|
||||
assert len(trade.lot.devices) == len(trade.devices) == 9
|
||||
assert not device_10 in trade.devices
|
||||
assert device_10.actions[-1].t == 'Revoke'
|
||||
|
||||
lot, _ = user.delete({},
|
||||
res=Lot,
|
||||
item='{}/devices'.format(lot['id']),
|
||||
query=devices[-1:], status=200)
|
||||
|
||||
assert device_10.actions[-1].t == 'Revoke'
|
||||
assert device_10.actions[-2].t == 'Confirm'
|
||||
|
||||
# the SCRAP confirms the revoke action
|
||||
request_confirm_revoke = {
|
||||
'type': 'ConfirmRevoke',
|
||||
'action': device_10.actions[-1].id,
|
||||
'devices': [
|
||||
snap10['device']['id']
|
||||
]
|
||||
}
|
||||
|
||||
user2.post(res=models.Action, data=request_confirm_revoke)
|
||||
assert device_10.actions[-1].t == 'ConfirmRevoke'
|
||||
assert device_10.actions[-2].t == 'Revoke'
|
||||
|
||||
request_confirm_revoke = {
|
||||
'type': 'ConfirmRevoke',
|
||||
'action': device_10.actions[-1].id,
|
||||
'devices': [
|
||||
snap9['device']['id']
|
||||
]
|
||||
}
|
||||
|
||||
# check validation error
|
||||
user2.post(res=models.Action, data=request_confirm_revoke, status=422)
|
||||
|
||||
|
||||
# The manager add again device_10
|
||||
assert len(trade.devices) == 9
|
||||
lot, _ = user.post({},
|
||||
res=Lot,
|
||||
item='{}/devices'.format(lot['id']),
|
||||
query=devices[-1:])
|
||||
|
||||
assert device_10.actions[-1].t == 'Confirm'
|
||||
assert device_10 in trade.devices
|
||||
assert len(trade.devices) == 10
|
||||
|
||||
|
||||
# the SCRAP confirms the action trade for device_10
|
||||
request_reconfirm = {
|
||||
'type': 'Confirm',
|
||||
'action': trade.id,
|
||||
'devices': [
|
||||
snap10['device']['id']
|
||||
]
|
||||
}
|
||||
user2.post(res=models.Action, data=request_reconfirm)
|
||||
assert device_10.actions[-1].t == 'Confirm'
|
||||
assert device_10.actions[-1].user == trade.user_from
|
||||
assert device_10.actions[-2].t == 'Confirm'
|
||||
assert device_10.actions[-2].user == trade.user_to
|
||||
assert device_10.actions[-3].t == 'ConfirmRevoke'
|
||||
assert len(device_10.actions) == 13
|
||||
|
||||
"""
|
||||
|
|
Reference in New Issue