|
40 | 40 | AlgorithmJobFactory, |
41 | 41 | AlgorithmModelFactory, |
42 | 42 | AlgorithmPermissionRequestFactory, |
| 43 | + InteractiveAlgorithmFactory, |
43 | 44 | ) |
44 | 45 | from tests.cases_tests import RESOURCE_PATH |
45 | 46 | from tests.components_tests.factories import ( |
@@ -2518,3 +2519,61 @@ def test_algorithm_users_list_is_filtered(client): |
2518 | 2519 | url=reverse("algorithms:users-list"), client=client, user=user |
2519 | 2520 | ) |
2520 | 2521 | assert expected_algorithms == {*response.context[-1]["object_list"]} |
| 2522 | + |
| 2523 | + |
| 2524 | +@pytest.mark.django_db |
| 2525 | +def test_interactive_algorithm_interfaces_locked(client): |
| 2526 | + algorithm = AlgorithmFactory() |
| 2527 | + editor = UserFactory() |
| 2528 | + algorithm.add_editor(editor) |
| 2529 | + assign_perm("algorithms.add_algorithm", editor) |
| 2530 | + interface = AlgorithmInterfaceFactory() |
| 2531 | + algorithm.interfaces.add(interface) |
| 2532 | + |
| 2533 | + response = get_view_for_user( |
| 2534 | + viewname="algorithms:interface-create", |
| 2535 | + client=client, |
| 2536 | + user=editor, |
| 2537 | + reverse_kwargs={ |
| 2538 | + "slug": algorithm.slug, |
| 2539 | + }, |
| 2540 | + ) |
| 2541 | + |
| 2542 | + assert response.status_code == 200 |
| 2543 | + |
| 2544 | + response = get_view_for_user( |
| 2545 | + viewname="algorithms:interface-delete", |
| 2546 | + client=client, |
| 2547 | + user=editor, |
| 2548 | + reverse_kwargs={ |
| 2549 | + "slug": algorithm.slug, |
| 2550 | + "interface_pk": interface.pk, |
| 2551 | + }, |
| 2552 | + ) |
| 2553 | + |
| 2554 | + assert response.status_code == 200 |
| 2555 | + |
| 2556 | + InteractiveAlgorithmFactory(algorithm=algorithm) |
| 2557 | + |
| 2558 | + response = get_view_for_user( |
| 2559 | + viewname="algorithms:interface-create", |
| 2560 | + client=client, |
| 2561 | + user=editor, |
| 2562 | + reverse_kwargs={ |
| 2563 | + "slug": algorithm.slug, |
| 2564 | + }, |
| 2565 | + ) |
| 2566 | + |
| 2567 | + assert response.status_code == 403 |
| 2568 | + |
| 2569 | + response = get_view_for_user( |
| 2570 | + viewname="algorithms:interface-delete", |
| 2571 | + client=client, |
| 2572 | + user=editor, |
| 2573 | + reverse_kwargs={ |
| 2574 | + "slug": algorithm.slug, |
| 2575 | + "interface_pk": interface.pk, |
| 2576 | + }, |
| 2577 | + ) |
| 2578 | + |
| 2579 | + assert response.status_code == 403 |
0 commit comments