Changeset 2900 in products
- Timestamp:
- Oct 20, 2010 1:10:45 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/tests/testUsageKeywords.py
r2894 r2900 1 1 from base import * 2 2 import urllib2 3 from StringIO import StringIO 3 4 from zope.component import queryMultiAdapter 4 5 from zope.interface import alsoProvides … … 81 82 name="checkSEOKeywords") 82 83 83 def patchURLLib(self ):84 def patchURLLib(self, fnc): 84 85 self.orig_urlopen = urllib2.urlopen 85 def patch_urlopen(*args, **kwargs): 86 if args[0] == self.my_doc.absolute_url(): 87 return unicode(self.my_doc() + self.key).encode("utf-8") 88 else: 89 return self.orig_urlopen(*args, **kwargs) 90 urllib2.urlopen = patch_urlopen 86 self.urlfd = StringIO() 87 urllib2.urlopen = fnc 91 88 92 89 def unpatchURLLib(self): 93 90 urllib2.urlopen = self.orig_urlopen 91 self.urlfd.close() 94 92 95 93 def test_InternalPageRendering(self): 96 94 self.assertTrue(not self.seo.external_keywords_test) 95 # Only keywords from content must present in check view 97 96 self.assertTrue('2' in self.chckView()) 98 97 99 98 def test_ExternalPageRendering(self): 99 def patch_urlopen(*args, **kwargs): 100 if args[0] == self.my_doc.absolute_url(): 101 self.urlfd.write(unicode(self.my_doc() + self.key).encode("utf-8")) 102 self.urlfd.seek(0) 103 return self.urlfd 104 else: 105 return self.orig_urlopen(*args, **kwargs) 100 106 self.seo._updateProperty("external_keywords_test", True) 101 self.patchURLLib( )107 self.patchURLLib(fnc=patch_urlopen) 102 108 self.assertTrue(self.seo.external_keywords_test) 109 # 1. Extra keyword must present in check view 103 110 self.assertTrue('3' in self.chckView()) 111 # 2. Opened urllib file descriptor must be closed 112 self.assertTrue(self.urlfd.closed, "Opened file descriptor was not closed.") 113 self.unpatchURLLib() 114 115 def test_ExternalURLError(self): 116 def patch_urlopen(*args, **kwargs): 117 if args[0] == self.my_doc.absolute_url(): 118 raise urllib2.URLError("Some URL Error occured") 119 else: 120 return self.orig_urlopen(*args, **kwargs) 121 self.seo._updateProperty("external_keywords_test", True) 122 self.patchURLLib(fnc=patch_urlopen) 123 self.assertTrue(self.seo.external_keywords_test) 124 # 1. Information about problem must present in check view 125 self.assertTrue("Problem with page retrieval" in self.chckView()) 126 # 2. Opened urllib file descriptor should not be closed because 127 # it even not returned to the view 128 self.assertFalse(self.urlfd.closed, "Opened file descriptor was closed.") 129 self.unpatchURLLib() 130 131 def test_ExternalIOError(self): 132 def patch_urlopen(*args, **kwargs): 133 if args[0] == self.my_doc.absolute_url(): 134 self.urlfd.write(unicode(self.my_doc() + self.key).encode("utf-8")) 135 self.urlfd.seek(0) 136 return self.urlfd 137 else: 138 return self.orig_urlopen(*args, **kwargs) 139 def patch_read(*args, **kwargs): 140 raise IOError() 141 # Patch urllib2.urlopen to emulate external url retrieval 142 self.patchURLLib(fnc=patch_urlopen) 143 # Patch opened by urllib2 file descriptor to emulate IOError during reading 144 self.urlfd.read = patch_read 145 self.seo._updateProperty("external_keywords_test", True) 146 self.assertTrue(self.seo.external_keywords_test) 147 # 1. Information about problem must present in check view 148 self.assertTrue("Problem with page retrieval" in self.chckView()) 149 # 2. Opened urllib file descriptor must be closed 150 self.assertTrue(self.urlfd.closed, "Opened file descriptor was not closed.") 104 151 self.unpatchURLLib() 105 152
Note: See TracChangeset
for help on using the changeset viewer.