authentik.providers.rac.tests.test_models

Test RAC Models

  1"""Test RAC Models"""
  2
  3from django.test import TransactionTestCase
  4
  5from authentik.core.models import Application, AuthenticatedSession, Session
  6from authentik.core.tests.utils import create_test_admin_user
  7from authentik.lib.generators import generate_id
  8from authentik.providers.rac.models import (
  9    ConnectionToken,
 10    Endpoint,
 11    Protocols,
 12    RACPropertyMapping,
 13    RACProvider,
 14)
 15
 16
 17class TestModels(TransactionTestCase):
 18    """Test RAC Models"""
 19
 20    def setUp(self):
 21        self.user = create_test_admin_user()
 22        self.provider = RACProvider.objects.create(
 23            name=generate_id(),
 24        )
 25        self.app = Application.objects.create(
 26            name=generate_id(),
 27            slug=generate_id(),
 28            provider=self.provider,
 29        )
 30        self.endpoint = Endpoint.objects.create(
 31            name=generate_id(),
 32            host=f"{generate_id()}:1324",
 33            protocol=Protocols.RDP,
 34            provider=self.provider,
 35        )
 36
 37    def test_settings_merge(self):
 38        """Test settings merge"""
 39        session = Session.objects.create(
 40            session_key=generate_id(),
 41            last_ip="255.255.255.255",
 42        )
 43        auth_session = AuthenticatedSession.objects.create(session=session, user=self.user)
 44        token = ConnectionToken.objects.create(
 45            provider=self.provider,
 46            endpoint=self.endpoint,
 47            session=auth_session,
 48        )
 49        path = f"/tmp/connection/{token.token}"  # nosec
 50        self.assertEqual(
 51            token.get_settings(),
 52            {
 53                "hostname": self.endpoint.host.split(":")[0],
 54                "port": "1324",
 55                "client-name": f"authentik - {self.user}",
 56                "drive-path": path,
 57                "create-drive-path": "true",
 58                "resize-method": "display-update",
 59            },
 60        )
 61        # Set settings in provider
 62        self.provider.settings = {"level": "provider"}
 63        self.provider.save()
 64        self.assertEqual(
 65            token.get_settings(),
 66            {
 67                "hostname": self.endpoint.host.split(":")[0],
 68                "port": "1324",
 69                "client-name": f"authentik - {self.user}",
 70                "drive-path": path,
 71                "create-drive-path": "true",
 72                "level": "provider",
 73                "resize-method": "display-update",
 74            },
 75        )
 76        # Set settings in endpoint
 77        self.endpoint.settings = {
 78            "level": "endpoint",
 79        }
 80        self.endpoint.save()
 81        self.assertEqual(
 82            token.get_settings(),
 83            {
 84                "hostname": self.endpoint.host.split(":")[0],
 85                "port": "1324",
 86                "client-name": f"authentik - {self.user}",
 87                "drive-path": path,
 88                "create-drive-path": "true",
 89                "level": "endpoint",
 90                "resize-method": "display-update",
 91            },
 92        )
 93        # Set settings in property mapping (provider)
 94        mapping = RACPropertyMapping.objects.create(
 95            name=generate_id(),
 96            expression="""return {
 97                "level": "property_mapping_provider"
 98            }""",
 99        )
100        self.provider.property_mappings.add(mapping)
101        self.assertEqual(
102            token.get_settings(),
103            {
104                "hostname": self.endpoint.host.split(":")[0],
105                "port": "1324",
106                "client-name": f"authentik - {self.user}",
107                "drive-path": path,
108                "create-drive-path": "true",
109                "level": "property_mapping_provider",
110                "resize-method": "display-update",
111            },
112        )
113        # Set settings in property mapping (endpoint)
114        mapping = RACPropertyMapping.objects.create(
115            name=generate_id(),
116            static_settings={
117                "level": "property_mapping_endpoint",
118                "foo": True,
119                "bar": 6,
120            },
121        )
122        self.endpoint.property_mappings.add(mapping)
123        self.assertEqual(
124            token.get_settings(),
125            {
126                "hostname": self.endpoint.host.split(":")[0],
127                "port": "1324",
128                "client-name": f"authentik - {self.user}",
129                "drive-path": path,
130                "create-drive-path": "true",
131                "level": "property_mapping_endpoint",
132                "foo": "true",
133                "bar": "6",
134                "resize-method": "display-update",
135            },
136        )
137        # Set settings in token
138        token.settings = {
139            "level": "token",
140        }
141        token.save()
142        self.assertEqual(
143            token.get_settings(),
144            {
145                "hostname": self.endpoint.host.split(":")[0],
146                "port": "1324",
147                "client-name": f"authentik - {self.user}",
148                "drive-path": path,
149                "create-drive-path": "true",
150                "foo": "true",
151                "bar": "6",
152                "resize-method": "display-update",
153                "level": "token",
154            },
155        )
class TestModels(django.test.testcases.TransactionTestCase):
 18class TestModels(TransactionTestCase):
 19    """Test RAC Models"""
 20
 21    def setUp(self):
 22        self.user = create_test_admin_user()
 23        self.provider = RACProvider.objects.create(
 24            name=generate_id(),
 25        )
 26        self.app = Application.objects.create(
 27            name=generate_id(),
 28            slug=generate_id(),
 29            provider=self.provider,
 30        )
 31        self.endpoint = Endpoint.objects.create(
 32            name=generate_id(),
 33            host=f"{generate_id()}:1324",
 34            protocol=Protocols.RDP,
 35            provider=self.provider,
 36        )
 37
 38    def test_settings_merge(self):
 39        """Test settings merge"""
 40        session = Session.objects.create(
 41            session_key=generate_id(),
 42            last_ip="255.255.255.255",
 43        )
 44        auth_session = AuthenticatedSession.objects.create(session=session, user=self.user)
 45        token = ConnectionToken.objects.create(
 46            provider=self.provider,
 47            endpoint=self.endpoint,
 48            session=auth_session,
 49        )
 50        path = f"/tmp/connection/{token.token}"  # nosec
 51        self.assertEqual(
 52            token.get_settings(),
 53            {
 54                "hostname": self.endpoint.host.split(":")[0],
 55                "port": "1324",
 56                "client-name": f"authentik - {self.user}",
 57                "drive-path": path,
 58                "create-drive-path": "true",
 59                "resize-method": "display-update",
 60            },
 61        )
 62        # Set settings in provider
 63        self.provider.settings = {"level": "provider"}
 64        self.provider.save()
 65        self.assertEqual(
 66            token.get_settings(),
 67            {
 68                "hostname": self.endpoint.host.split(":")[0],
 69                "port": "1324",
 70                "client-name": f"authentik - {self.user}",
 71                "drive-path": path,
 72                "create-drive-path": "true",
 73                "level": "provider",
 74                "resize-method": "display-update",
 75            },
 76        )
 77        # Set settings in endpoint
 78        self.endpoint.settings = {
 79            "level": "endpoint",
 80        }
 81        self.endpoint.save()
 82        self.assertEqual(
 83            token.get_settings(),
 84            {
 85                "hostname": self.endpoint.host.split(":")[0],
 86                "port": "1324",
 87                "client-name": f"authentik - {self.user}",
 88                "drive-path": path,
 89                "create-drive-path": "true",
 90                "level": "endpoint",
 91                "resize-method": "display-update",
 92            },
 93        )
 94        # Set settings in property mapping (provider)
 95        mapping = RACPropertyMapping.objects.create(
 96            name=generate_id(),
 97            expression="""return {
 98                "level": "property_mapping_provider"
 99            }""",
100        )
101        self.provider.property_mappings.add(mapping)
102        self.assertEqual(
103            token.get_settings(),
104            {
105                "hostname": self.endpoint.host.split(":")[0],
106                "port": "1324",
107                "client-name": f"authentik - {self.user}",
108                "drive-path": path,
109                "create-drive-path": "true",
110                "level": "property_mapping_provider",
111                "resize-method": "display-update",
112            },
113        )
114        # Set settings in property mapping (endpoint)
115        mapping = RACPropertyMapping.objects.create(
116            name=generate_id(),
117            static_settings={
118                "level": "property_mapping_endpoint",
119                "foo": True,
120                "bar": 6,
121            },
122        )
123        self.endpoint.property_mappings.add(mapping)
124        self.assertEqual(
125            token.get_settings(),
126            {
127                "hostname": self.endpoint.host.split(":")[0],
128                "port": "1324",
129                "client-name": f"authentik - {self.user}",
130                "drive-path": path,
131                "create-drive-path": "true",
132                "level": "property_mapping_endpoint",
133                "foo": "true",
134                "bar": "6",
135                "resize-method": "display-update",
136            },
137        )
138        # Set settings in token
139        token.settings = {
140            "level": "token",
141        }
142        token.save()
143        self.assertEqual(
144            token.get_settings(),
145            {
146                "hostname": self.endpoint.host.split(":")[0],
147                "port": "1324",
148                "client-name": f"authentik - {self.user}",
149                "drive-path": path,
150                "create-drive-path": "true",
151                "foo": "true",
152                "bar": "6",
153                "resize-method": "display-update",
154                "level": "token",
155            },
156        )

Test RAC Models

def setUp(self):
21    def setUp(self):
22        self.user = create_test_admin_user()
23        self.provider = RACProvider.objects.create(
24            name=generate_id(),
25        )
26        self.app = Application.objects.create(
27            name=generate_id(),
28            slug=generate_id(),
29            provider=self.provider,
30        )
31        self.endpoint = Endpoint.objects.create(
32            name=generate_id(),
33            host=f"{generate_id()}:1324",
34            protocol=Protocols.RDP,
35            provider=self.provider,
36        )

Hook method for setting up the test fixture before exercising it.

def test_settings_merge(self):
 38    def test_settings_merge(self):
 39        """Test settings merge"""
 40        session = Session.objects.create(
 41            session_key=generate_id(),
 42            last_ip="255.255.255.255",
 43        )
 44        auth_session = AuthenticatedSession.objects.create(session=session, user=self.user)
 45        token = ConnectionToken.objects.create(
 46            provider=self.provider,
 47            endpoint=self.endpoint,
 48            session=auth_session,
 49        )
 50        path = f"/tmp/connection/{token.token}"  # nosec
 51        self.assertEqual(
 52            token.get_settings(),
 53            {
 54                "hostname": self.endpoint.host.split(":")[0],
 55                "port": "1324",
 56                "client-name": f"authentik - {self.user}",
 57                "drive-path": path,
 58                "create-drive-path": "true",
 59                "resize-method": "display-update",
 60            },
 61        )
 62        # Set settings in provider
 63        self.provider.settings = {"level": "provider"}
 64        self.provider.save()
 65        self.assertEqual(
 66            token.get_settings(),
 67            {
 68                "hostname": self.endpoint.host.split(":")[0],
 69                "port": "1324",
 70                "client-name": f"authentik - {self.user}",
 71                "drive-path": path,
 72                "create-drive-path": "true",
 73                "level": "provider",
 74                "resize-method": "display-update",
 75            },
 76        )
 77        # Set settings in endpoint
 78        self.endpoint.settings = {
 79            "level": "endpoint",
 80        }
 81        self.endpoint.save()
 82        self.assertEqual(
 83            token.get_settings(),
 84            {
 85                "hostname": self.endpoint.host.split(":")[0],
 86                "port": "1324",
 87                "client-name": f"authentik - {self.user}",
 88                "drive-path": path,
 89                "create-drive-path": "true",
 90                "level": "endpoint",
 91                "resize-method": "display-update",
 92            },
 93        )
 94        # Set settings in property mapping (provider)
 95        mapping = RACPropertyMapping.objects.create(
 96            name=generate_id(),
 97            expression="""return {
 98                "level": "property_mapping_provider"
 99            }""",
100        )
101        self.provider.property_mappings.add(mapping)
102        self.assertEqual(
103            token.get_settings(),
104            {
105                "hostname": self.endpoint.host.split(":")[0],
106                "port": "1324",
107                "client-name": f"authentik - {self.user}",
108                "drive-path": path,
109                "create-drive-path": "true",
110                "level": "property_mapping_provider",
111                "resize-method": "display-update",
112            },
113        )
114        # Set settings in property mapping (endpoint)
115        mapping = RACPropertyMapping.objects.create(
116            name=generate_id(),
117            static_settings={
118                "level": "property_mapping_endpoint",
119                "foo": True,
120                "bar": 6,
121            },
122        )
123        self.endpoint.property_mappings.add(mapping)
124        self.assertEqual(
125            token.get_settings(),
126            {
127                "hostname": self.endpoint.host.split(":")[0],
128                "port": "1324",
129                "client-name": f"authentik - {self.user}",
130                "drive-path": path,
131                "create-drive-path": "true",
132                "level": "property_mapping_endpoint",
133                "foo": "true",
134                "bar": "6",
135                "resize-method": "display-update",
136            },
137        )
138        # Set settings in token
139        token.settings = {
140            "level": "token",
141        }
142        token.save()
143        self.assertEqual(
144            token.get_settings(),
145            {
146                "hostname": self.endpoint.host.split(":")[0],
147                "port": "1324",
148                "client-name": f"authentik - {self.user}",
149                "drive-path": path,
150                "create-drive-path": "true",
151                "foo": "true",
152                "bar": "6",
153                "resize-method": "display-update",
154                "level": "token",
155            },
156        )

Test settings merge