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:
		@@ -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
									
								
							
							
						
						
									
										85
									
								
								tests/test_sponsors.py
									
									
									
									
									
										Normal 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)
 | 
			
		||||
		Reference in New Issue
	
	Block a user