예제 #1
0
def machine_context(admin_user_client, service_client,  # NOQA
                    super_client):  # NOQA
    ctx = create_context(admin_user_client, create_project=True,
                         add_host=True)
    remove_schemas(service_client, ['fooConfig', 'barConfig', 'machine'])
    service_client.wait_success(service_client.create_dynamic_schema(
                                name='fooConfig',
                                parent='baseMachineConfig',
                                definition=FOO_DEFINITION,
                                roles=['project', 'owner', 'member',
                                       'superadmin', 'readonly']))
    service_client.wait_success(service_client.create_dynamic_schema(
                                name='barConfig',
                                parent='baseMachineConfig',
                                definition=BAR_DEFINITION,
                                roles=['project', 'owner', 'member',
                                       'superadmin', 'readonly']))
    service_client.wait_success(service_client.create_dynamic_schema(
                                name='machine',
                                parent='physicalHost',
                                definition=MACHINE_DEFINITION,
                                roles=['project', 'owner', 'member']))
    service_client.wait_success(service_client.create_dynamic_schema(
                                name='machine',
                                parent='physicalHost',
                                definition=SUPER_MACHINE_DEFINITION,
                                roles=['superadmin', 'admin']))
    service_client.wait_success(service_client.create_dynamic_schema(
                                name='machine',
                                parent='physicalHost',
                                definition=MACHINE_READ_ONLY_DEFINITION,
                                roles=['readonly', 'agent']))
    super_client.reload_schema()
    ctx.client.reload_schema()
    return ctx
예제 #2
0
def test_invalid_schema_definition(context, client, service_client):  # NOQA
    with pytest.raises(ApiError) as e:
        service_client.create_dynamic_schema(
            accountId=context.project.id,
            name=random_str(),
            parent='service',
            definition='{"fsadfasd":"fasdfdsf",}',
            roles=["project", "owner", "member"])
    assert e.value.error.status == 422
    assert e.value.error.fieldName == 'definition'
예제 #3
0
def test_invalid_schema_definition(context, client, service_client):  # NOQA
    with pytest.raises(ApiError) as e:
        service_client.create_dynamic_schema(
            accountId=context.project.id,
            name=random_str(),
            parent='service',
            definition='{"fsadfasd":"fasdfdsf",}',
            roles=["project", "owner", "member"])
    assert e.value.error.status == 422
    assert e.value.error.fieldName == 'definition'
예제 #4
0
def test_schema_lifecycle(context, client, service_client):  # NOQA
    schema = random_str()
    got_schema = client.by_id_schema(schema)
    assert got_schema is None

    made_schema = service_client.create_dynamic_schema(
        accountId=context.project.id,
        name=schema,
        parent='service',
        definition=DEFINITION,
        roles=["project", "owner", "member"])

    service_client.wait_success(made_schema)

    got_schema = client.by_id_schema(schema)
    assert got_schema is not None

    assert got_schema.resourceFields.fooBar.type == 'string'
    assert got_schema.resourceFields.fooBar.description == 'foo animal'

    made_schema = service_client.reload(made_schema)
    made_schema.remove()
    service_client.wait_success(made_schema)

    got_schema = client.by_id_schema(schema)
    assert got_schema is None
예제 #5
0
def test_schema_lifecycle(context, client, service_client):  # NOQA
    schema = random_str()
    got_schema = client.by_id_schema(schema)
    assert got_schema is None

    made_schema = service_client.create_dynamic_schema(
        accountId=context.project.id,
        name=schema,
        parent='service',
        definition=DEFINITION,
        roles=["project", "owner", "member"])

    service_client.wait_success(made_schema)

    got_schema = client.by_id_schema(schema)
    assert got_schema is not None

    assert got_schema.resourceFields.fooBar.type == 'string'
    assert got_schema.resourceFields.fooBar.description == 'foo animal'

    made_schema = service_client.reload(made_schema)
    made_schema.remove()
    service_client.wait_success(made_schema)

    got_schema = client.by_id_schema(schema)
    assert got_schema is None
예제 #6
0
def test_schema_roles(service_client, user_client, project_client):  # NOQA
    schema = random_str()
    got_schema = project_client.by_id_schema(schema)
    assert got_schema is None

    made_schema = service_client.create_dynamic_schema(
        name=schema,
        parent='baseMachineConfig',
        definition='''
        {
            "resourceFields": {
                 "fooBar": {
                      "type": "string",
                      "description": "foo animal"
                 }
            }
        }
        ''',
        roles=["project"])

    service_client.wait_success(made_schema)

    project_client.reload_schema()

    auth_check(project_client.schema, schema, 'r', {'fooBar': 'r'})

    made_schema = service_client.reload(made_schema)
    made_schema.remove()
    service_client.wait_success(made_schema)

    got_schema = project_client.by_id_schema(schema)
    assert got_schema is None

    made_schema2 = service_client.create_dynamic_schema(
        name=schema,
        parent='baseMachineConfig',
        definition='''
        {
            "resourceMethods" : ["GET", "PUT", "DELETE"],
            "collectionMethods" : [ "GET", "POST" ],
            "resourceFields": {
                 "fooBar": {
                      "type": "string",
                      "description": "foo animal",
                      "create": true,
                      "update": true
                 }
            }
        }
        ''',
        roles=["user"])

    service_client.wait_success(made_schema2)

    user_client.reload_schema()

    auth_check(user_client.schema, schema, 'crud', {'fooBar': 'cru'})

    made_schema2 = service_client.reload(made_schema2)
    made_schema2.remove()
    service_client.wait_success(made_schema2)

    got_schema = user_client.by_id_schema(schema)
    assert got_schema is None
예제 #7
0
def test_schema_roles(service_client, user_client, project_client):  # NOQA
    schema = random_str()
    got_schema = project_client.by_id_schema(schema)
    assert got_schema is None

    made_schema = service_client.create_dynamic_schema(
        name=schema,
        parent='baseMachineConfig',
        definition='''
        {
            "resourceFields": {
                 "fooBar": {
                      "type": "string",
                      "description": "foo animal"
                 }
            }
        }
        ''',
        roles=["project"])

    service_client.wait_success(made_schema)

    project_client.reload_schema()

    auth_check(project_client.schema, schema, 'r', {
        'fooBar': 'r'
    })

    made_schema = service_client.reload(made_schema)
    made_schema.remove()
    service_client.wait_success(made_schema)

    got_schema = project_client.by_id_schema(schema)
    assert got_schema is None

    made_schema2 = service_client.create_dynamic_schema(
        name=schema,
        parent='baseMachineConfig',
        definition='''
        {
            "resourceMethods" : ["GET", "PUT", "DELETE"],
            "collectionMethods" : [ "GET", "POST" ],
            "resourceFields": {
                 "fooBar": {
                      "type": "string",
                      "description": "foo animal",
                      "create": true,
                      "update": true
                 }
            }
        }
        ''',
        roles=["user"])

    service_client.wait_success(made_schema2)

    user_client.reload_schema()

    auth_check(user_client.schema, schema, 'crud', {
        'fooBar': 'cru'
    })

    made_schema2 = service_client.reload(made_schema2)
    made_schema2.remove()
    service_client.wait_success(made_schema2)

    got_schema = user_client.by_id_schema(schema)
    assert got_schema is None
예제 #8
0
def cleanup(service_client, schemas):  # NOQA
    remove_schemas(service_client, ['fooConfig', 'barConfig', 'machine',
                                    'host'])
    for schema in schemas:
        service_client.wait_success(
            service_client.create_dynamic_schema(schema))
예제 #9
0
def cleanup(service_client, schemas):  # NOQA
    remove_schemas(service_client, ['fooConfig', 'barConfig', 'machine'])
    for schema in schemas:
        service_client.wait_success(
            service_client.create_dynamic_schema(schema))