authentik.enterprise.tests.test_license

Enterprise license tests

  1"""Enterprise license tests"""
  2
  3from datetime import timedelta
  4from time import mktime
  5from unittest.mock import MagicMock, patch
  6
  7from django.test import TestCase
  8from django.utils.timezone import now
  9from rest_framework.exceptions import ValidationError
 10
 11from authentik.core.models import User
 12from authentik.enterprise.license import LicenseKey
 13from authentik.enterprise.models import (
 14    THRESHOLD_READ_ONLY_WEEKS,
 15    THRESHOLD_WARNING_ADMIN_WEEKS,
 16    THRESHOLD_WARNING_USER_WEEKS,
 17    License,
 18    LicenseUsage,
 19    LicenseUsageStatus,
 20)
 21from authentik.lib.generators import generate_id
 22
 23# Valid license expiry
 24expiry_valid = int(mktime((now() + timedelta(days=3000)).timetuple()))
 25# Valid license expiry, expires soon
 26expiry_soon = int(mktime((now() + timedelta(hours=10)).timetuple()))
 27# Invalid license expiry, recently expired
 28expiry_expired = int(mktime((now() - timedelta(hours=10)).timetuple()))
 29# Invalid license expiry, expired longer ago
 30expiry_expired_read_only = int(
 31    mktime((now() - timedelta(weeks=THRESHOLD_READ_ONLY_WEEKS + 1)).timetuple())
 32)
 33
 34
 35class TestEnterpriseLicense(TestCase):
 36    """Enterprise license tests"""
 37
 38    @patch(
 39        "authentik.enterprise.license.LicenseKey.validate",
 40        MagicMock(
 41            return_value=LicenseKey(
 42                aud="",
 43                exp=expiry_valid,
 44                name=generate_id(),
 45                internal_users=100,
 46                external_users=100,
 47            )
 48        ),
 49    )
 50    def test_valid(self):
 51        """Check license verification"""
 52        lic = License.objects.create(key=generate_id())
 53        self.assertTrue(lic.status.status().is_valid)
 54        self.assertEqual(lic.internal_users, 100)
 55
 56    def test_invalid(self):
 57        """Test invalid license"""
 58        with self.assertRaises(ValidationError):
 59            License.objects.create(key=generate_id())
 60
 61    @patch(
 62        "authentik.enterprise.license.LicenseKey.validate",
 63        MagicMock(
 64            return_value=LicenseKey(
 65                aud="",
 66                exp=expiry_valid,
 67                name=generate_id(),
 68                internal_users=100,
 69                external_users=100,
 70            )
 71        ),
 72    )
 73    def test_valid_multiple(self):
 74        """Check license verification"""
 75        lic = License.objects.create(key=generate_id(), expiry=expiry_valid)
 76        self.assertTrue(lic.status.status().is_valid)
 77        lic2 = License.objects.create(key=generate_id(), expiry=expiry_valid)
 78        self.assertTrue(lic2.status.status().is_valid)
 79        total = LicenseKey.get_total()
 80        self.assertEqual(total.internal_users, 200)
 81        self.assertEqual(total.external_users, 200)
 82        self.assertEqual(total.exp, expiry_valid)
 83        self.assertTrue(total.status().is_valid)
 84
 85    @patch(
 86        "authentik.enterprise.license.LicenseKey.validate",
 87        MagicMock(
 88            return_value=LicenseKey(
 89                aud="",
 90                exp=expiry_valid,
 91                name=generate_id(),
 92                internal_users=100,
 93                external_users=100,
 94            )
 95        ),
 96    )
 97    @patch(
 98        "authentik.enterprise.license.LicenseKey.get_internal_user_count",
 99        MagicMock(return_value=1000),
100    )
101    @patch(
102        "authentik.enterprise.license.LicenseKey.get_external_user_count",
103        MagicMock(return_value=1000),
104    )
105    @patch(
106        "authentik.enterprise.license.LicenseKey.record_usage",
107        MagicMock(),
108    )
109    def test_limit_exceeded_read_only(self):
110        """Check license verification"""
111        License.objects.create(key=generate_id())
112        usage = LicenseUsage.objects.create(
113            internal_user_count=100,
114            external_user_count=100,
115            status=LicenseUsageStatus.VALID,
116        )
117        usage.record_date = now() - timedelta(weeks=THRESHOLD_READ_ONLY_WEEKS + 1)
118        usage.save(update_fields=["record_date"])
119        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.READ_ONLY)
120
121    @patch(
122        "authentik.enterprise.license.LicenseKey.validate",
123        MagicMock(
124            return_value=LicenseKey(
125                aud="",
126                exp=expiry_valid,
127                name=generate_id(),
128                internal_users=100,
129                external_users=100,
130            )
131        ),
132    )
133    @patch(
134        "authentik.enterprise.license.LicenseKey.get_internal_user_count",
135        MagicMock(return_value=1000),
136    )
137    @patch(
138        "authentik.enterprise.license.LicenseKey.get_external_user_count",
139        MagicMock(return_value=1000),
140    )
141    @patch(
142        "authentik.enterprise.license.LicenseKey.record_usage",
143        MagicMock(),
144    )
145    def test_limit_exceeded_user_warning(self):
146        """Check license verification"""
147        License.objects.create(key=generate_id())
148        usage = LicenseUsage.objects.create(
149            internal_user_count=100,
150            external_user_count=100,
151            status=LicenseUsageStatus.VALID,
152        )
153        usage.record_date = now() - timedelta(weeks=THRESHOLD_WARNING_USER_WEEKS + 1)
154        usage.save(update_fields=["record_date"])
155        self.assertEqual(
156            LicenseKey.get_total().summary().status, LicenseUsageStatus.LIMIT_EXCEEDED_USER
157        )
158
159    @patch(
160        "authentik.enterprise.license.LicenseKey.validate",
161        MagicMock(
162            return_value=LicenseKey(
163                aud="",
164                exp=expiry_valid,
165                name=generate_id(),
166                internal_users=100,
167                external_users=100,
168            )
169        ),
170    )
171    @patch(
172        "authentik.enterprise.license.LicenseKey.get_internal_user_count",
173        MagicMock(return_value=1000),
174    )
175    @patch(
176        "authentik.enterprise.license.LicenseKey.get_external_user_count",
177        MagicMock(return_value=1000),
178    )
179    @patch(
180        "authentik.enterprise.license.LicenseKey.record_usage",
181        MagicMock(),
182    )
183    def test_limit_exceeded_admin_warning(self):
184        """Check license verification"""
185        License.objects.create(key=generate_id())
186        usage = LicenseUsage.objects.create(
187            internal_user_count=100,
188            external_user_count=100,
189            status=LicenseUsageStatus.VALID,
190        )
191        usage.record_date = now() - timedelta(weeks=THRESHOLD_WARNING_ADMIN_WEEKS + 1)
192        usage.save(update_fields=["record_date"])
193        self.assertEqual(
194            LicenseKey.get_total().summary().status, LicenseUsageStatus.LIMIT_EXCEEDED_ADMIN
195        )
196
197    @patch(
198        "authentik.enterprise.license.LicenseKey.validate",
199        MagicMock(
200            return_value=LicenseKey(
201                aud="",
202                exp=expiry_expired_read_only,
203                name=generate_id(),
204                internal_users=100,
205                external_users=100,
206            )
207        ),
208    )
209    @patch(
210        "authentik.enterprise.license.LicenseKey.record_usage",
211        MagicMock(),
212    )
213    def test_expiry_read_only(self):
214        """Check license verification"""
215        License.objects.create(key=generate_id())
216        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.READ_ONLY)
217
218    @patch(
219        "authentik.enterprise.license.LicenseKey.validate",
220        MagicMock(
221            return_value=LicenseKey(
222                aud="",
223                exp=expiry_expired,
224                name=generate_id(),
225                internal_users=100,
226                external_users=100,
227            )
228        ),
229    )
230    @patch(
231        "authentik.enterprise.license.LicenseKey.record_usage",
232        MagicMock(),
233    )
234    def test_expiry_expired(self):
235        """Check license verification"""
236        User.objects.all().delete()
237        License.objects.all().delete()
238        License.objects.create(key=generate_id(), expiry=expiry_expired)
239        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.EXPIRED)
240
241    @patch(
242        "authentik.enterprise.license.LicenseKey.validate",
243        MagicMock(
244            return_value=LicenseKey(
245                aud="",
246                exp=expiry_soon,
247                name=generate_id(),
248                internal_users=100,
249                external_users=100,
250            )
251        ),
252    )
253    @patch(
254        "authentik.enterprise.license.LicenseKey.record_usage",
255        MagicMock(),
256    )
257    def test_expiry_soon(self):
258        """Check license verification"""
259        License.objects.create(key=generate_id())
260        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.EXPIRY_SOON)
expiry_valid = 2034453329
expiry_soon = 1775289329
expiry_expired = 1775217329
expiry_expired_read_only = 1771019729
class TestEnterpriseLicense(django.test.testcases.TestCase):
 36class TestEnterpriseLicense(TestCase):
 37    """Enterprise license tests"""
 38
 39    @patch(
 40        "authentik.enterprise.license.LicenseKey.validate",
 41        MagicMock(
 42            return_value=LicenseKey(
 43                aud="",
 44                exp=expiry_valid,
 45                name=generate_id(),
 46                internal_users=100,
 47                external_users=100,
 48            )
 49        ),
 50    )
 51    def test_valid(self):
 52        """Check license verification"""
 53        lic = License.objects.create(key=generate_id())
 54        self.assertTrue(lic.status.status().is_valid)
 55        self.assertEqual(lic.internal_users, 100)
 56
 57    def test_invalid(self):
 58        """Test invalid license"""
 59        with self.assertRaises(ValidationError):
 60            License.objects.create(key=generate_id())
 61
 62    @patch(
 63        "authentik.enterprise.license.LicenseKey.validate",
 64        MagicMock(
 65            return_value=LicenseKey(
 66                aud="",
 67                exp=expiry_valid,
 68                name=generate_id(),
 69                internal_users=100,
 70                external_users=100,
 71            )
 72        ),
 73    )
 74    def test_valid_multiple(self):
 75        """Check license verification"""
 76        lic = License.objects.create(key=generate_id(), expiry=expiry_valid)
 77        self.assertTrue(lic.status.status().is_valid)
 78        lic2 = License.objects.create(key=generate_id(), expiry=expiry_valid)
 79        self.assertTrue(lic2.status.status().is_valid)
 80        total = LicenseKey.get_total()
 81        self.assertEqual(total.internal_users, 200)
 82        self.assertEqual(total.external_users, 200)
 83        self.assertEqual(total.exp, expiry_valid)
 84        self.assertTrue(total.status().is_valid)
 85
 86    @patch(
 87        "authentik.enterprise.license.LicenseKey.validate",
 88        MagicMock(
 89            return_value=LicenseKey(
 90                aud="",
 91                exp=expiry_valid,
 92                name=generate_id(),
 93                internal_users=100,
 94                external_users=100,
 95            )
 96        ),
 97    )
 98    @patch(
 99        "authentik.enterprise.license.LicenseKey.get_internal_user_count",
100        MagicMock(return_value=1000),
101    )
102    @patch(
103        "authentik.enterprise.license.LicenseKey.get_external_user_count",
104        MagicMock(return_value=1000),
105    )
106    @patch(
107        "authentik.enterprise.license.LicenseKey.record_usage",
108        MagicMock(),
109    )
110    def test_limit_exceeded_read_only(self):
111        """Check license verification"""
112        License.objects.create(key=generate_id())
113        usage = LicenseUsage.objects.create(
114            internal_user_count=100,
115            external_user_count=100,
116            status=LicenseUsageStatus.VALID,
117        )
118        usage.record_date = now() - timedelta(weeks=THRESHOLD_READ_ONLY_WEEKS + 1)
119        usage.save(update_fields=["record_date"])
120        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.READ_ONLY)
121
122    @patch(
123        "authentik.enterprise.license.LicenseKey.validate",
124        MagicMock(
125            return_value=LicenseKey(
126                aud="",
127                exp=expiry_valid,
128                name=generate_id(),
129                internal_users=100,
130                external_users=100,
131            )
132        ),
133    )
134    @patch(
135        "authentik.enterprise.license.LicenseKey.get_internal_user_count",
136        MagicMock(return_value=1000),
137    )
138    @patch(
139        "authentik.enterprise.license.LicenseKey.get_external_user_count",
140        MagicMock(return_value=1000),
141    )
142    @patch(
143        "authentik.enterprise.license.LicenseKey.record_usage",
144        MagicMock(),
145    )
146    def test_limit_exceeded_user_warning(self):
147        """Check license verification"""
148        License.objects.create(key=generate_id())
149        usage = LicenseUsage.objects.create(
150            internal_user_count=100,
151            external_user_count=100,
152            status=LicenseUsageStatus.VALID,
153        )
154        usage.record_date = now() - timedelta(weeks=THRESHOLD_WARNING_USER_WEEKS + 1)
155        usage.save(update_fields=["record_date"])
156        self.assertEqual(
157            LicenseKey.get_total().summary().status, LicenseUsageStatus.LIMIT_EXCEEDED_USER
158        )
159
160    @patch(
161        "authentik.enterprise.license.LicenseKey.validate",
162        MagicMock(
163            return_value=LicenseKey(
164                aud="",
165                exp=expiry_valid,
166                name=generate_id(),
167                internal_users=100,
168                external_users=100,
169            )
170        ),
171    )
172    @patch(
173        "authentik.enterprise.license.LicenseKey.get_internal_user_count",
174        MagicMock(return_value=1000),
175    )
176    @patch(
177        "authentik.enterprise.license.LicenseKey.get_external_user_count",
178        MagicMock(return_value=1000),
179    )
180    @patch(
181        "authentik.enterprise.license.LicenseKey.record_usage",
182        MagicMock(),
183    )
184    def test_limit_exceeded_admin_warning(self):
185        """Check license verification"""
186        License.objects.create(key=generate_id())
187        usage = LicenseUsage.objects.create(
188            internal_user_count=100,
189            external_user_count=100,
190            status=LicenseUsageStatus.VALID,
191        )
192        usage.record_date = now() - timedelta(weeks=THRESHOLD_WARNING_ADMIN_WEEKS + 1)
193        usage.save(update_fields=["record_date"])
194        self.assertEqual(
195            LicenseKey.get_total().summary().status, LicenseUsageStatus.LIMIT_EXCEEDED_ADMIN
196        )
197
198    @patch(
199        "authentik.enterprise.license.LicenseKey.validate",
200        MagicMock(
201            return_value=LicenseKey(
202                aud="",
203                exp=expiry_expired_read_only,
204                name=generate_id(),
205                internal_users=100,
206                external_users=100,
207            )
208        ),
209    )
210    @patch(
211        "authentik.enterprise.license.LicenseKey.record_usage",
212        MagicMock(),
213    )
214    def test_expiry_read_only(self):
215        """Check license verification"""
216        License.objects.create(key=generate_id())
217        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.READ_ONLY)
218
219    @patch(
220        "authentik.enterprise.license.LicenseKey.validate",
221        MagicMock(
222            return_value=LicenseKey(
223                aud="",
224                exp=expiry_expired,
225                name=generate_id(),
226                internal_users=100,
227                external_users=100,
228            )
229        ),
230    )
231    @patch(
232        "authentik.enterprise.license.LicenseKey.record_usage",
233        MagicMock(),
234    )
235    def test_expiry_expired(self):
236        """Check license verification"""
237        User.objects.all().delete()
238        License.objects.all().delete()
239        License.objects.create(key=generate_id(), expiry=expiry_expired)
240        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.EXPIRED)
241
242    @patch(
243        "authentik.enterprise.license.LicenseKey.validate",
244        MagicMock(
245            return_value=LicenseKey(
246                aud="",
247                exp=expiry_soon,
248                name=generate_id(),
249                internal_users=100,
250                external_users=100,
251            )
252        ),
253    )
254    @patch(
255        "authentik.enterprise.license.LicenseKey.record_usage",
256        MagicMock(),
257    )
258    def test_expiry_soon(self):
259        """Check license verification"""
260        License.objects.create(key=generate_id())
261        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.EXPIRY_SOON)

Enterprise license tests

@patch('authentik.enterprise.license.LicenseKey.validate', MagicMock(return_value=LicenseKey(aud='', exp=expiry_valid, name=generate_id(), internal_users=100, external_users=100)))
def test_valid(self):
39    @patch(
40        "authentik.enterprise.license.LicenseKey.validate",
41        MagicMock(
42            return_value=LicenseKey(
43                aud="",
44                exp=expiry_valid,
45                name=generate_id(),
46                internal_users=100,
47                external_users=100,
48            )
49        ),
50    )
51    def test_valid(self):
52        """Check license verification"""
53        lic = License.objects.create(key=generate_id())
54        self.assertTrue(lic.status.status().is_valid)
55        self.assertEqual(lic.internal_users, 100)

Check license verification

def test_invalid(self):
57    def test_invalid(self):
58        """Test invalid license"""
59        with self.assertRaises(ValidationError):
60            License.objects.create(key=generate_id())

Test invalid license

@patch('authentik.enterprise.license.LicenseKey.validate', MagicMock(return_value=LicenseKey(aud='', exp=expiry_valid, name=generate_id(), internal_users=100, external_users=100)))
def test_valid_multiple(self):
62    @patch(
63        "authentik.enterprise.license.LicenseKey.validate",
64        MagicMock(
65            return_value=LicenseKey(
66                aud="",
67                exp=expiry_valid,
68                name=generate_id(),
69                internal_users=100,
70                external_users=100,
71            )
72        ),
73    )
74    def test_valid_multiple(self):
75        """Check license verification"""
76        lic = License.objects.create(key=generate_id(), expiry=expiry_valid)
77        self.assertTrue(lic.status.status().is_valid)
78        lic2 = License.objects.create(key=generate_id(), expiry=expiry_valid)
79        self.assertTrue(lic2.status.status().is_valid)
80        total = LicenseKey.get_total()
81        self.assertEqual(total.internal_users, 200)
82        self.assertEqual(total.external_users, 200)
83        self.assertEqual(total.exp, expiry_valid)
84        self.assertTrue(total.status().is_valid)

Check license verification

@patch('authentik.enterprise.license.LicenseKey.validate', MagicMock(return_value=LicenseKey(aud='', exp=expiry_valid, name=generate_id(), internal_users=100, external_users=100)))
@patch('authentik.enterprise.license.LicenseKey.get_internal_user_count', MagicMock(return_value=1000))
@patch('authentik.enterprise.license.LicenseKey.get_external_user_count', MagicMock(return_value=1000))
@patch('authentik.enterprise.license.LicenseKey.record_usage', MagicMock())
def test_limit_exceeded_read_only(self):
 86    @patch(
 87        "authentik.enterprise.license.LicenseKey.validate",
 88        MagicMock(
 89            return_value=LicenseKey(
 90                aud="",
 91                exp=expiry_valid,
 92                name=generate_id(),
 93                internal_users=100,
 94                external_users=100,
 95            )
 96        ),
 97    )
 98    @patch(
 99        "authentik.enterprise.license.LicenseKey.get_internal_user_count",
100        MagicMock(return_value=1000),
101    )
102    @patch(
103        "authentik.enterprise.license.LicenseKey.get_external_user_count",
104        MagicMock(return_value=1000),
105    )
106    @patch(
107        "authentik.enterprise.license.LicenseKey.record_usage",
108        MagicMock(),
109    )
110    def test_limit_exceeded_read_only(self):
111        """Check license verification"""
112        License.objects.create(key=generate_id())
113        usage = LicenseUsage.objects.create(
114            internal_user_count=100,
115            external_user_count=100,
116            status=LicenseUsageStatus.VALID,
117        )
118        usage.record_date = now() - timedelta(weeks=THRESHOLD_READ_ONLY_WEEKS + 1)
119        usage.save(update_fields=["record_date"])
120        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.READ_ONLY)

Check license verification

@patch('authentik.enterprise.license.LicenseKey.validate', MagicMock(return_value=LicenseKey(aud='', exp=expiry_valid, name=generate_id(), internal_users=100, external_users=100)))
@patch('authentik.enterprise.license.LicenseKey.get_internal_user_count', MagicMock(return_value=1000))
@patch('authentik.enterprise.license.LicenseKey.get_external_user_count', MagicMock(return_value=1000))
@patch('authentik.enterprise.license.LicenseKey.record_usage', MagicMock())
def test_limit_exceeded_user_warning(self):
122    @patch(
123        "authentik.enterprise.license.LicenseKey.validate",
124        MagicMock(
125            return_value=LicenseKey(
126                aud="",
127                exp=expiry_valid,
128                name=generate_id(),
129                internal_users=100,
130                external_users=100,
131            )
132        ),
133    )
134    @patch(
135        "authentik.enterprise.license.LicenseKey.get_internal_user_count",
136        MagicMock(return_value=1000),
137    )
138    @patch(
139        "authentik.enterprise.license.LicenseKey.get_external_user_count",
140        MagicMock(return_value=1000),
141    )
142    @patch(
143        "authentik.enterprise.license.LicenseKey.record_usage",
144        MagicMock(),
145    )
146    def test_limit_exceeded_user_warning(self):
147        """Check license verification"""
148        License.objects.create(key=generate_id())
149        usage = LicenseUsage.objects.create(
150            internal_user_count=100,
151            external_user_count=100,
152            status=LicenseUsageStatus.VALID,
153        )
154        usage.record_date = now() - timedelta(weeks=THRESHOLD_WARNING_USER_WEEKS + 1)
155        usage.save(update_fields=["record_date"])
156        self.assertEqual(
157            LicenseKey.get_total().summary().status, LicenseUsageStatus.LIMIT_EXCEEDED_USER
158        )

Check license verification

@patch('authentik.enterprise.license.LicenseKey.validate', MagicMock(return_value=LicenseKey(aud='', exp=expiry_valid, name=generate_id(), internal_users=100, external_users=100)))
@patch('authentik.enterprise.license.LicenseKey.get_internal_user_count', MagicMock(return_value=1000))
@patch('authentik.enterprise.license.LicenseKey.get_external_user_count', MagicMock(return_value=1000))
@patch('authentik.enterprise.license.LicenseKey.record_usage', MagicMock())
def test_limit_exceeded_admin_warning(self):
160    @patch(
161        "authentik.enterprise.license.LicenseKey.validate",
162        MagicMock(
163            return_value=LicenseKey(
164                aud="",
165                exp=expiry_valid,
166                name=generate_id(),
167                internal_users=100,
168                external_users=100,
169            )
170        ),
171    )
172    @patch(
173        "authentik.enterprise.license.LicenseKey.get_internal_user_count",
174        MagicMock(return_value=1000),
175    )
176    @patch(
177        "authentik.enterprise.license.LicenseKey.get_external_user_count",
178        MagicMock(return_value=1000),
179    )
180    @patch(
181        "authentik.enterprise.license.LicenseKey.record_usage",
182        MagicMock(),
183    )
184    def test_limit_exceeded_admin_warning(self):
185        """Check license verification"""
186        License.objects.create(key=generate_id())
187        usage = LicenseUsage.objects.create(
188            internal_user_count=100,
189            external_user_count=100,
190            status=LicenseUsageStatus.VALID,
191        )
192        usage.record_date = now() - timedelta(weeks=THRESHOLD_WARNING_ADMIN_WEEKS + 1)
193        usage.save(update_fields=["record_date"])
194        self.assertEqual(
195            LicenseKey.get_total().summary().status, LicenseUsageStatus.LIMIT_EXCEEDED_ADMIN
196        )

Check license verification

@patch('authentik.enterprise.license.LicenseKey.validate', MagicMock(return_value=LicenseKey(aud='', exp=expiry_expired_read_only, name=generate_id(), internal_users=100, external_users=100)))
@patch('authentik.enterprise.license.LicenseKey.record_usage', MagicMock())
def test_expiry_read_only(self):
198    @patch(
199        "authentik.enterprise.license.LicenseKey.validate",
200        MagicMock(
201            return_value=LicenseKey(
202                aud="",
203                exp=expiry_expired_read_only,
204                name=generate_id(),
205                internal_users=100,
206                external_users=100,
207            )
208        ),
209    )
210    @patch(
211        "authentik.enterprise.license.LicenseKey.record_usage",
212        MagicMock(),
213    )
214    def test_expiry_read_only(self):
215        """Check license verification"""
216        License.objects.create(key=generate_id())
217        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.READ_ONLY)

Check license verification

@patch('authentik.enterprise.license.LicenseKey.validate', MagicMock(return_value=LicenseKey(aud='', exp=expiry_expired, name=generate_id(), internal_users=100, external_users=100)))
@patch('authentik.enterprise.license.LicenseKey.record_usage', MagicMock())
def test_expiry_expired(self):
219    @patch(
220        "authentik.enterprise.license.LicenseKey.validate",
221        MagicMock(
222            return_value=LicenseKey(
223                aud="",
224                exp=expiry_expired,
225                name=generate_id(),
226                internal_users=100,
227                external_users=100,
228            )
229        ),
230    )
231    @patch(
232        "authentik.enterprise.license.LicenseKey.record_usage",
233        MagicMock(),
234    )
235    def test_expiry_expired(self):
236        """Check license verification"""
237        User.objects.all().delete()
238        License.objects.all().delete()
239        License.objects.create(key=generate_id(), expiry=expiry_expired)
240        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.EXPIRED)

Check license verification

@patch('authentik.enterprise.license.LicenseKey.validate', MagicMock(return_value=LicenseKey(aud='', exp=expiry_soon, name=generate_id(), internal_users=100, external_users=100)))
@patch('authentik.enterprise.license.LicenseKey.record_usage', MagicMock())
def test_expiry_soon(self):
242    @patch(
243        "authentik.enterprise.license.LicenseKey.validate",
244        MagicMock(
245            return_value=LicenseKey(
246                aud="",
247                exp=expiry_soon,
248                name=generate_id(),
249                internal_users=100,
250                external_users=100,
251            )
252        ),
253    )
254    @patch(
255        "authentik.enterprise.license.LicenseKey.record_usage",
256        MagicMock(),
257    )
258    def test_expiry_soon(self):
259        """Check license verification"""
260        License.objects.create(key=generate_id())
261        self.assertEqual(LicenseKey.get_total().summary().status, LicenseUsageStatus.EXPIRY_SOON)

Check license verification