예제 #1
0
    def test_index_updates(self):
        """
        test that indexes get updated correctly when objects are created
        or deleted or updated from pending to ok
        """

        # this object will be status pending and should not be returned in the search
        # results
        new_ix_p = models.InternetExchange.objects.create(
            status="pending", org=self.org, name="Test IU ix")
        self.test_search()

        # this object will be status ok, and should show up in the index
        new_ix_o = models.InternetExchange.objects.create(
            status="ok", org=self.org, name="Test IU P ix")
        rv = search.search("test")
        assert len(rv["ix"]) == 2

        # now we switch the first object to ok as well and it as well should show up in the
        # index
        new_ix_p.status = "ok"
        new_ix_p.save()
        rv = search.search("test")
        assert len(rv["ix"]) == 3

        #finally we delete both and they should disappear again
        new_ix_p.delete()
        new_ix_o.delete()
        self.test_search()
예제 #2
0
    def test_index_updates(self):
        """
        test that indexes get updated correctly when objects are created
        or deleted or updated from pending to ok
        """

        # this object will be status pending and should not be returned in the search
        # results
        new_ix_p = models.InternetExchange.objects.create(status="pending",
                                                          org=self.org,
                                                          name="Test IU ix")
        self.test_search()

        # this object will be status ok, and should show up in the index
        new_ix_o = models.InternetExchange.objects.create(status="ok",
                                                          org=self.org,
                                                          name="Test IU P ix")
        rv = search.search("test")
        assert len(rv["ix"]) == 2

        # now we switch the first object to ok as well and it as well should show up in the
        # index
        new_ix_p.status = "ok"
        new_ix_p.save()
        rv = search.search("test")
        assert len(rv["ix"]) == 3

        # finally we delete both and they should disappear again
        new_ix_p.delete()
        new_ix_o.delete()
        self.test_search()
예제 #3
0
    def test_search_unaccent(self):
        """
        search for entities containing 'ãccented' using accented and unaccented
        terms
        """
        rv = search.search(u"accented")
        for k, inst in self.instances_accented.items():
            assert k in rv
            assert len(rv[k]) == 1
            assert unidecode.unidecode(rv[k][0]["name"]) == unidecode.unidecode(inst.search_result_name)

        rv = search.search(u"ãccented")
        for k, inst in self.instances_accented.items():
            assert k in rv
            assert len(rv[k]) == 1
            assert unidecode.unidecode(rv[k][0]["name"]) == unidecode.unidecode(inst.search_result_name)
예제 #4
0
 def test_search_case(self):
     """
     search for entities containing 'test' - this should return all
     instances we created during setUp since matching is case-insensitive
     """
     rv = search.search("test")
     for k, inst in self.instances.items():
         assert k in rv
         assert len(rv[k]) == 1
         assert rv[k][0]["name"] == inst.search_result_name
예제 #5
0
 def test_search_case(self):
     """
     search for entities containing 'test' - this should return all
     instances we created during setUp since matching is case-insensitive
     """
     rv = search.search("test")
     for k, inst in self.instances.items():
         assert k in rv
         assert len(rv[k]) == 1
         assert rv[k][0]["name"] == inst.search_result_name
예제 #6
0
    def test_search(self):
        """
        search for entities containing 'Test' - this should return all
        instances we created during setUp
        """

        rv = search.search("Test")
        for k, inst in self.instances.items():
            assert k in rv
            assert len(rv[k]) == 1
            assert rv[k][0]["name"] == inst.search_result_name

        rv = search.search("as1")
        assert len(rv["net"]) == 1
        assert rv["net"][0]["name"] == self.instances["net"].search_result_name

        rv = search.search("asn1")
        assert len(rv["net"]) == 1
        assert rv["net"][0]["name"] == self.instances["net"].search_result_name
예제 #7
0
    def test_search(self):
        """
        search for entities containing 'Test' - this should return all
        instances we created during setUp
        """

        rv = search.search("Test")
        for k, inst in self.instances.items():
            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
예제 #8
0
    def test_search(self):
        """
        search for entities containing 'Test' - this should return all
        instances we created during setUp
        """

        rv = search.search("Test")
        for k, inst in list(self.instances.items()):
            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

        # test that term order does not matter

        for k, inst in list(self.instances.items()):
            rv = search.search(f"Test {k}")
            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(f"{k} Test")
            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
예제 #9
0
    def test_search_asn_match(self):
        """
        Test that exact numeric match on an ASN
        always appears at the top of the results (#232)
        """

        # network with asn 633 - this should be the first
        # resut when searching for `633`

        net_1 = models.Network.objects.create(name="Test ASN Matching",
                                              asn=633,
                                              org=self.org,
                                              status="ok")

        # network with asn 6333, this should match, but not
        # be the first result

        net_2 = models.Network.objects.create(name="Test ASN Matching 2",
                                              asn=6333,
                                              org=self.org,
                                              status="ok")

        # network with asn 6334 and 633 as part of its name
        # this should score high, but should not be the first
        # result

        net_3 = models.Network.objects.create(name="Test ASN 633 Matching",
                                              asn=6334,
                                              org=self.org,
                                              status="ok")

        # rebuild the index

        call_command("rebuild_index", "--noinput")

        rv = search.search("633")

        assert rv["net"][0]["id"] == net_1.id

        # clean up

        net_1.delete(hard=True)
        net_2.delete(hard=True)
        net_3.delete(hard=True)
        call_command("rebuild_index", "--noinput")