Members
This commit is contained in:
@@ -15,7 +15,7 @@ from django.utils import timezone
|
||||
|
||||
from members import billing, views
|
||||
from members.models import Account, CryptoInvoice, ManagedGroup, Subscription
|
||||
from members.service_groups import configured_groups, service_names, validate_service_groups
|
||||
from members.service_groups import configured_groups, service_access_catalog, service_names, validate_service_groups
|
||||
from ldap3 import Connection, MOCK_SYNC, Server
|
||||
|
||||
BASE = "ou=groups,dc=example,dc=org"
|
||||
@@ -93,6 +93,8 @@ class ServiceDisplayTests(TestCase):
|
||||
for key, tier in tiers.items():
|
||||
self.assertEqual(tier["description"], deployed[key]["description"])
|
||||
self.assertEqual(tier["benefits"], deployed[key]["benefits"])
|
||||
self.assertIn(f"{tier['label']}-tier giveaways", tier["benefits"])
|
||||
self.assertFalse(any("exclusive to" in benefit.casefold() for benefit in tier["benefits"]))
|
||||
|
||||
def test_homepage_lists_services_with_clear_access_labels(self):
|
||||
root = Path(__file__).absolute().parents[3]
|
||||
@@ -142,13 +144,38 @@ class ServiceDisplayTests(TestCase):
|
||||
def test_home_displays_exact_level_services_without_ldap_or_settings_mutation(self):
|
||||
with patch("members.directory.connection", side_effect=AssertionError("Public page must not contact LDAP")):
|
||||
response = self.client.get("/members/")
|
||||
self.assertContains(response, "Dex · single sign-on")
|
||||
self.assertEqual(response.context["free_services"], ["Dex · single sign-on", "Matrix · community chat"])
|
||||
self.assertEqual(response.context["tiers"]["supporter"]["services"], ["Gitea · Git hosting"])
|
||||
self.assertEqual(response.context["tiers"]["patron"]["services"], ["Mastodon · social networking", "PeerTube · video sharing"])
|
||||
self.assertEqual(response.context["tiers"]["premier"]["services"], [])
|
||||
catalog = response.context["services"]
|
||||
self.assertEqual(catalog, [
|
||||
{"name": "Matrix · community chat", "access": "Open Lab", "url": "https://element.eom.dev/", "favicon": "https://element.eom.dev/vector-icons/144.5a63bf2.png"},
|
||||
{"name": "Gitea · Git hosting", "access": "Bronze", "url": "https://gitea.eom.dev/", "favicon": "https://gitea.eom.dev/assets/img/favicon.svg"},
|
||||
{"name": "Mastodon · social networking", "access": "Silver", "url": "https://mastodon.eom.dev/", "favicon": "https://mastodon.eom.dev/packs/assets/favicon-48x48-DMnduFKh.png"},
|
||||
{"name": "PeerTube · video sharing", "access": "Silver", "url": "https://peertube.eom.dev/", "favicon": "https://peertube.eom.dev/client/assets/images/favicon.png"},
|
||||
])
|
||||
self.assertNotContains(response, "Dex · single sign-on")
|
||||
self.assertContains(response, 'href="https://element.eom.dev/"')
|
||||
self.assertContains(response, 'alt="" width="32" height="32"')
|
||||
self.assertIn("https://element.eom.dev", response["Content-Security-Policy"])
|
||||
self.assertEqual(response.content.count(b"Matrix \xc2\xb7 community chat"), 1)
|
||||
self.assertContains(response, "Plus all previous benefits")
|
||||
self.assertNotContains(response, "except tier-exclusive giveaways")
|
||||
self.assertContains(response, "Support independent projects and the community</li><li>Plus all previous benefits</li>")
|
||||
self.assertContains(response, "How do membership giveaways work?")
|
||||
self.assertContains(response, 'href="https://element.eom.dev/"')
|
||||
self.assertContains(response, 'src="https://element.eom.dev/vector-icons/144.5a63bf2.png"')
|
||||
self.assertIn("https://element.eom.dev", response["Content-Security-Policy"])
|
||||
self.assertNotContains(response, BASE)
|
||||
self.assertNotIn("services", TIERS["supporter"])
|
||||
|
||||
def test_service_catalog_collapses_services_shared_by_every_level(self):
|
||||
tiers = {"bronze": {"level": 1, "label": "Bronze"}, "gold": {"level": 3, "label": "Gold"}}
|
||||
groups = {
|
||||
"0": ["cn=Matrix Users," + BASE],
|
||||
"1": ["cn=Matrix Users," + BASE],
|
||||
"3": ["cn=Matrix Users," + BASE, "cn=Mastodon Users," + BASE],
|
||||
}
|
||||
self.assertEqual(service_access_catalog(tiers, groups), [
|
||||
{"name": "Matrix · community chat", "access": "Every membership level", "url": "https://element.eom.dev/", "favicon": "https://element.eom.dev/vector-icons/144.5a63bf2.png"},
|
||||
{"name": "Mastodon · social networking", "access": "Gold", "url": "https://mastodon.eom.dev/", "favicon": "https://mastodon.eom.dev/packs/assets/favicon-48x48-DMnduFKh.png"},
|
||||
])
|
||||
|
||||
@override_settings(MEMBERSHIP_SERVICE_GROUPS={})
|
||||
def test_unconfigured_services_do_not_advertise_access(self):
|
||||
|
||||
Reference in New Issue
Block a user