Allow LAN admin access and add a campaign mint form (#11).
CI / test (pull_request) Successful in 6s
CI / test (pull_request) Successful in 6s
Serve /admin/ on 10.0.0.128 so it can be used from another machine on the network, and mint tracked short URLs from domain/campaign/source/metric.
This commit is contained in:
+79
-1
@@ -426,7 +426,11 @@ class DebugCreateTests(TestCase):
|
||||
self.assertContains(response, link.public_short_url)
|
||||
|
||||
|
||||
ADMIN_SETTINGS = {**SETTINGS, "SHORT_ADMIN_HOSTS": ["testserver", "localhost"]}
|
||||
ADMIN_SETTINGS = {
|
||||
**SETTINGS,
|
||||
"SHORT_ADMIN_HOSTS": ["testserver", "localhost", "10.0.0.128"],
|
||||
"ALLOWED_HOSTS": [*SETTINGS["ALLOWED_HOSTS"], "10.0.0.128"],
|
||||
}
|
||||
|
||||
|
||||
@override_settings(**ADMIN_SETTINGS)
|
||||
@@ -497,3 +501,77 @@ class AdminTests(TestCase):
|
||||
self.assertEqual(response.status_code, 404)
|
||||
response = self.client.get("/admin/", HTTP_HOST="shortener.example.com")
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_admin_200_on_lan_ip(self):
|
||||
response = self.client.get("/admin/", HTTP_HOST="10.0.0.128")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "Create a short link")
|
||||
self.assertContains(response, "Domain")
|
||||
self.assertContains(response, "Campaign")
|
||||
self.assertContains(response, "Source")
|
||||
self.assertContains(response, "Metric")
|
||||
|
||||
def test_quick_mint_creates_tracked_url(self):
|
||||
response = self.client.post(
|
||||
"/admin/",
|
||||
{
|
||||
"domain": "mkdrealtor.com",
|
||||
"campaign": "open-house",
|
||||
"source": "sms",
|
||||
"metric": "listing-click",
|
||||
},
|
||||
HTTP_HOST="10.0.0.128",
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
created = ShortLink.objects.exclude(code="a3k9xm").get()
|
||||
self.assertEqual(
|
||||
created.target_url,
|
||||
"https://mkdrealtor.com/?utm_campaign=open-house&utm_source=sms&utm_medium=listing-click",
|
||||
)
|
||||
self.assertEqual(created.title, "open-house")
|
||||
self.assertEqual(created.created_by_token, "admin")
|
||||
self.assertContains(response, created.public_short_url)
|
||||
self.assertContains(response, "Copy")
|
||||
|
||||
def test_quick_mint_rejects_unknown_host(self):
|
||||
response = self.client.post(
|
||||
"/admin/",
|
||||
{
|
||||
"domain": "evil.example",
|
||||
"campaign": "spam",
|
||||
"source": "sms",
|
||||
"metric": "click",
|
||||
},
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(ShortLink.objects.exclude(code="a3k9xm").count(), 0)
|
||||
self.assertContains(response, "host not allowlisted")
|
||||
|
||||
|
||||
class TrackedUrlTests(TestCase):
|
||||
@override_settings(**SETTINGS)
|
||||
def test_build_tracked_url(self):
|
||||
from links.services import build_tracked_url
|
||||
|
||||
url = build_tracked_url(
|
||||
domain="https://mkdrealtor.com/ignored",
|
||||
campaign="open house",
|
||||
source="sms",
|
||||
metric="listing-click",
|
||||
)
|
||||
self.assertEqual(
|
||||
url,
|
||||
"https://mkdrealtor.com/?utm_campaign=open+house&utm_source=sms&utm_medium=listing-click",
|
||||
)
|
||||
|
||||
@override_settings(**SETTINGS)
|
||||
def test_build_tracked_url_rejects_unknown_host(self):
|
||||
from links.services import ValidationError, build_tracked_url
|
||||
|
||||
with self.assertRaises(ValidationError):
|
||||
build_tracked_url(
|
||||
domain="evil.example",
|
||||
campaign="c",
|
||||
source="s",
|
||||
metric="m",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user