290 lines
11 KiB
Python
290 lines
11 KiB
Python
import os
|
|
import shutil
|
|
import urllib
|
|
|
|
from pyquery import PyQuery
|
|
|
|
from django.conf import settings
|
|
from django.core.urlresolvers import reverse as urlreverse
|
|
|
|
from ietf.doc.models import DocAlias
|
|
from ietf.ipr.models import IprDetail
|
|
from ietf.utils.test_utils import TestCase
|
|
from ietf.utils.test_data import make_test_data
|
|
|
|
|
|
class IprTests(TestCase):
|
|
def setUp(self):
|
|
# for patent number search
|
|
self.ipr_dir = os.path.abspath("tmp-ipr-dir")
|
|
if not os.path.exists(self.ipr_dir):
|
|
os.mkdir(self.ipr_dir)
|
|
settings.IPR_DOCUMENT_PATH = self.ipr_dir
|
|
|
|
def tearDown(self):
|
|
shutil.rmtree(self.ipr_dir)
|
|
|
|
def test_overview(self):
|
|
make_test_data()
|
|
ipr = IprDetail.objects.get(title="Statement regarding rights")
|
|
|
|
r = self.client.get(urlreverse("ipr_showlist"))
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
def test_ipr_details(self):
|
|
make_test_data()
|
|
ipr = IprDetail.objects.get(title="Statement regarding rights")
|
|
|
|
r = self.client.get(urlreverse("ipr_show", kwargs=dict(ipr_id=ipr.pk)))
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
def test_iprs_for_drafts(self):
|
|
draft = make_test_data()
|
|
ipr = IprDetail.objects.get(title="Statement regarding rights")
|
|
|
|
r = self.client.get(urlreverse("ietf.ipr.views.iprs_for_drafts_txt"))
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(draft.name in r.content)
|
|
self.assertTrue(str(ipr.pk) in r.content)
|
|
|
|
def test_about(self):
|
|
r = self.client.get(urlreverse("ietf.ipr.views.about"))
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue("File a disclosure" in r.content)
|
|
|
|
def test_search(self):
|
|
draft = make_test_data()
|
|
ipr = IprDetail.objects.get(title="Statement regarding rights")
|
|
|
|
url = urlreverse("ipr_search")
|
|
|
|
r = self.client.get(url)
|
|
self.assertEqual(r.status_code, 200)
|
|
q = PyQuery(r.content)
|
|
self.assertTrue(q("form input[name=document_search]"))
|
|
|
|
# find by id
|
|
r = self.client.get(url + "?option=document_search&id=%s" % draft.name)
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
# find draft
|
|
r = self.client.get(url + "?option=document_search&document_search=%s" % draft.name)
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
# search + select document
|
|
r = self.client.get(url + "?option=document_search&document_search=draft")
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(draft.name in r.content)
|
|
self.assertTrue(ipr.title not in r.content)
|
|
|
|
DocAlias.objects.create(name="rfc321", document=draft)
|
|
|
|
# find RFC
|
|
r = self.client.get(url + "?option=rfc_search&rfc_search=321")
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
# find by patent owner
|
|
r = self.client.get(url + "?option=patent_search&patent_search=%s" % ipr.legal_name)
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
# find by patent info
|
|
r = self.client.get(url + "?option=patent_info_search&patent_info_search=%s" % ipr.patents)
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
# find by patent info in file
|
|
filename = "ipr1.txt"
|
|
with open(os.path.join(self.ipr_dir, filename), "w") as f:
|
|
f.write("Hello world\nPTO9876")
|
|
ipr.legacy_url_0 = "/hello/world/%s" % filename
|
|
ipr.save()
|
|
|
|
r = self.client.get(url + "?option=patent_info_search&patent_info_search=PTO9876")
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
# must search for at least 3 characters with digit
|
|
r = self.client.get(url + "?option=patent_info_search&patent_info_search=a")
|
|
self.assertTrue("ipr search result error" in r.content.lower())
|
|
|
|
r = self.client.get(url + "?option=patent_info_search&patent_info_search=aaa")
|
|
self.assertTrue("ipr search result error" in r.content.lower())
|
|
|
|
# find by group acronym
|
|
r = self.client.get(url + "?option=wg_search&wg_search=%s" % draft.group.acronym)
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
# find by doc title
|
|
r = self.client.get(url + "?option=title_search&title_search=%s" % urllib.quote(draft.title))
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
# find by ipr title
|
|
r = self.client.get(url + "?option=ipr_title_search&ipr_title_search=%s" % urllib.quote(ipr.title))
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
def test_feed(self):
|
|
make_test_data()
|
|
ipr = IprDetail.objects.get(title="Statement regarding rights")
|
|
|
|
r = self.client.get("/feed/ipr/")
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue(ipr.title in r.content)
|
|
|
|
def test_sitemap(self):
|
|
make_test_data()
|
|
ipr = IprDetail.objects.get(title="Statement regarding rights")
|
|
|
|
r = self.client.get("/sitemap-ipr.xml")
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue("/ipr/%s/" % ipr.pk in r.content)
|
|
|
|
def test_new_generic(self):
|
|
make_test_data()
|
|
|
|
url = urlreverse("ietf.ipr.new.new", kwargs={ "type": "generic" })
|
|
|
|
# faulty post
|
|
r = self.client.post(url, {
|
|
"legal_name": "Test Legal",
|
|
})
|
|
self.assertEqual(r.status_code, 200)
|
|
q = PyQuery(r.content)
|
|
self.assertTrue(len(q("ul.errorlist")) > 0)
|
|
|
|
# successful post
|
|
r = self.client.post(url, {
|
|
"legal_name": "Test Legal",
|
|
"hold_name": "Test Holder",
|
|
"hold_telephone": "555-555-0100",
|
|
"hold_email": "test.holder@example.com",
|
|
"ietf_name": "Test Participant",
|
|
"ietf_telephone": "555-555-0101",
|
|
"ietf_email": "test.participant@example.com",
|
|
"patents": "none",
|
|
"date_applied": "never",
|
|
"country": "nowhere",
|
|
"licensing_option": "5",
|
|
"subm_name": "Test Submitter",
|
|
"subm_telephone": "555-555-0102",
|
|
"subm_email": "test.submitter@example.com"
|
|
})
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue("Your IPR disclosure has been submitted" in r.content)
|
|
|
|
iprs = IprDetail.objects.filter(title__icontains="General License Statement")
|
|
self.assertEqual(len(iprs), 1)
|
|
ipr = iprs[0]
|
|
self.assertEqual(ipr.legal_name, "Test Legal")
|
|
self.assertEqual(ipr.status, 0)
|
|
|
|
def test_new_specific(self):
|
|
draft = make_test_data()
|
|
|
|
url = urlreverse("ietf.ipr.new.new", kwargs={ "type": "specific" })
|
|
|
|
# successful post
|
|
r = self.client.post(url, {
|
|
"legal_name": "Test Legal",
|
|
"hold_name": "Test Holder",
|
|
"hold_telephone": "555-555-0100",
|
|
"hold_email": "test.holder@example.com",
|
|
"ietf_name": "Test Participant",
|
|
"ietf_telephone": "555-555-0101",
|
|
"ietf_email": "test.participant@example.com",
|
|
"rfclist": DocAlias.objects.filter(name__startswith="rfc")[0].name[3:],
|
|
"draftlist": "%s-%s" % (draft.name, draft.rev),
|
|
"patents": "none",
|
|
"date_applied": "never",
|
|
"country": "nowhere",
|
|
"licensing_option": "5",
|
|
"subm_name": "Test Submitter",
|
|
"subm_telephone": "555-555-0102",
|
|
"subm_email": "test.submitter@example.com"
|
|
})
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue("Your IPR disclosure has been submitted" in r.content)
|
|
|
|
iprs = IprDetail.objects.filter(title__icontains=draft.name)
|
|
self.assertEqual(len(iprs), 1)
|
|
ipr = iprs[0]
|
|
self.assertEqual(ipr.legal_name, "Test Legal")
|
|
self.assertEqual(ipr.status, 0)
|
|
|
|
def test_new_thirdparty(self):
|
|
draft = make_test_data()
|
|
|
|
url = urlreverse("ietf.ipr.new.new", kwargs={ "type": "third-party" })
|
|
|
|
# successful post
|
|
r = self.client.post(url, {
|
|
"legal_name": "Test Legal",
|
|
"hold_name": "Test Holder",
|
|
"hold_telephone": "555-555-0100",
|
|
"hold_email": "test.holder@example.com",
|
|
"ietf_name": "Test Participant",
|
|
"ietf_telephone": "555-555-0101",
|
|
"ietf_email": "test.participant@example.com",
|
|
"rfclist": "",
|
|
"draftlist": "%s-%s" % (draft.name, draft.rev),
|
|
"patents": "none",
|
|
"date_applied": "never",
|
|
"country": "nowhere",
|
|
"licensing_option": "5",
|
|
"subm_name": "Test Submitter",
|
|
"subm_telephone": "555-555-0102",
|
|
"subm_email": "test.submitter@example.com"
|
|
})
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue("Your IPR disclosure has been submitted" in r.content)
|
|
|
|
iprs = IprDetail.objects.filter(title__icontains="belonging to Test Legal")
|
|
self.assertEqual(len(iprs), 1)
|
|
ipr = iprs[0]
|
|
self.assertEqual(ipr.legal_name, "Test Legal")
|
|
self.assertEqual(ipr.status, 0)
|
|
|
|
def test_update(self):
|
|
draft = make_test_data()
|
|
original_ipr = IprDetail.objects.get(title="Statement regarding rights")
|
|
|
|
url = urlreverse("ietf.ipr.new.update", kwargs={ "ipr_id": original_ipr.pk })
|
|
|
|
# successful post
|
|
r = self.client.post(url, {
|
|
"legal_name": "Test Legal",
|
|
"hold_name": "Test Holder",
|
|
"hold_telephone": "555-555-0100",
|
|
"hold_email": "test.holder@example.com",
|
|
"ietf_name": "Test Participant",
|
|
"ietf_telephone": "555-555-0101",
|
|
"ietf_email": "test.participant@example.com",
|
|
"rfclist": "",
|
|
"draftlist": "%s-%s" % (draft.name, draft.rev),
|
|
"patents": "none",
|
|
"date_applied": "never",
|
|
"country": "nowhere",
|
|
"licensing_option": "5",
|
|
"subm_name": "Test Submitter",
|
|
"subm_telephone": "555-555-0102",
|
|
"subm_email": "test.submitter@example.com"
|
|
})
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertTrue("Your IPR disclosure has been submitted" in r.content)
|
|
|
|
iprs = IprDetail.objects.filter(title__icontains=draft.name)
|
|
self.assertEqual(len(iprs), 1)
|
|
ipr = iprs[0]
|
|
self.assertEqual(ipr.legal_name, "Test Legal")
|
|
self.assertEqual(ipr.status, 0)
|
|
|
|
self.assertTrue(ipr.updates.filter(updated=original_ipr))
|