authentik.blueprints.tests.test_v1_state

Test blueprints v1

 1"""Test blueprints v1"""
 2
 3from django.test import TransactionTestCase
 4
 5from authentik.blueprints.v1.importer import Importer
 6from authentik.flows.models import Flow
 7from authentik.lib.generators import generate_id
 8from authentik.lib.tests.utils import load_fixture
 9
10
11class TestBlueprintsV1State(TransactionTestCase):
12    """Test Blueprints state attribute"""
13
14    def test_state_present(self):
15        """Test state present"""
16        flow_slug = generate_id()
17        import_yaml = load_fixture("fixtures/state_present.yaml", id=flow_slug)
18
19        importer = Importer.from_string(import_yaml)
20        self.assertTrue(importer.validate()[0])
21        self.assertTrue(importer.apply())
22        # Ensure object exists
23        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
24        self.assertEqual(flow.slug, flow_slug)
25
26        # Update object
27        flow.title = "bar"
28        flow.save()
29
30        flow.refresh_from_db()
31        self.assertEqual(flow.title, "bar")
32
33        # Ensure importer updates it
34        importer = Importer.from_string(import_yaml)
35        self.assertTrue(importer.validate()[0])
36        self.assertTrue(importer.apply())
37        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
38        self.assertEqual(flow.title, "foo")
39
40    def test_state_created(self):
41        """Test state created"""
42        flow_slug = generate_id()
43        import_yaml = load_fixture("fixtures/state_created.yaml", id=flow_slug)
44
45        importer = Importer.from_string(import_yaml)
46        self.assertTrue(importer.validate()[0])
47        self.assertTrue(importer.apply())
48        # Ensure object exists
49        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
50        self.assertEqual(flow.slug, flow_slug)
51
52        # Update object
53        flow.title = "bar"
54        flow.save()
55
56        flow.refresh_from_db()
57        self.assertEqual(flow.title, "bar")
58
59        # Ensure importer doesn't update it
60        importer = Importer.from_string(import_yaml)
61        self.assertTrue(importer.validate()[0])
62        self.assertTrue(importer.apply())
63        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
64        self.assertEqual(flow.title, "bar")
65
66    def test_state_absent(self):
67        """Test state absent"""
68        flow_slug = generate_id()
69        import_yaml = load_fixture("fixtures/state_created.yaml", id=flow_slug)
70
71        importer = Importer.from_string(import_yaml)
72        self.assertTrue(importer.validate()[0])
73        self.assertTrue(importer.apply())
74        # Ensure object exists
75        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
76        self.assertEqual(flow.slug, flow_slug)
77
78        import_yaml = load_fixture("fixtures/state_absent.yaml", id=flow_slug)
79        importer = Importer.from_string(import_yaml)
80        self.assertTrue(importer.validate()[0])
81        self.assertTrue(importer.apply())
82        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
83        self.assertIsNone(flow)
class TestBlueprintsV1State(django.test.testcases.TransactionTestCase):
12class TestBlueprintsV1State(TransactionTestCase):
13    """Test Blueprints state attribute"""
14
15    def test_state_present(self):
16        """Test state present"""
17        flow_slug = generate_id()
18        import_yaml = load_fixture("fixtures/state_present.yaml", id=flow_slug)
19
20        importer = Importer.from_string(import_yaml)
21        self.assertTrue(importer.validate()[0])
22        self.assertTrue(importer.apply())
23        # Ensure object exists
24        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
25        self.assertEqual(flow.slug, flow_slug)
26
27        # Update object
28        flow.title = "bar"
29        flow.save()
30
31        flow.refresh_from_db()
32        self.assertEqual(flow.title, "bar")
33
34        # Ensure importer updates it
35        importer = Importer.from_string(import_yaml)
36        self.assertTrue(importer.validate()[0])
37        self.assertTrue(importer.apply())
38        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
39        self.assertEqual(flow.title, "foo")
40
41    def test_state_created(self):
42        """Test state created"""
43        flow_slug = generate_id()
44        import_yaml = load_fixture("fixtures/state_created.yaml", id=flow_slug)
45
46        importer = Importer.from_string(import_yaml)
47        self.assertTrue(importer.validate()[0])
48        self.assertTrue(importer.apply())
49        # Ensure object exists
50        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
51        self.assertEqual(flow.slug, flow_slug)
52
53        # Update object
54        flow.title = "bar"
55        flow.save()
56
57        flow.refresh_from_db()
58        self.assertEqual(flow.title, "bar")
59
60        # Ensure importer doesn't update it
61        importer = Importer.from_string(import_yaml)
62        self.assertTrue(importer.validate()[0])
63        self.assertTrue(importer.apply())
64        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
65        self.assertEqual(flow.title, "bar")
66
67    def test_state_absent(self):
68        """Test state absent"""
69        flow_slug = generate_id()
70        import_yaml = load_fixture("fixtures/state_created.yaml", id=flow_slug)
71
72        importer = Importer.from_string(import_yaml)
73        self.assertTrue(importer.validate()[0])
74        self.assertTrue(importer.apply())
75        # Ensure object exists
76        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
77        self.assertEqual(flow.slug, flow_slug)
78
79        import_yaml = load_fixture("fixtures/state_absent.yaml", id=flow_slug)
80        importer = Importer.from_string(import_yaml)
81        self.assertTrue(importer.validate()[0])
82        self.assertTrue(importer.apply())
83        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
84        self.assertIsNone(flow)

Test Blueprints state attribute

def test_state_present(self):
15    def test_state_present(self):
16        """Test state present"""
17        flow_slug = generate_id()
18        import_yaml = load_fixture("fixtures/state_present.yaml", id=flow_slug)
19
20        importer = Importer.from_string(import_yaml)
21        self.assertTrue(importer.validate()[0])
22        self.assertTrue(importer.apply())
23        # Ensure object exists
24        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
25        self.assertEqual(flow.slug, flow_slug)
26
27        # Update object
28        flow.title = "bar"
29        flow.save()
30
31        flow.refresh_from_db()
32        self.assertEqual(flow.title, "bar")
33
34        # Ensure importer updates it
35        importer = Importer.from_string(import_yaml)
36        self.assertTrue(importer.validate()[0])
37        self.assertTrue(importer.apply())
38        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
39        self.assertEqual(flow.title, "foo")

Test state present

def test_state_created(self):
41    def test_state_created(self):
42        """Test state created"""
43        flow_slug = generate_id()
44        import_yaml = load_fixture("fixtures/state_created.yaml", id=flow_slug)
45
46        importer = Importer.from_string(import_yaml)
47        self.assertTrue(importer.validate()[0])
48        self.assertTrue(importer.apply())
49        # Ensure object exists
50        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
51        self.assertEqual(flow.slug, flow_slug)
52
53        # Update object
54        flow.title = "bar"
55        flow.save()
56
57        flow.refresh_from_db()
58        self.assertEqual(flow.title, "bar")
59
60        # Ensure importer doesn't update it
61        importer = Importer.from_string(import_yaml)
62        self.assertTrue(importer.validate()[0])
63        self.assertTrue(importer.apply())
64        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
65        self.assertEqual(flow.title, "bar")

Test state created

def test_state_absent(self):
67    def test_state_absent(self):
68        """Test state absent"""
69        flow_slug = generate_id()
70        import_yaml = load_fixture("fixtures/state_created.yaml", id=flow_slug)
71
72        importer = Importer.from_string(import_yaml)
73        self.assertTrue(importer.validate()[0])
74        self.assertTrue(importer.apply())
75        # Ensure object exists
76        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
77        self.assertEqual(flow.slug, flow_slug)
78
79        import_yaml = load_fixture("fixtures/state_absent.yaml", id=flow_slug)
80        importer = Importer.from_string(import_yaml)
81        self.assertTrue(importer.validate()[0])
82        self.assertTrue(importer.apply())
83        flow: Flow = Flow.objects.filter(slug=flow_slug).first()
84        self.assertIsNone(flow)

Test state absent