1
0
mirror of https://github.com/peeringdb/peeringdb.git synced 2024-05-11 05:55:09 +00:00

PR qu20020 branding fixes (#467)

* Qu20020 - Assorted Fixes

- PeeringDB version is missing on the error page footer #432
- Inconsistent page widths #446
- Facility countries show up in different languages #448
- sponsor level in search results #449

* fix tests
This commit is contained in:
Matt Griswold
2019-04-01 15:01:57 -05:00
committed by GitHub
parent 95438d0031
commit fa85504d71
21 changed files with 524 additions and 273 deletions

View File

@@ -2,13 +2,16 @@
Unit-tests for quick search functionality - note that advanced search is not
tested here as that is using the PDB API entirely.
"""
import re
import datetime
import pytest
from django.test import TestCase
from django.test import TestCase, RequestFactory
import peeringdb_server.search as search
import peeringdb_server.models as models
import peeringdb_server.views as views
class SearchTests(TestCase):
@@ -24,6 +27,8 @@ class SearchTests(TestCase):
search.SEARCH_CACHE["search_index"] = {}
cls.instances = {}
cls.instances_sponsored = {}
# create an instance of each searchable model, so we have something
# to search for
cls.org = models.Organization.objects.create(name="Test org")
@@ -36,6 +41,26 @@ class SearchTests(TestCase):
status="ok", org=cls.org, name="Test %s" % model.handleref.tag,
**kwargs)
# we also need to test that sponsor ship status comes through
# accordingly
cls.org_w_sponsorship = models.Organization.objects.create(name="Sponsor org", status="ok")
cls.sponsorship = models.Sponsorship.objects.create(
org=cls.org_w_sponsorship,
start_date=datetime.datetime.now() - datetime.timedelta(days=1),
end_date=datetime.datetime.now() + datetime.timedelta(days=1),
level=1);
for model in search.searchable_models:
if model.handleref.tag == "net":
kwargs = {"asn": 2}
else:
kwargs = {}
cls.instances_sponsored[model.handleref.tag] = model.objects.create(
status="ok", org=cls.org_w_sponsorship,
name="Sponsor %s" % model.handleref.tag,
**kwargs)
def test_search(self):
"""
search for entities containing 'Test' - this should return all
@@ -47,14 +72,32 @@ class SearchTests(TestCase):
assert k in rv
assert len(rv[k]) == 1
assert rv[k][0]["name"] == inst.search_result_name
assert rv[k][0]["org_id"] == inst.org_id
rv = search.search("as1")
assert len(rv["net"]) == 1
assert rv["net"][0]["name"] == self.instances["net"].search_result_name
assert rv["net"][0]["org_id"] == self.instances["net"].org_id
rv = search.search("asn1")
assert len(rv["net"]) == 1
assert rv["net"][0]["name"] == self.instances["net"].search_result_name
assert rv["net"][0]["org_id"] == self.instances["net"].org_id
def test_sponsor_badges(self):
"""
Test that the sponsor badges show up in search result
"""
factory = RequestFactory()
request = factory.get("/search",{"q":"Sponsor"})
response = views.request_search(request)
m = re.findall(re.escape(
'<a href="/sponsors" class="sponsor silver">'),
response.content)
assert len(m) == 3
def test_search_case(self):
"""
@@ -67,6 +110,7 @@ class SearchTests(TestCase):
assert len(rv[k]) == 1
assert rv[k][0]["name"] == inst.search_result_name
def test_index_updates(self):
"""
test that indexes get updated correctly when objects are created

85
tests/test_sponsors.py Normal file
View File

@@ -0,0 +1,85 @@
import pytest
import json
import uuid
import re
from django.test import Client, TestCase, RequestFactory
from django.contrib.auth.models import Group, AnonymousUser
from django.contrib.auth import get_user
import django_namespace_perms as nsp
import peeringdb_server.views as views
import peeringdb_server.models as models
class ViewTestCase(TestCase):
entities = ["ix", "net", "fac"]
@classmethod
def setUpTestData(cls):
# create user and guest group
guest_group = Group.objects.create(name="guest")
user_group = Group.objects.create(name="user")
cls.guest_user = models.User.objects.create_user(
"guest", "guest@localhost", "guest")
cls.guest_user.set_password("guest")
guest_group.user_set.add(cls.guest_user)
# create organizations
cls.organizations = dict((k,
models.Organization.objects.create(
name="Sponsor Org %s" % k, status="ok"))
for k in ["a", "b", "c", "d"])
# create sponsorships
cls.sponsorships = {
"a": models.Sponsorship.objects.create(
org=cls.organizations.get("a"), logo="fake.png",
url="org-a.com", level=1),
"b": models.Sponsorship.objects.create(
org=cls.organizations.get("b"), logo="fake.png", level=1),
"c": models.Sponsorship.objects.create(
org=cls.organizations.get("c"), logo="fake.png", level=2),
"d": models.Sponsorship.objects.create(
org=cls.organizations.get("d"), level=1)
}
def setUp(self):
self.factory = RequestFactory()
def test_data_view(self):
c = Client()
resp = c.get("/data/sponsors", follow=True)
self.assertEqual(resp.status_code, 200)
expected = {u'sponsors': {u'1': {u'id': 1, u'name': u'silver'}, u'3': {u'id': 3, u'name': u'gold'}, u'2': {u'id': 2, u'name': u'silver'}, u'4': {u'id': 4, u'name': u'silver'}}}
self.assertEqual(resp.json(), expected)
def test_view(self):
c = Client()
resp = c.get("/sponsors", follow=True)
self.assertEqual(resp.status_code, 200)
#make sure org a,b and c exist in the sponsors page
self.assertGreater(resp.content.find(self.organizations["a"].name), -1)
self.assertGreater(resp.content.find(self.organizations["b"].name), -1)
self.assertGreater(resp.content.find(self.organizations["c"].name), -1)
#make sure org d does not exist in the sponsors page
self.assertEqual(resp.content.find(self.organizations["d"].name), -1)
#makre sure order is randomized with each view
i = 0
rgx = re.compile("fake.png\" alt=\"([^\"]+)\"")
a = re.findall(rgx, resp.content)
while i < 100:
resp = c.get("/sponsors", follow=True)
b = re.findall(rgx, resp.content)
self.assertEqual(len(a), len(b))
if b != a:
break
i += 1
self.assertLess(i, 99)