
* add state attribute to delete objects Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * add tests, move yaml from block to files Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * add state to docs Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * only try to format Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
83 lines
2.9 KiB
Python
83 lines
2.9 KiB
Python
"""Test blueprints v1"""
|
|
from django.test import TransactionTestCase
|
|
|
|
from authentik.blueprints.tests import load_yaml_fixture
|
|
from authentik.blueprints.v1.importer import Importer
|
|
from authentik.flows.models import Flow
|
|
from authentik.lib.generators import generate_id
|
|
|
|
|
|
class TestBlueprintsV1State(TransactionTestCase):
|
|
"""Test Blueprints state attribute"""
|
|
|
|
def test_state_present(self):
|
|
"""Test state present"""
|
|
flow_slug = generate_id()
|
|
import_yaml = load_yaml_fixture("fixtures/state_present.yaml", id=flow_slug)
|
|
|
|
importer = Importer(import_yaml)
|
|
self.assertTrue(importer.validate()[0])
|
|
self.assertTrue(importer.apply())
|
|
# Ensure object exists
|
|
flow: Flow = Flow.objects.filter(slug=flow_slug).first()
|
|
self.assertEqual(flow.slug, flow_slug)
|
|
|
|
# Update object
|
|
flow.title = "bar"
|
|
flow.save()
|
|
|
|
flow.refresh_from_db()
|
|
self.assertEqual(flow.title, "bar")
|
|
|
|
# Ensure importer updates it
|
|
importer = Importer(import_yaml)
|
|
self.assertTrue(importer.validate()[0])
|
|
self.assertTrue(importer.apply())
|
|
flow: Flow = Flow.objects.filter(slug=flow_slug).first()
|
|
self.assertEqual(flow.title, "foo")
|
|
|
|
def test_state_created(self):
|
|
"""Test state created"""
|
|
flow_slug = generate_id()
|
|
import_yaml = load_yaml_fixture("fixtures/state_created.yaml", id=flow_slug)
|
|
|
|
importer = Importer(import_yaml)
|
|
self.assertTrue(importer.validate()[0])
|
|
self.assertTrue(importer.apply())
|
|
# Ensure object exists
|
|
flow: Flow = Flow.objects.filter(slug=flow_slug).first()
|
|
self.assertEqual(flow.slug, flow_slug)
|
|
|
|
# Update object
|
|
flow.title = "bar"
|
|
flow.save()
|
|
|
|
flow.refresh_from_db()
|
|
self.assertEqual(flow.title, "bar")
|
|
|
|
# Ensure importer doesn't update it
|
|
importer = Importer(import_yaml)
|
|
self.assertTrue(importer.validate()[0])
|
|
self.assertTrue(importer.apply())
|
|
flow: Flow = Flow.objects.filter(slug=flow_slug).first()
|
|
self.assertEqual(flow.title, "bar")
|
|
|
|
def test_state_absent(self):
|
|
"""Test state absent"""
|
|
flow_slug = generate_id()
|
|
import_yaml = load_yaml_fixture("fixtures/state_created.yaml", id=flow_slug)
|
|
|
|
importer = Importer(import_yaml)
|
|
self.assertTrue(importer.validate()[0])
|
|
self.assertTrue(importer.apply())
|
|
# Ensure object exists
|
|
flow: Flow = Flow.objects.filter(slug=flow_slug).first()
|
|
self.assertEqual(flow.slug, flow_slug)
|
|
|
|
import_yaml = load_yaml_fixture("fixtures/state_absent.yaml", id=flow_slug)
|
|
importer = Importer(import_yaml)
|
|
self.assertTrue(importer.validate()[0])
|
|
self.assertTrue(importer.apply())
|
|
flow: Flow = Flow.objects.filter(slug=flow_slug).first()
|
|
self.assertIsNone(flow)
|