Skip to content

Commit 410b560

Browse files
committed
Add functional tests for permissions claims
1 parent e02b920 commit 410b560

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

tests/functional/test_generate_dataset.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,3 +641,51 @@ def test_generate_dataset_allows_sufficient_permissions(
641641
)
642642

643643
assert output_path.exists()
644+
645+
646+
def test_generate_dataset_warns_on_missing_permissions_for_dummy_data(
647+
call_cli, tmp_path, caplog
648+
):
649+
dataset_definition_path = tmp_path / "dataset_definition.py"
650+
dataset_definition_path.write_text(dataset_definition_with_restricted_table)
651+
output_path = tmp_path / "results.csv"
652+
653+
call_cli(
654+
"generate-dataset",
655+
dataset_definition_path,
656+
"--output",
657+
output_path,
658+
)
659+
660+
assert output_path.exists()
661+
662+
output = caplog.text
663+
assert "restricted_table" in output
664+
assert 'claim_permissions("special_perm")' in output
665+
666+
667+
def test_generate_dataset_does_not_warn_when_permission_claimed(
668+
call_cli, tmp_path, caplog
669+
):
670+
dataset_definition_with_claim = (
671+
f"from ehrql import claim_permissions\n"
672+
f"claim_permissions('special_perm')\n"
673+
f"\n"
674+
f"{dataset_definition_with_restricted_table}"
675+
)
676+
dataset_definition_path = tmp_path / "dataset_definition.py"
677+
dataset_definition_path.write_text(dataset_definition_with_claim)
678+
output_path = tmp_path / "results.csv"
679+
680+
call_cli(
681+
"generate-dataset",
682+
dataset_definition_path,
683+
"--output",
684+
output_path,
685+
)
686+
687+
assert output_path.exists()
688+
689+
output = caplog.text
690+
assert "restricted_table" not in output
691+
assert 'claim_permissions("special_perm")' not in output

tests/functional/test_generate_measures.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,54 @@ def test_generate_measures_allows_sufficient_permissions(
488488
assert output_path.exists()
489489

490490

491+
def test_generate_measures_warns_on_missing_permissions_for_dummy_data(
492+
call_cli, tmp_path, caplog
493+
):
494+
measure_definitions_path = tmp_path / "measure_definitions.py"
495+
measure_definitions_path.write_text(measure_definitions_with_restricted_table)
496+
output_path = tmp_path / "results.csv"
497+
498+
call_cli(
499+
"generate-measures",
500+
measure_definitions_path,
501+
"--output",
502+
output_path,
503+
)
504+
505+
assert output_path.exists()
506+
507+
output = caplog.text
508+
assert "restricted_table" in output
509+
assert 'claim_permissions("special_perm")' in output
510+
511+
512+
def test_generate_measures_does_not_warn_when_permission_claimed(
513+
call_cli, tmp_path, caplog
514+
):
515+
measure_definitions_with_claim = (
516+
f"from ehrql import claim_permissions\n"
517+
f"claim_permissions('special_perm')\n"
518+
f"\n"
519+
f"{measure_definitions_with_restricted_table}"
520+
)
521+
measure_definitions_path = tmp_path / "measure_definitions.py"
522+
measure_definitions_path.write_text(measure_definitions_with_claim)
523+
output_path = tmp_path / "results.csv"
524+
525+
call_cli(
526+
"generate-measures",
527+
measure_definitions_path,
528+
"--output",
529+
output_path,
530+
)
531+
532+
assert output_path.exists()
533+
534+
output = caplog.text
535+
assert "restricted_table" not in output
536+
assert 'claim_permissions("special_perm")' not in output
537+
538+
491539
def hashable(dictionary):
492540
# Dictionaries aren't hashable so we need to turn them into something which is in
493541
# order to use set comparison

0 commit comments

Comments
 (0)