def test_tag_manual_link_search(app: Devicehub, user: UserClient): """Tests linking manually a tag through PUT /tags/<id>/device/<id> Checks search has the term. """ with app.app_context(): g.user = User.query.one() db.session.add(Tag('foo-bar', secondary='foo-sec', owner_id=user.user['id'])) desktop = Desktop(serial_number='foo', chassis=ComputerChassis.AllInOne, owner_id=user.user['id']) db.session.add(desktop) db.session.commit() desktop_id = desktop.id devicehub_id = desktop.devicehub_id user.put({}, res=Tag, item='foo-bar/device/{}'.format(desktop_id), status=204) device, _ = user.get(res=Device, item=devicehub_id) assert 'foo-bar' in [x['id'] for x in device['tags']] # Device already linked # Just returns an OK to conform to PUT as anything changes user.put({}, res=Tag, item='foo-sec/device/{}'.format(desktop_id), status=204) # Secondary IDs are case insensitive user.put({}, res=Tag, item='FOO-BAR/device/{}'.format(desktop_id), status=204) user.put({}, res=Tag, item='FOO-SEC/device/{}'.format(desktop_id), status=204) # cannot link to another device when already linked user.put({}, res=Tag, item='foo-bar/device/99', status=LinkedToAnotherDevice) i, _ = user.get(res=Device, query=[('search', 'foo-bar')]) assert i['items'] i, _ = user.get(res=Device, query=[('search', 'foo-sec')]) assert i['items'] i, _ = user.get(res=Device, query=[('search', 'foo')]) assert i['items']
def test_create_tag_with_device(user: UserClient): """Creates a tag specifying linked with one device.""" g.user = User.query.one() pc = Desktop(serial_number='sn1', chassis=ComputerChassis.Tower, owner_id=user.user['id']) db.session.add(pc) db.session.commit() tag = Tag(id='bar', owner_id=user.user['id']) db.session.add(tag) db.session.commit() data = '{tag_id}/device/{device_id}'.format(tag_id=tag.id, device_id=pc.id) user.put({}, res=Tag, item=data, status=204) user.get(res=Tag, item='{}/device'.format(tag.id)) user.delete({}, res=Tag, item=data, status=204) res, _ = user.get(res=Tag, item='{}/device'.format(tag.id), status=422) assert res['type'] == 'TagNotLinked'