Esempio n. 1
0
 def test_moveToNewResource(self):
     """
     Resource was moved successfully to the specified destination URI.
     """
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     # move
     uri = self.env.getRestUrl() + '/move-test/notvc/new.xml'
     data = proc.run(MOVE, '/move-test/notvc/test.xml',
                     received_headers={'Destination': uri})
     # test if right response code
     self.assertFalse(data)
     self.assertEqual(proc.code, http.CREATED)
     # test if location header is set
     self.assertTrue(isinstance(proc.headers, dict))
     self.assertTrue('Location' in proc.headers)
     location = proc.headers.get('Location')
     self.assertEquals(location, uri)
     # get original resource
     try:
         proc.run(GET, '/move-test/notvc/test.xml').render_GET(proc)
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 2
0
 def test_getRevision(self):
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/get-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/get-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/get-test/vc/test.xml', StringIO(XML_DOC))
     # without trailing slash
     res1 = proc.run(GET, '/get-test/vc/test.xml/1')
     data1 = res1.render_GET(proc)
     # with trailing slash
     res2 = proc.run(GET, '/get-test/vc/test.xml/1/')
     data2 = res2.render_GET(proc)
     # res must be RESTResource objects
     self.assertTrue(isinstance(res1, RESTResource))
     self.assertTrue(isinstance(res2, RESTResource))
     # both results should equal
     self.assertTrue(data1 == data2)
     # check content
     self.assertEquals(data1, XML_DOC)
     # GET revision 2
     res3 = proc.run(GET, '/get-test/vc/test.xml/2')
     data3 = res3.render_GET(proc)
     self.assertEquals(data3, XML_DOC)
     res4 = proc.run(GET, '/get-test/vc/test.xml/2/')
     data4 = res4.render_GET(proc)
     self.assertEquals(data4, XML_DOC)
     # delete resource
     proc.run(DELETE, '/get-test/vc/test.xml')
 def test_getRevisionIndex(self):
     """
     Tests revision index property.
     """
     proc = Processor(self.env)
     # create resource
     XML_DOC2 = XML_BASE_DOC % ("üöäß", "%d")
     proc.run(POST, '/property-test/vc/test.xml/', StringIO(XML_DOC2 % 12))
     proc.run(PUT, '/property-test/vc/test.xml/', StringIO(XML_DOC2 % 234))
     proc.run(PUT, '/property-test/vc/test.xml/', StringIO(XML_DOC2 % 3456))
     # get index XML of latest revision w/o trailing slash
     res = proc.run(GET, '/property-test/vc/test.xml/.index')
     data = res.render_GET(proc)
     self.assertTrue("<label4>" in data)
     self.assertTrue("<value>3456</value>" in data)
     # get index XML of revision 3 w/o trailing slash
     res = proc.run(GET, '/property-test/vc/test.xml/3/.index')
     data = res.render_GET(proc)
     self.assertTrue("<label4>" in data)
     self.assertTrue("<value>3456</value>" in data)
     # get index XML of latest revision w/ trailing slash
     res = proc.run(GET, '/property-test/vc/test.xml/.index/')
     data = res.render_GET(proc)
     self.assertTrue("<label4>" in data)
     self.assertTrue("<value>3456</value>" in data)
     # get index XML of revision 3 w/ trailing slash
     res = proc.run(GET, '/property-test/vc/test.xml/3/.index/')
     data = res.render_GET(proc)
     self.assertTrue("<label4>" in data)
     self.assertTrue("<value>3456</value>" in data)
     # remove resource
     proc.run(DELETE, '/property-test/vc/test.xml')
Esempio n. 4
0
 def test_checkRegisteredMappers(self):
     """
     Fetch mapper resource at different levels.
     """
     proc = Processor(self.env)
     # root level
     data = proc.run(GET, '/')
     self.assertTrue('mapper-test' in data.keys())
     self.assertTrue('testmapping4' in data.keys())
     # virtual level
     proc = Processor(self.env)
     data = proc.run(GET, '/mapper-test')
     # registered mappers
     self.assertTrue('testmapping' in data.keys())
     self.assertTrue('testmapping2' in data.keys())
     self.assertTrue('testmapping3' in data.keys())
     # unregistered mapper
     self.assertFalse('testmapping5' in data.keys())
     # content
     proc = Processor(self.env)
     data = proc.run(GET, '/mapper-test/testmapping')
     self.assertEqual(data, 'muh')
     # HEAD equals GET
     data = proc.run(HEAD, '/testmapping4')
     self.assertEquals(data, 'MÜH')
Esempio n. 5
0
 def test_processResourceType(self):
     proc = Processor(self.env)
     proc.path = '/xml/processor-test/notvc'
     # test valid GET method
     data = proc.run(GET, '/xml/processor-test/notvc')
     # data must be a dict
     self.assertTrue(isinstance(data, dict))
     # test valid POST method
     data = proc.run(POST, '/xml/processor-test/notvc', StringIO(XML_DOC))
     # check response; data should be empty; we look into request
     self.assertFalse(data)
     self.assertEqual(proc.code, http.CREATED)
     self.assertTrue(isinstance(proc.headers, dict))
     self.assertTrue('Location' in proc.headers)
     location = proc.headers.get('Location')
     self.assertTrue(location.startswith(self.env.getRestUrl() + proc.path))
     # strip REST url from location
     location = location[len(self.env.getRestUrl()):]
     # fetch resource and compare it with original
     data = proc.run(GET, location)
     self.assertTrue(data, XML_DOC)
     # delete uploaded resource
     data = proc.run(DELETE, location)
     # check response; data should be empty; we look into request
     self.assertFalse(data)
     self.assertEqual(proc.code, http.NO_CONTENT)
Esempio n. 6
0
 def test_getRevision(self):
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/get-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/get-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/get-test/vc/test.xml', StringIO(XML_DOC))
     # without trailing slash
     res1 = proc.run(GET, '/get-test/vc/test.xml/1')
     data1 = res1.render_GET(proc)
     # with trailing slash
     res2 = proc.run(GET, '/get-test/vc/test.xml/1/')
     data2 = res2.render_GET(proc)
     # res must be RESTResource objects
     self.assertTrue(isinstance(res1, RESTResource))
     self.assertTrue(isinstance(res2, RESTResource))
     # both results should equal
     self.assertTrue(data1 == data2)
     # check content
     self.assertEquals(data1, XML_DOC)
     # GET revision 2
     res3 = proc.run(GET, '/get-test/vc/test.xml/2')
     data3 = res3.render_GET(proc)
     self.assertEquals(data3, XML_DOC)
     res4 = proc.run(GET, '/get-test/vc/test.xml/2/')
     data4 = res4.render_GET(proc)
     self.assertEquals(data4, XML_DOC)
     # delete resource
     proc.run(DELETE, '/get-test/vc/test.xml')
Esempio n. 7
0
 def test_checkRegisteredMappers(self):
     """
     Fetch mapper resource at different levels.
     """
     proc = Processor(self.env)
     # root level
     data = proc.run(GET, '/')
     self.assertTrue('mapper-test' in data.keys())
     self.assertTrue('testmapping4' in data.keys())
     # virtual level
     proc = Processor(self.env)
     data = proc.run(GET, '/mapper-test')
     # registered mappers
     self.assertTrue('testmapping' in data.keys())
     self.assertTrue('testmapping2' in data.keys())
     self.assertTrue('testmapping3' in data.keys())
     # unregistered mapper
     self.assertFalse('testmapping5' in data.keys())
     # content
     proc = Processor(self.env)
     data = proc.run(GET, '/mapper-test/testmapping')
     self.assertEqual(data, 'muh')
     # HEAD equals GET
     data = proc.run(HEAD, '/testmapping4')
     self.assertEquals(data, 'MÜH')
Esempio n. 8
0
 def test_processResourceType(self):
     proc = Processor(self.env)
     proc.path = '/xml/processor-test/notvc'
     # test valid GET method
     data = proc.run(GET, '/xml/processor-test/notvc/.meta')
     # data must be a dict
     self.assertTrue(isinstance(data, dict))
     # test valid POST method
     data = proc.run(POST, '/xml/processor-test/notvc', StringIO(XML_DOC))
     # check response; data should be empty; we look into request
     self.assertFalse(data)
     self.assertEqual(proc.code, http.CREATED)
     self.assertTrue(isinstance(proc.headers, dict))
     self.assertTrue('Location' in proc.headers)
     location = proc.headers.get('Location')
     self.assertTrue(location.startswith(self.env.getRestUrl() + proc.path))
     # strip REST url from location
     location = location[len(self.env.getRestUrl()):]
     # fetch resource and compare it with original
     data = proc.run(GET, location)
     self.assertTrue(data, XML_DOC)
     # delete uploaded resource
     data = proc.run(DELETE, location)
     # check response; data should be empty; we look into request
     self.assertFalse(data)
     self.assertEqual(proc.code, http.NO_CONTENT)
Esempio n. 9
0
 def test_getRevisionIndex(self):
     """
     Tests revision index property.
     """
     proc = Processor(self.env)
     # create resource
     XML_DOC2 = XML_BASE_DOC % ("üöäß", "%d")
     proc.run(POST, '/property-test/vc/test.xml/', StringIO(XML_DOC2 % 12))
     proc.run(PUT, '/property-test/vc/test.xml/', StringIO(XML_DOC2 % 234))
     proc.run(PUT, '/property-test/vc/test.xml/', StringIO(XML_DOC2 % 3456))
     # get index XML of latest revision w/o trailing slash
     res = proc.run(GET, '/property-test/vc/test.xml/.index')
     data = res.render_GET(proc)
     self.assertTrue("<label4>" in data)
     self.assertTrue("<value>3456</value>" in data)
     # get index XML of revision 3 w/o trailing slash
     res = proc.run(GET, '/property-test/vc/test.xml/3/.index')
     data = res.render_GET(proc)
     self.assertTrue("<label4>" in data)
     self.assertTrue("<value>3456</value>" in data)
     # get index XML of latest revision w/ trailing slash
     res = proc.run(GET, '/property-test/vc/test.xml/.index/')
     data = res.render_GET(proc)
     self.assertTrue("<label4>" in data)
     self.assertTrue("<value>3456</value>" in data)
     # get index XML of revision 3 w/ trailing slash
     res = proc.run(GET, '/property-test/vc/test.xml/3/.index/')
     data = res.render_GET(proc)
     self.assertTrue("<label4>" in data)
     self.assertTrue("<value>3456</value>" in data)
     # remove resource
     proc.run(DELETE, '/property-test/vc/test.xml')
Esempio n. 10
0
 def test_moveToNewResource(self):
     """
     Resource was moved successfully to the specified destination URI.
     """
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     # move
     uri = self.env.getRestUrl() + '/move-test/notvc/new.xml'
     data = proc.run(MOVE,
                     '/move-test/notvc/test.xml',
                     received_headers={'Destination': uri})
     # test if right response code
     self.assertFalse(data)
     self.assertEqual(proc.code, http.CREATED)
     # test if location header is set
     self.assertTrue(isinstance(proc.headers, dict))
     self.assertTrue('Location' in proc.headers)
     location = proc.headers.get('Location')
     self.assertEquals(location, uri)
     # get original resource
     try:
         proc.run(GET, '/move-test/notvc/test.xml').render_GET(proc)
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 11
0
 def test_getDisabledResourceType(self):
     proc = Processor(self.env)
     # without trailing slash
     try:
         proc.run(DELETE, '/get-test/notvc2')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 12
0
 def test_invalidMethods(self):
     proc = Processor(self.env)
     for method in ['MUH', 'XXX', 'GETPUT']:
         try:
             proc.run(method, '/')
             self.fail("Expected SeisHubError")
         except SeisHubError, e:
             self.assertEqual(e.code, http.NOT_ALLOWED)
Esempio n. 13
0
 def test_invalidMethods(self):
     proc = Processor(self.env)
     for method in ["MUH", "XXX", "GETPUT"]:
         try:
             proc.run(method, "/")
             self.fail("Expected SeisHubError")
         except SeisHubError, e:
             self.assertEqual(e.code, http.NOT_ALLOWED)
Esempio n. 14
0
 def test_someRESTResourceTypes(self):
     proc = Processor(self.env)
     result = proc.run(GET, "/")
     self.assertTrue(isinstance(result.get("xml"), RESTFolder))
     result = proc.run(GET, "/xml")
     self.assertTrue(isinstance(result.get("seishub"), RESTPackageFolder))
     result = proc.run(GET, "/xml/seishub")
     self.assertTrue(isinstance(result.get("stylesheet"), RESTResourceTypeFolder))
Esempio n. 15
0
 def test_getDisabledResourceType(self):
     proc = Processor(self.env)
     # without trailing slash
     try:
         proc.run(DELETE, '/get-test/notvc2')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 16
0
 def test_someRESTResourceTypes(self):
     proc = Processor(self.env)
     result = proc.run(GET, '/')
     self.assertTrue(isinstance(result.get('xml'), RESTFolder))
     result = proc.run(GET, '/xml')
     self.assertTrue(isinstance(result.get('seishub'), RESTPackageFolder))
     result = proc.run(GET, '/xml/seishub')
     self.assertTrue(
         isinstance(result.get('stylesheet'), RESTResourceTypeFolder))
Esempio n. 17
0
 def test_notImplementedMethods(self):
     """
     Not implemented methods should raise an error.
     """
     proc = Processor(self.env)
     try:
         proc.run('MUH', '/testmapping4')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_ALLOWED)
Esempio n. 18
0
 def test_deleteResourceInNotExistingResourceType(self):
     """
     Resource can't be deleted from not existing resource type.
     """
     proc = Processor(self.env)
     try:
         proc.run(DELETE, '/delete-test/notvc2/test.xml')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 19
0
 def test_notImplementedMethods(self):
     """
     Not implemented methods should raise an error.
     """
     proc = Processor(self.env)
     try:
         proc.run('MUH', '/testmapping4')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_ALLOWED)
Esempio n. 20
0
 def test_deleteResourceInNotExistingResourceType(self):
     """
     Resource can't be deleted from not existing resource type.
     """
     proc = Processor(self.env)
     try:
         proc.run(DELETE, '/delete-test/notvc2/test.xml')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 21
0
 def test_strangeRequestPatterns(self):
     """
     Test strange request patterns.
     """
     proc = Processor(self.env)
     # root
     data = proc.run(GET, '///')
     self.assertTrue('xml' in data)
     data = proc.run(GET, '//./')
     self.assertTrue('xml' in data)
     # results in /xml
     data = proc.run(GET, '/xml//')
     self.assertTrue('seishub' in data)
     data = proc.run(GET, '//xml/')
     self.assertTrue('seishub' in data)
     data = proc.run(GET, '//////////////////////xml//////////////')
     self.assertTrue('seishub' in data)
     data = proc.run(GET, '/////////./////////////xml///////.////.///')
     self.assertTrue('seishub' in data)
     # results in /xml/seishub
     data = proc.run(GET, '//////////////////////xml/////////////seishub/')
     self.assertTrue('schema' in data)
     data = proc.run(GET, '/////////////////xml///////.//////seishub////')
     self.assertTrue('schema' in data)
     data = proc.run(GET, '/////////////////xml/../xml////seishub////')
     self.assertTrue('schema' in data)
Esempio n. 22
0
 def test_processResource(self):
     proc = Processor(self.env)
     # upload a resource via POST
     data = proc.run(POST, '/xml/processor-test/notvc', StringIO(XML_DOC))
     # check response; data should be empty; we look into request
     self.assertFalse(data)
     self.assertEqual(proc.code, http.CREATED)
     self.assertTrue(isinstance(proc.headers, dict))
     self.assertTrue('Location' in proc.headers)
     location = proc.headers.get('Location')
     self.assertTrue(location.startswith(self.env.getRestUrl() + proc.path))
     # GET resource
     location = location[len(self.env.getRestUrl()):]
     data = proc.run(GET, location).render_GET(proc)
     self.assertEquals(data, XML_DOC)
     # overwrite this resource via PUT request
     proc.run(PUT, location, StringIO(XML_DOC2))
     # GET resource
     data = proc.run(GET, location).render_GET(proc)
     self.assertNotEquals(data, XML_DOC)
     self.assertEquals(data, XML_DOC2)
     # DELETE resource
     proc.run(DELETE, location)
     # GET deleted revision
     try:
         proc.run(GET, location).render_GET(proc)
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 23
0
 def test_getMultiFormatedResource(self):
     """
     Get resource in a certain format using multiple style sheets.
     """
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/transformation-test/rt/test.xml', StringIO(XML_DOC))
     # transform using a format chain
     proc.args = {'format': ['xml2html', 'html2txt']}
     res = proc.run(GET, '/transformation-test/rt/test.xml')
     data = res.render(proc)
     self.assertEquals(data, TXT_DOC)
     # missing formats
     proc.args = {'format': ['XXX', 'YYY', 'ZZZ']}
     res = proc.run(GET, '/transformation-test/rt/test.xml')
     data = res.render(proc)
     self.assertEquals(data, XML_DOC)
     # one valid format
     proc.args = {'format': ['XXX', 'xml2html', 'YYY']}
     res = proc.run(GET, '/transformation-test/rt/test.xml')
     data = res.render(proc)
     self.assertEquals(data, HTML_DOC)
     # transform using a format chain but last style sheet is missing
     proc.args = {'format': ['xml2html', 'html2txt', 'XXX']}
     res = proc.run(GET, '/transformation-test/rt/test.xml')
     data = res.render(proc)
     self.assertEquals(data, TXT_DOC)
     # transform using a format chain but one style sheet is missing
     proc.args = {'format': ['xml2html', 'XXX', 'html2txt']}
     res = proc.run(GET, '/transformation-test/rt/test.xml')
     data = res.render(proc)
     self.assertEquals(data, TXT_DOC)
     # delete resource
     proc.run(DELETE, '/transformation-test/rt/test.xml')
Esempio n. 24
0
 def test_deleteVersionControlledResource(self):
     """
     Successful deletion of version controlled resources.
     """
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/delete-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/delete-test/vc/test.xml', StringIO(XML_VCDOC % 1))
     proc.run(PUT, '/delete-test/vc/test.xml', StringIO(XML_VCDOC % 2))
     # check latest resource - should be #20
     data = proc.run(GET, '/delete-test/vc/test.xml').render_GET(proc)
     self.assertEqual(data, XML_VCDOC % 2)
     # check oldest resource -> revision start with 1
     data = proc.run(GET, '/delete-test/vc/test.xml/1').render_GET(proc)
     self.assertEqual(data, XML_DOC)
     # delete resource
     data = proc.run(DELETE, '/delete-test/vc/test.xml')
     self.assertEqual(data, '')
     self.assertEqual(proc.code, http.NO_CONTENT)
     # fetch resource again
     try:
         proc.run(GET, '/delete-test/vc/test.xml').render_GET(proc)
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 25
0
 def test_processResource(self):
     proc = Processor(self.env)
     # upload a resource via POST
     data = proc.run(POST, '/xml/processor-test/notvc', StringIO(XML_DOC))
     # check response; data should be empty; we look into request
     self.assertFalse(data)
     self.assertEqual(proc.code, http.CREATED)
     self.assertTrue(isinstance(proc.headers, dict))
     self.assertTrue('Location' in proc.headers)
     location = proc.headers.get('Location')
     self.assertTrue(location.startswith(self.env.getRestUrl() + proc.path))
     # GET resource
     location = location[len(self.env.getRestUrl()):]
     data = proc.run(GET, location).render_GET(proc)
     self.assertEquals(data, XML_DOC)
     # overwrite this resource via PUT request
     proc.run(PUT, location, StringIO(XML_DOC2))
     # GET resource
     data = proc.run(GET, location).render_GET(proc)
     self.assertNotEquals(data, XML_DOC)
     self.assertEquals(data, XML_DOC2)
     # DELETE resource
     proc.run(DELETE, location)
     # GET deleted revision
     try:
         proc.run(GET, location).render_GET(proc)
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 26
0
 def test_strangeRequestPatterns(self):
     """
     Test strange request patterns.
     """
     proc = Processor(self.env)
     # root
     data = proc.run(GET, '///')
     self.assertTrue('xml' in data)
     data = proc.run(GET, '//./')
     self.assertTrue('xml' in data)
     # results in /xml
     data = proc.run(GET, '/xml//')
     self.assertTrue('seishub' in data)
     data = proc.run(GET, '//xml/')
     self.assertTrue('seishub' in data)
     data = proc.run(GET, '//////////////////////xml//////////////')
     self.assertTrue('seishub' in data)
     data = proc.run(GET, '/////////./////////////xml///////.////.///')
     self.assertTrue('seishub' in data)
     # results in /xml/seishub
     data = proc.run(GET, '//////////////////////xml/////////////seishub/')
     self.assertTrue('schema' in data)
     data = proc.run(GET, '/////////////////xml///////.//////seishub////')
     self.assertTrue('schema' in data)
     data = proc.run(GET, '/////////////////xml/../xml////seishub////')
     self.assertTrue('schema' in data)
Esempio n. 27
0
 def test_deleteVersionControlledResource(self):
     """
     Successful deletion of version controlled resources.
     """
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/delete-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/delete-test/vc/test.xml', StringIO(XML_VCDOC % 1))
     proc.run(PUT, '/delete-test/vc/test.xml', StringIO(XML_VCDOC % 2))
     # check latest resource - should be #20
     data = proc.run(GET, '/delete-test/vc/test.xml').render_GET(proc)
     self.assertEqual(data, XML_VCDOC % 2)
     # check oldest resource -> revision start with 1
     data = proc.run(GET, '/delete-test/vc/test.xml/1').render_GET(proc)
     self.assertEqual(data, XML_DOC)
     # delete resource
     data = proc.run(DELETE, '/delete-test/vc/test.xml')
     self.assertEqual(data, '')
     self.assertEqual(proc.code, http.NO_CONTENT)
     # fetch resource again
     try:
         proc.run(GET, '/delete-test/vc/test.xml').render_GET(proc)
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 28
0
 def test_invalidResourceIDs(self):
     """
     Resource names have to be alphanumeric, start with a character
     """
     proc = Processor(self.env)
     # root
     try:
         proc.run(POST, '/put-test/notvc/üö$%&', StringIO(XML_DOC))
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.BAD_REQUEST)
Esempio n. 29
0
 def test_invalidResourceIDs(self):
     """
     Resource names have to be alphanumeric, start with a character
     """
     proc = Processor(self.env)
     # root
     try:
         proc.run(POST, '/put-test/notvc/üö$%&', StringIO(XML_DOC))
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.BAD_REQUEST)
Esempio n. 30
0
 def test_deleteResourceInNotExistingPackage(self):
     """
     Resource can't be deleted from not existing package.
     """
     proc = Processor(self.env)
     # with trailing slash
     try:
         proc.run(DELETE, '/delete-test2/notvc/test.xml')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 31
0
 def test_deleteNotExistingPackage(self):
     """
     A not existing resource package can't be deleted.
     """
     proc = Processor(self.env)
     # without trailing slash
     try:
         proc.run(DELETE, '/xxx')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 32
0
 def test_orderOfAddingResourcesMatters(self):
     """
     This test in this specific order failed in a previous revision.
     """
     proc = Processor(self.env)
     proc.run(POST, '/rest-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/rest-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/rest-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(POST, '/rest-test/notvc/test.xml', StringIO(XML_DOC))
     proc.run(DELETE, '/rest-test/vc/test.xml')
     proc.run(DELETE, '/rest-test/notvc/test.xml')
Esempio n. 33
0
 def test_deletePackage(self):
     """
     SeisHub processor does not allow deletion of packages.
     """
     proc = Processor(self.env)
     # without trailing slash
     try:
         proc.run(DELETE, '/delete-test')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_ALLOWED)
Esempio n. 34
0
 def test_deleteResourceInNotExistingPackage(self):
     """
     Resource can't be deleted from not existing package.
     """
     proc = Processor(self.env)
     # with trailing slash
     try:
         proc.run(DELETE, '/delete-test2/notvc/test.xml')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 35
0
 def test_oversizedURL(self):
     """
     Request URL is restricted by MAXIMAL_URL_LENGTH.
     """
     proc = Processor(self.env)
     for method in ALLOWED_HTTP_METHODS:
         try:
             proc.run(method, 'a' * MAXIMAL_URL_LENGTH, '')
             self.fail("Expected SeisHubError")
         except SeisHubError, e:
             self.assertEqual(e.code, http.REQUEST_URI_TOO_LONG)
Esempio n. 36
0
 def test_oversizedURL(self):
     """
     Request URL is restricted by MAXIMAL_URL_LENGTH.
     """
     proc = Processor(self.env)
     for method in ALLOWED_HTTP_METHODS:
         try:
             proc.run(method, 'a' * MAXIMAL_URL_LENGTH, '')
             self.fail("Expected SeisHubError")
         except SeisHubError, e:
             self.assertEqual(e.code, http.REQUEST_URI_TOO_LONG)
Esempio n. 37
0
 def test_orderOfAddingResourcesMatters(self):
     """
     This test in this specific order failed in a previous revision.
     """
     proc = Processor(self.env)
     proc.run(POST, '/rest-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/rest-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/rest-test/vc/test.xml', StringIO(XML_DOC))
     proc.run(POST, '/rest-test/notvc/test.xml', StringIO(XML_DOC))
     proc.run(DELETE, '/rest-test/vc/test.xml')
     proc.run(DELETE, '/rest-test/notvc/test.xml')
Esempio n. 38
0
 def test_deletePackage(self):
     """
     SeisHub processor does not allow deletion of packages.
     """
     proc = Processor(self.env)
     # without trailing slash
     try:
         proc.run(DELETE, '/delete-test')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_ALLOWED)
Esempio n. 39
0
 def test_deleteNotExistingPackage(self):
     """
     A not existing resource package can't be deleted.
     """
     proc = Processor(self.env)
     # without trailing slash
     try:
         proc.run(DELETE, '/xxx')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 40
0
 def test_moveWithoutDestinationHeader(self):
     """
     WebDAV HTTP MOVE request must submit a Destination header.
     """
     # create resource
     proc = Processor(self.env)
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     try:
         proc.run(MOVE, '/move-test/notvc/test.xml')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.BAD_REQUEST)
Esempio n. 41
0
 def test_moveWithoutAbsoluteDestination(self):
     """
     Destination header must be the absolute path to new destination.
     """
     proc = Processor(self.env)
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     try:
         proc.run(MOVE, '/move-test/notvc/test.xml',
                  received_headers={'Destination': '/test/notvc/muh.xml'})
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.BAD_REQUEST)
Esempio n. 42
0
 def test_moveWithoutDestinationHeader(self):
     """
     WebDAV HTTP MOVE request must submit a Destination header.
     """
     # create resource
     proc = Processor(self.env)
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     try:
         proc.run(MOVE, '/move-test/notvc/test.xml')
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.BAD_REQUEST)
Esempio n. 43
0
 def test_getPackage(self):
     proc = Processor(self.env)
     # without trailing slash
     data = proc.run(GET, '/get-test')
     # with trailing slash
     data2 = proc.run(GET, '/get-test')
     # both results should equal
     self.assertTrue(Set(data) == Set(data2))
     # data must be a dict
     self.assertTrue(isinstance(data, dict))
     # check content
     self.assertTrue('notvc' in data)
     self.assertTrue('vc' in data)
Esempio n. 44
0
 def test_moveToSameURI(self):
     """
     The source URI and the destination URI must not be the same.
     """
     proc = Processor(self.env)
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     uri = self.env.getRestUrl() + '/move-test/notvc/test.xml'
     try:
         proc.run(MOVE, '/move-test/notvc/test.xml',
                  received_headers={'Destination': uri})
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.FORBIDDEN)
Esempio n. 45
0
 def test_moveToDifferentServer(self):
     """
     The destination URI is located on a different server.
     """
     proc = Processor(self.env)
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     uri = 'http://somewhere:8080/move-test/notvc/test.xml'
     try:
         proc.run(MOVE, '/move-test/notvc/test.xml',
                  received_headers={'Destination': uri})
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.BAD_GATEWAY)
Esempio n. 46
0
 def test_moveToNonExistingResourceType(self):
     """
     SeisHub allows moving resources only to existing resource types.
     """
     proc = Processor(self.env)
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     uri = self.env.getRestUrl() + '/muh/kuh/test2.xml'
     try:
         proc.run(MOVE, '/move-test/notvc/test.xml',
                  received_headers={'Destination': uri})
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.FORBIDDEN)
Esempio n. 47
0
 def test_moveWithoutAbsoluteDestination(self):
     """
     Destination header must be the absolute path to new destination.
     """
     proc = Processor(self.env)
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     try:
         proc.run(MOVE,
                  '/move-test/notvc/test.xml',
                  received_headers={'Destination': '/test/notvc/muh.xml'})
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.BAD_REQUEST)
Esempio n. 48
0
 def test_getPackage(self):
     proc = Processor(self.env)
     # without trailing slash
     data = proc.run(GET, '/get-test')
     # with trailing slash
     data2 = proc.run(GET, '/get-test')
     # both results should equal
     self.assertTrue(Set(data) == Set(data2))
     # data must be a dict
     self.assertTrue(isinstance(data, dict))
     # check content
     self.assertTrue('notvc' in data)
     self.assertTrue('vc' in data)
Esempio n. 49
0
 def test_putOnExistingResource(self):
     """
     Put request on an already existing resource.
     """
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/put-test/notvc/test.xml', StringIO(XML_DOC))
     # create resource
     try:
         proc.run(POST, '/put-test/notvc/test.xml', StringIO(XML_DOC))
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.FORBIDDEN)
Esempio n. 50
0
 def test_putOnExistingResource(self):
     """
     Put request on an already existing resource.
     """
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/put-test/notvc/test.xml', StringIO(XML_DOC))
     # create resource
     try:
         proc.run(POST, '/put-test/notvc/test.xml', StringIO(XML_DOC))
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.FORBIDDEN)
Esempio n. 51
0
 def test_moveBuiltinResource(self):
     """
     SeisHub builtin resources can't be renamed or moved.
     """
     proc = Processor(self.env)
     # fetch a seishub stylesheet
     data = proc.run(GET, '/seishub/stylesheet')
     uri = '/seishub/stylesheet/' + data.keys()[0]
     to_uri = self.env.getRestUrl() + '/seishub/stylesheet/test.xml'
     try:
         proc.run(MOVE, uri, received_headers={'Destination': to_uri})
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.FORBIDDEN)
Esempio n. 52
0
 def test_getResourceTypeFolder(self):
     """
     Get content of a resource type folder.
     """
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/get-test/notvc/test.xml', StringIO(XML_DOC))
     data = proc.run(GET, '/get-test/notvc/.meta')
     # data must be a dictionary
     self.assertTrue(isinstance(data, dict))
     # check content
     self.assertTrue('test.xml' in data)
     # delete resource
     data = proc.run(DELETE, '/get-test/notvc/test.xml')
Esempio n. 53
0
 def test_getRevisionFromNotVersionControlledResource(self):
     proc = Processor(self.env)
     # create resource
     proc.run(POST, '/get-test/notvc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/get-test/notvc/test.xml', StringIO(XML_DOC))
     proc.run(PUT, '/get-test/notvc/test.xml', StringIO(XML_DOC))
     # revision #1 always exist
     # without trailing slash
     res1 = proc.run(GET, '/get-test/notvc/test.xml/1')
     data1 = res1.render(proc)
     # with trailing slash
     res2 = proc.run(GET, '/get-test/notvc/test.xml/1/')
     data2 = res2.render(proc)
     # res must be RESTResource objects
     self.assertTrue(isinstance(res1, RESTResource))
     self.assertTrue(isinstance(res2, RESTResource))
     # both results should equal
     self.assertTrue(Set(data1) == Set(data2))
     # data must be a basestring
     self.assertTrue(isinstance(data1, basestring))
     # check content
     self.assertEquals(data1, XML_DOC)
     # try to GET revision 2
     try:
         proc.run(GET, '/get-test/notvc/test.xml/2')
     except SeisHubError, e:
         self.assertEqual(e.code, http.NOT_FOUND)
Esempio n. 54
0
    def test_validDateTimeIndexesBefore1970(self):
        """
        Test indexing of XML documents with valid datetime fields.

        This will fail on Windows!
        """
        proc = Processor(self.env)
        XML_DOC = XML_BASE_DOC % ("%s", "egal")
        # w/ T
        xml_doc = XML_DOC % "1969-12-20T12:12:21"
        proc.run(POST, '/property-test/notvc2/1', StringIO(xml_doc))
        data = proc.run(GET, '/property-test/notvc2/1/.index').render_GET(proc)
        self.assertTrue("<value>1969-12-20 12:12:21</value>" in data)
        proc.run(DELETE, '/property-test/notvc2/1')
Esempio n. 55
0
 def test_getRoot(self):
     proc = Processor(self.env)
     # without trailing slash
     data = proc.run(GET, '')
     # with trailing slash
     data2 = proc.run(GET, '/')
     # both results should equal
     self.assertTrue(Set(data) == Set(data2))
     # data must be a dict
     self.assertTrue(isinstance(data, dict))
     # check content
     self.assertTrue('get-test' in data)
     self.assertTrue('seishub' in data)
     self.assertFalse('get-test2' in data)
Esempio n. 56
0
 def test_getResourceIndex(self):
     """
     Tests resource index property.
     """
     proc = Processor(self.env)
     XML_DOC = XML_BASE_DOC % ("üöäß", "5")
     # create resource
     proc.run(POST, '/property-test/notvc/test.xml', StringIO(XML_DOC))
     # get index XML w/o trailing slash
     res = proc.run(GET, '/property-test/notvc/test.xml/.index')
     data = res.render_GET(proc)
     self.assertTrue("<label1>" in data)
     self.assertTrue("<value>üöäß</value>" in data)
     # get index XML w/ trailing slash
     res = proc.run(GET, '/property-test/notvc/test.xml/.index/')
     data = res.render_GET(proc)
     self.assertTrue("<label1>" in data)
     self.assertTrue("<value>üöäß</value>" in data)
     # get index XML on revision 1 w/o trailing slash
     res = proc.run(GET, '/property-test/notvc/test.xml/1/.index/')
     data = res.render_GET(proc)
     self.assertTrue("<label1>" in data)
     self.assertTrue("<value>üöäß</value>" in data)
     # get index XML on revision 1 w/ trailing slash
     res = proc.run(GET, '/property-test/notvc/test.xml/1/.index/')
     data = res.render_GET(proc)
     self.assertTrue("<label1>" in data)
     self.assertTrue("<value>üöäß</value>" in data)
     # remove resource
     proc.run(DELETE, '/property-test/notvc/test.xml')
Esempio n. 57
0
 def test_overwritingResourceTree(self):
     # add a few children with absolute path to resource tree
     self.env.tree.putChild('/test/muh/kuh/blub', ATestResource('World'))
     self.env.tree.putChild('/test/muh/muh/stub', ATestResource('muh'))
     # overwriting a resource
     self.env.tree.putChild('/test/muh', ATestResource('maeh'))
     # check the resource tree
     proc = Processor(self.env)
     data = proc.run(GET, '/test')
     self.assertTrue(isinstance(data, dict))
     self.assertTrue('muh' in data)
     self.assertEqual(len(data), 1)
     data = proc.run(GET, '/test/muh')
     self.assertTrue(isinstance(data, basestring))
Esempio n. 58
0
 def test_moveWithoutFilename(self):
     """
     SeisHub expects as destination a full filename.
     """
     proc = Processor(self.env)
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     # directory only with trailing slash
     uri = self.env.getRestUrl() + '/move-test/vc/'
     try:
         proc.run(MOVE, '/move-test/notvc/test.xml',
                  received_headers={'Destination': uri})
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.FORBIDDEN)
Esempio n. 59
0
 def test_moveWithOversizedDestination(self):
     """
     Destination path is restricted to MAX_URI_LENGTH chars.
     """
     proc = Processor(self.env)
     proc.run(POST, '/move-test/notvc/test.xml', StringIO(XML_DOC))
     uri = self.env.getRestUrl() + '/move-test/notvc/' + \
           'a' * (MAXIMAL_URL_LENGTH + 1)
     try:
         proc.run(MOVE, '/move-test/notvc/test.xml',
                  received_headers={'Destination': uri})
         self.fail("Expected SeisHubError")
     except SeisHubError, e:
         self.assertEqual(e.code, http.REQUEST_URI_TOO_LONG)