示例#1
0
    def _test_ok(self, management_api, devices, **kwargs):
        aid = '1'
        device_id = '2'
        key = '''-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzogVU7RGDilbsoUt/DdH
VJvcepl0A5+xzGQ50cq1VE/Dyyy8Zp0jzRXCnnu9nu395mAFSZGotZVr+sWEpO3c
yC3VmXdBZmXmQdZqbdD/GuixJOYfqta2ytbIUPRXFN7/I7sgzxnXWBYXYmObYvdP
okP0mQanY+WKxp7Q16pt1RoqoAd0kmV39g13rFl35muSHbSBoAW3GBF3gO+mF5Ty
1ddp/XcgLOsmvNNjY+2HOD5F/RX0fs07mWnbD7x+xz7KEKjF+H7ZpkqCwmwCXaf0
iyYyh1852rti3Afw4mDxuVSD7sd9ggvYMc0QHIpQNkD4YWOhNiE1AB0zH57VbUYG
UwIDAQAB
-----END PUBLIC KEY-----
'''
        iddata = '{"foo":"bar"}'

        req = management_api.make_preauth_req(aid, device_id, iddata, key)
        _, rsp = management_api.preauthorize(req, **kwargs)
        assert rsp.status_code == 201

        devs = management_api.list_devices(**kwargs)
        assert len(devs) == 6

        found = [d for d in devs if d.id == device_id]
        assert len(found) == 1

        found = found[0]
        assert found.id == device_id
        assert found.id_data == iddata
        assert len(found.auth_sets) == 1

        auth_set = found.auth_sets[0]
        assert auth_set.id == aid
        assert auth_set.id_data == iddata
        assert compare_keys(auth_set.pubkey, key)
        assert auth_set.status == 'preauthorized'
示例#2
0
    def _test_ok(self, management_api, devices, **kwargs):
        aid = '1'
        device_id = '2'
        key = 'key'
        iddata = json.dumps({'foo': 'bar'})

        req = management_api.make_preauth_req(aid, device_id, iddata, key)
        _, rsp = management_api.preauthorize(req)
        assert rsp.status_code == 201

        devs = management_api.list_devices()
        assert len(devs) == 6

        found = [d for d in devs if d.id == device_id]
        assert len(found) == 1

        found = found[0]
        assert found.id == device_id
        assert found.id_data == iddata
        assert len(found.auth_sets) == 1

        auth_set = found.auth_sets[0]
        assert auth_set.id == aid
        assert auth_set.id_data == iddata
        assert auth_set.pubkey == key
        assert auth_set.status == 'preauthorized'
示例#3
0
    def _test_conflict(self, management_api, devices, **kwargs):
        existing = devices[0][0]
        req = management_api.make_preauth_req('1', '2', existing.identity,
                                              'key')
        try:
            _, rsp = management_api.preauthorize(req)
        except bravado.exception.HTTPError as e:
            assert e.response.status_code == 409

        devs = management_api.list_devices()
        assert len(devs) == 5
示例#4
0
    def _test_conflict(self, management_api, devices, **kwargs):
        existing = devices[0][0]
        req = management_api.make_preauth_req('1', '2', existing.identity,
                                              existing.public_key)
        try:
            _, rsp = management_api.preauthorize(req, **kwargs)
        except bravado.exception.HTTPError as e:
            assert e.response.status_code == 409
        else:
            assert False, "unexpected code " + str(rsp.status_code)

        devs = management_api.list_devices(**kwargs)
        assert len(devs) == 5
示例#5
0
    def _test_delete_authset_preauth_OK(self, management_api, devices,
                                        **kwargs):
        # preauthorize a device
        aid = 'aid-preauth'
        device_id = 'id-preauth'
        iddata = json.dumps({'mac': 'mac-preauth'})
        key = '''-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzogVU7RGDilbsoUt/DdH
VJvcepl0A5+xzGQ50cq1VE/Dyyy8Zp0jzRXCnnu9nu395mAFSZGotZVr+sWEpO3c
yC3VmXdBZmXmQdZqbdD/GuixJOYfqta2ytbIUPRXFN7/I7sgzxnXWBYXYmObYvdP
okP0mQanY+WKxp7Q16pt1RoqoAd0kmV39g13rFl35muSHbSBoAW3GBF3gO+mF5Ty
1ddp/XcgLOsmvNNjY+2HOD5F/RX0fs07mWnbD7x+xz7KEKjF+H7ZpkqCwmwCXaf0
iyYyh1852rti3Afw4mDxuVSD7sd9ggvYMc0QHIpQNkD4YWOhNiE1AB0zH57VbUYG
UwIDAQAB
-----END PUBLIC KEY-----
'''

        req = management_api.make_preauth_req(aid, device_id, iddata, key)
        _, rsp = management_api.preauthorize(req, **kwargs)

        assert rsp.status_code == 201

        # check device created
        dev = management_api.get_device(id=device_id, **kwargs)
        assert dev
        assert len(dev.auth_sets) == 1
        assert dev.auth_sets[0].status == 'preauthorized'
        assert dev.auth_sets[0].id == aid

        # delete auth set, check device deleted
        rsp = management_api.delete_authset(dev.id, aid, **kwargs)
        assert rsp.status_code == 204

        found = None
        try:
            found = management_api.get_device(id=device_id, **kwargs)
        except bravado.exception.HTTPError as e:
            assert e.response.status_code == 404

        assert not found

        # check all other devices intact
        after_devs = management_api.list_devices(**kwargs)
        assert len(after_devs) == len(devices)
示例#6
0
    def _test_bad_key(self, management_api, devices, **kwargs):
        aid = '1'
        device_id = '2'
        key = '''-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzogVU7RGDilbsoUt/DdH
VJvcepl0A5+xzGQ50cq1VE/Dyyy8Zp0jzRXCnnu9nu395mAFSZGotZVr+sWEpO3c
yC3VmXdBZmXmQdZqbdD/GuixJOYfqta2ytbIUPRXFN7/I7sgzxnXWBYXYmObYvdP
okP0mQanY+WKxp7Q16pt1RoqoAd0kmV39g13rFl35muSHbSBoAW3GBF3gO+mF5Ty
1ddp/XcgLOsmvNNjY+2HOD5F/RX0fs07mWnbD7x+xz7KEKjF+H7ZpkqCwmwCXaf0
iyYyh1852rti3Afw4mDxuVSD7sd9ggvYMc0QHIpQNkD4YWOhNiE1AB0zH57VbUYG
UwIDAQAB
'''
        iddata = '{"foo":"bar"}'

        req = management_api.make_preauth_req(aid, device_id, iddata, key)

        try:
            _, rsp = management_api.preauthorize(req, **kwargs)
        except bravado.exception.HTTPError as e:
            assert e.status_code == 400
            assert e.swagger_result.error == 'failed to decode preauth request: cannot decode public key'
示例#7
0
def do_make_devices(management_api, device_api, tenant_token=""):
    """
       Prepare a set of devices, including a 'preauthorized' one.
    """
    auth = {}
    if tenant_token != '':
        auth = management_api.make_auth(tenant_token=tenant_token)

    cnt = 5
    devs = make_devices(device_api, cnt, tenant_token)

    aid = AID
    device_id = DEVID
    iddata = IDDATA
    key = PUBKEY

    req = management_api.make_preauth_req(aid, device_id, iddata, key)
    _, rsp = management_api.preauthorize(req, **auth)

    assert rsp.status_code == 201

    devs = management_api.list_devices(**auth)
    assert len(devs) == cnt + 1