def test_update_form_input_entry_normal_user_fail_no_permission( client: TestClient, db: Session) -> None: """Fail if the normal user doesn't have update permissions""" setup = form_input_permission_setup( db, permission_type=PermissionTypeEnum.update, permission_enabled=False) form_input = setup["form_input"] user = setup["user"] form_input_entry = create_random_form_input_table_entry(db) data = {"name": random_lower_string()} user_token_headers = authentication_token_from_email(client=client, email=user.email, db=db) response = client.put( (f"{settings.API_V1_STR}/interfaces/form-inputs/" f"{form_input.id}/entries/{form_input_entry.id}"), headers=user_token_headers, json=data, ) content = response.json() assert response.status_code == 403 assert content["detail"] == ( f"User ID {user.id} does not have update permissions for " f"interface ID {form_input.id}")
def test_delete_form_input_entry_normal_user(client: TestClient, db: Session) -> None: """Successful form input delete by a normal user""" setup = form_input_permission_setup( db, permission_type=PermissionTypeEnum.delete) form_input = setup["form_input"] user = setup["user"] form_input_entry = create_random_form_input_table_entry(db) user_token_headers = authentication_token_from_email(client=client, email=user.email, db=db) response = client.delete( (f"{settings.API_V1_STR}/interfaces/form-inputs/" f"{form_input.id}/entries/{form_input_entry.id}"), headers=user_token_headers, ) form_input_crud = crud.form_input.get_table_crud(db, id=form_input.id) stored_form_input_entry = form_input_crud.get(db, id=form_input_entry.id) content = response.json() assert response.status_code == 200 assert content["id"] == form_input_entry.id assert content["name"] == form_input_entry.name assert content["date_created"] == str(form_input_entry.date_created) assert content["an_integer"] == form_input_entry.an_integer assert content["node_id"] == form_input_entry.node_id assert stored_form_input_entry is None
def test_update_form_input_entry_normal_user(client: TestClient, db: Session) -> None: """Successful form input update by a normal user""" setup = form_input_permission_setup( db, permission_type=PermissionTypeEnum.update) form_input = setup["form_input"] user = setup["user"] form_input_entry = create_random_form_input_table_entry(db) data = {"name": random_lower_string()} user_token_headers = authentication_token_from_email(client=client, email=user.email, db=db) response = client.put( (f"{settings.API_V1_STR}/interfaces/form-inputs/" f"{form_input.id}/entries/{form_input_entry.id}"), headers=user_token_headers, json=data, ) content = response.json() assert response.status_code == 200 assert content["id"] == form_input_entry.id assert content["name"] == data["name"] assert content["date_created"] == str(form_input_entry.date_created) assert content["an_integer"] == form_input_entry.an_integer assert content["node_id"] == form_input_entry.node_id
def test_delete_form_input_entry_fail_interface_not_exist( client: TestClient, superuser_token_headers: dict, db: Session) -> None: """Fail if the specified interface doesn't exist""" form_input_entry = create_random_form_input_table_entry(db) response = client.delete( (f"{settings.API_V1_STR}/interfaces/form-inputs/" f"{-1}/entries/{form_input_entry.id}"), headers=superuser_token_headers, ) content = response.json() assert response.status_code == 404 assert content["detail"] == "Cannot find interface."
def test_delete_form_input_entry_fail_interface_table_not_created( client: TestClient, superuser_token_headers: dict, db: Session) -> None: """Fail if the specified interface doesn't have a backing table""" form_input = create_random_form_input_interface( db, table_name="fail_table_not_created5") form_input_entry = create_random_form_input_table_entry(db) response = client.delete( (f"{settings.API_V1_STR}/interfaces/form-inputs/" f"{form_input.id}/entries/{form_input_entry.id}"), headers=superuser_token_headers, ) content = response.json() assert response.status_code == 403 assert content["detail"] == ( "The backing table for this interface has not been created.")
def test_read_form_input_entries(client: TestClient, superuser_token_headers: dict, db: Session) -> None: """Successful form input entry read multi""" form_input = crud.form_input.get_by_template_table_name( db, table_name="form_input_test_table") form_input_entries = [ create_random_form_input_table_entry(db) for i in range(10) ] response = client.get( f"{settings.API_V1_STR}/interfaces/form-inputs/{form_input.id}/entries/", headers=superuser_token_headers, ) content = response.json() assert response.status_code == 200 stored_ids = [c["id"] for c in content["records"]] for form_input_entry in form_input_entries: assert form_input_entry.id in stored_ids
def test_read_form_input_entries_normal_user_fail_no_permission( client: TestClient, db: Session) -> None: """Fail if the user doesn't have read permission on the interface""" form_input = crud.form_input.get_by_template_table_name( db, table_name="form_input_test_table") user = create_random_user(db) [create_random_form_input_table_entry(db) for i in range(10)] user_token_headers = authentication_token_from_email(client=client, email=user.email, db=db) response = client.get( f"{settings.API_V1_STR}/interfaces/form-inputs/{form_input.id}/entries/", headers=user_token_headers, ) content = response.json() assert response.status_code == 403 assert content["detail"] == ( f"User ID {user.id} does not have read permissions for " f"interface ID {form_input.id}")
def test_read_form_input_entry(client: TestClient, superuser_token_headers: dict, db: Session) -> None: """Successful form input entry read one""" form_input = crud.form_input.get_by_template_table_name( db, table_name="form_input_test_table") form_input_entry = create_random_form_input_table_entry(db) response = client.get( (f"{settings.API_V1_STR}/interfaces/form-inputs/" f"{form_input.id}/entries/{form_input_entry.id}"), headers=superuser_token_headers, ) content = response.json() assert response.status_code == 200 assert content["id"] == form_input_entry.id assert content["name"] == form_input_entry.name assert content["date_created"] == str(form_input_entry.date_created) assert content["an_integer"] == form_input_entry.an_integer assert content["node_id"] == form_input_entry.node_id assert content["interface_id"] == form_input.id
def test_read_form_input_entries_normal_user(client: TestClient, db: Session) -> None: """Successful form input read multi normal user""" setup = form_input_permission_setup( db, permission_type=PermissionTypeEnum.read) form_input = setup["form_input"] user = setup["user"] form_input_entries = [ create_random_form_input_table_entry(db) for i in range(10) ] user_token_headers = authentication_token_from_email(client=client, email=user.email, db=db) response = client.get( f"{settings.API_V1_STR}/interfaces/form-inputs/{form_input.id}/entries/", headers=user_token_headers, ) content = response.json() assert response.status_code == 200 stored_ids = [c["id"] for c in content["records"]] for form_input_entry in form_input_entries: assert form_input_entry.id in stored_ids