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
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'
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
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
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
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))
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))