|
@ -1,5 +1,8 @@ |
|
|
|
|
|
from datetime import timedelta as td |
|
|
|
|
|
|
|
|
from django.conf import settings |
|
|
from django.conf import settings |
|
|
from django.core.signing import base64_hmac |
|
|
from django.core.signing import base64_hmac |
|
|
|
|
|
from django.utils.timezone import now |
|
|
|
|
|
|
|
|
from hc.api.models import Check |
|
|
from hc.api.models import Check |
|
|
from hc.test import BaseTestCase |
|
|
from hc.test import BaseTestCase |
|
@ -11,16 +14,17 @@ class BadgeTestCase(BaseTestCase): |
|
|
super(BadgeTestCase, self).setUp() |
|
|
super(BadgeTestCase, self).setUp() |
|
|
self.check = Check.objects.create(user=self.alice, tags="foo bar") |
|
|
self.check = Check.objects.create(user=self.alice, tags="foo bar") |
|
|
|
|
|
|
|
|
|
|
|
sig = base64_hmac(str(self.alice.username), "foo", settings.SECRET_KEY) |
|
|
|
|
|
sig = sig[:8] |
|
|
|
|
|
self.svg_url = "/badge/%s/%s/foo.svg" % (self.alice.username, sig) |
|
|
|
|
|
self.json_url = "/badge/%s/%s/foo.json" % (self.alice.username, sig) |
|
|
|
|
|
|
|
|
def test_it_rejects_bad_signature(self): |
|
|
def test_it_rejects_bad_signature(self): |
|
|
r = self.client.get("/badge/%s/12345678/foo.svg" % self.alice.username) |
|
|
r = self.client.get("/badge/%s/12345678/foo.svg" % self.alice.username) |
|
|
assert r.status_code == 404 |
|
|
assert r.status_code == 404 |
|
|
|
|
|
|
|
|
def test_it_returns_svg(self): |
|
|
def test_it_returns_svg(self): |
|
|
sig = base64_hmac(str(self.alice.username), "foo", settings.SECRET_KEY) |
|
|
|
|
|
sig = sig[:8] |
|
|
|
|
|
url = "/badge/%s/%s/foo.svg" % (self.alice.username, sig) |
|
|
|
|
|
|
|
|
|
|
|
r = self.client.get(url) |
|
|
|
|
|
|
|
|
r = self.client.get(self.svg_url) |
|
|
self.assertEqual(r["Access-Control-Allow-Origin"], "*") |
|
|
self.assertEqual(r["Access-Control-Allow-Origin"], "*") |
|
|
self.assertContains(r, "#4c1") |
|
|
self.assertContains(r, "#4c1") |
|
|
|
|
|
|
|
@ -32,3 +36,31 @@ class BadgeTestCase(BaseTestCase): |
|
|
r = self.client.options(url) |
|
|
r = self.client.options(url) |
|
|
self.assertEqual(r.status_code, 204) |
|
|
self.assertEqual(r.status_code, 204) |
|
|
self.assertEqual(r["Access-Control-Allow-Origin"], "*") |
|
|
self.assertEqual(r["Access-Control-Allow-Origin"], "*") |
|
|
|
|
|
|
|
|
|
|
|
def test_it_handles_started_but_down(self): |
|
|
|
|
|
self.check.last_start = now() |
|
|
|
|
|
self.check.tags = "foo" |
|
|
|
|
|
self.check.status = "down" |
|
|
|
|
|
self.check.save() |
|
|
|
|
|
|
|
|
|
|
|
r = self.client.get(self.json_url) |
|
|
|
|
|
self.assertContains(r, "down") |
|
|
|
|
|
|
|
|
|
|
|
def test_it_shows_grace_badge(self): |
|
|
|
|
|
self.check.last_ping = now() - td(days=1, minutes=10) |
|
|
|
|
|
self.check.tags = "foo" |
|
|
|
|
|
self.check.status = "up" |
|
|
|
|
|
self.check.save() |
|
|
|
|
|
|
|
|
|
|
|
r = self.client.get(self.json_url) |
|
|
|
|
|
self.assertContains(r, "late") |
|
|
|
|
|
|
|
|
|
|
|
def test_it_shows_started_but_grace_badge(self): |
|
|
|
|
|
self.check.last_start = now() |
|
|
|
|
|
self.check.last_ping = now() - td(days=1, minutes=10) |
|
|
|
|
|
self.check.tags = "foo" |
|
|
|
|
|
self.check.status = "up" |
|
|
|
|
|
self.check.save() |
|
|
|
|
|
|
|
|
|
|
|
r = self.client.get(self.json_url) |
|
|
|
|
|
self.assertContains(r, "late") |