00001
00002
00003
00004
00005
00006
00007 import sys, unittest
00008 from ServiceTest import ServiceTestCase, ServiceTestSuite
00009
00010 import re
00011 from ZSI import EvaluateException
00012 """
00013 Unittest for contacting the TerraService Web service.
00014
00015 WSDL: http://terraservice.net/TerraService.asmx?WSDL
00016 """
00017
00018 CONFIG_FILE = 'config.txt'
00019 CONFIG_SECTION = 'complex_types'
00020 SERVICE_NAME = 'TerraService'
00021 PORT_NAME = 'TerraServiceSoap'
00022 EXCEPTION_STRING_SERIALIZE = r"Serializing ConvertPlaceToLonLatPt xmlns=\"http://terraserver-usa.com/terraserver/\"._place, Exception Serializing place xmlns=\"http://terraserver-usa.com/terraserver/\"._City, AttributeError 'int' object has no attribute \'replace\'"
00023
00024 SERIALIZE_PATTERN = re.compile(EXCEPTION_STRING_SERIALIZE)
00025
00026 class TerraServiceTest(ServiceTestCase):
00027 """Test case for TerraService Web service
00028 """
00029 name = "test_TerraService"
00030
00031 def test_ConvertPlaceToLonLatPt(self):
00032 operationName = 'ConvertPlaceToLonLatPt'
00033 request = self.getInputMessageInstance(operationName)
00034 request._place = self._moduleDict[self._typeModuleName].ns1.Place_Def()
00035 request._place._City = 'Oak Harbor'
00036 request._place._State = 'Washington'
00037 request._place._Country = 'United States'
00038 response = self.RPC(operationName, request)
00039
00040
00041
00042 def test_ConvertLonLatPtToNearestPlace(self):
00043 operationName = 'ConvertLonLatPtToNearestPlace'
00044 request = self.getInputMessageInstance(operationName)
00045 request._place = self._moduleDict[self._typeModuleName].ns1.Place_Def()
00046 request._point = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00047 request._point._Lon = -122.643
00048 request._point._Lat = 48.297
00049 response = self.RPC(operationName, request)
00050
00051 def test_ConvertLonLatPtToUtmPt(self):
00052 operationName = 'ConvertLonLatPtToUtmPt'
00053 request = self.getInputMessageInstance(operationName)
00054 request._point = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00055 request._point._Lon = -122.643
00056 request._point._Lat = 48.297
00057 response = self.RPC(operationName, request)
00058
00059 def test_ConvertUtmPtToLonLatPt(self):
00060 operationName = 'ConvertUtmPtToLonLatPt'
00061 request = self.getInputMessageInstance(operationName)
00062 request._utm = self._moduleDict[self._typeModuleName].ns1.UtmPt_Def()
00063 request._utm._X = 526703.512403
00064 request._utm._Y = 5348595.96493
00065 request._utm._Zone = 10
00066 response = self.RPC(operationName, request)
00067
00068 def test_CountPlacesInRect(self):
00069 operationName = 'CountPlacesInRect'
00070 request = self.getInputMessageInstance(operationName)
00071 request._upperleft = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00072 request._upperleft._Lon = -122.647
00073 request._upperleft._Lat = 48.293
00074 request._lowerright = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00075 request._lowerright._Lon = request._upperleft._Lon + 1.0
00076 request._lowerright._Lat = request._upperleft._Lon - 1.0
00077 request._ptype = "HillMountain"
00078 response = self.RPC(operationName, request)
00079
00080 def test_GetAreaFromPt(self):
00081 operationName = 'GetAreaFromPt'
00082 request = self.getInputMessageInstance(operationName)
00083 request._center = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00084 request._center._Lon = -122.647
00085 request._center._Lat = 48.293
00086 request._theme = 'Topo'
00087 request._scale = "Scale2m"
00088 request._displayPixWidth = 2
00089 request._displayPixHeight = 2
00090 response = self.RPC(operationName, request)
00091
00092 def test_GetAreaFromRect(self):
00093 operationName = 'GetAreaFromRect'
00094 request = self.getInputMessageInstance(operationName)
00095 request._upperLeft = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00096 request._upperLeft._Lon = -122.647
00097 request._upperLeft._Lat = 48.293
00098 request._lowerRight = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00099 request._lowerRight._Lon = request._upperLeft._Lon + 1.0
00100 request._lowerRight._Lat = request._upperLeft._Lat - 1.0
00101 request._theme = 'Topo'
00102 request._scale = "Scale2m"
00103 response = self.RPC(operationName, request)
00104
00105 def test_GetAreaFromTileId(self):
00106 operationName = 'GetAreaFromTileId'
00107 request = self.getInputMessageInstance(operationName)
00108 id = self._moduleDict[self._typeModuleName].ns1.TileId_Def()
00109 id._Theme = 'Topo'
00110 id._Scale = "Scale2m"
00111 id._Scene = 8
00112 id._X = 20
00113 id._y = 20
00114 request._id = id
00115 request._displayPixWidth = 2
00116 request._displayPixHeight = 2
00117 response = self.RPC(operationName, request)
00118
00119 def test_GetLatLonMetrics(self):
00120 operationName = 'GetLatLonMetrics'
00121 request = self.getInputMessageInstance(operationName)
00122 request._point = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00123 request._point._Lon = -122.647
00124 request._point._Lat = 48.293
00125 response = self.RPC(operationName, request)
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 def test_GetPlaceListInRect(self):
00136 operationName = 'GetPlaceListInRect'
00137 request = self.getInputMessageInstance(operationName)
00138 request._upperleft = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00139 request._upperleft._Lon = -123.0
00140 request._upperleft._Lat = 44.0
00141 request._lowerright = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00142
00143
00144 request._lowerright._Lon = -122.8
00145 request._lowerright._Lat = 43.8
00146 request._ptype = "HillMountain"
00147 request._MaxItems = 3
00148 response = self.RPC(operationName, request)
00149
00150 def test_GetTheme(self):
00151 operationName = 'GetTheme'
00152 request = self.getInputMessageInstance(operationName)
00153 request._theme = 'Topo'
00154 response = self.RPC(operationName, request)
00155
00156 def test_GetTile(self):
00157 operationName = 'GetTile'
00158 request = self.getInputMessageInstance(operationName)
00159 request._id = self._moduleDict[self._typeModuleName].ns1.TileId_Def()
00160 request._id._Theme = 'Topo'
00161 request._id._Scale = 'Scale2m'
00162 request._id._Scene = 8
00163 request._id._X = 20
00164 request._id._Y = 20
00165 response = self.RPC(operationName, request)
00166
00167 def test_GetTileMetaFromLonLatPt(self):
00168 operationName = 'GetTileMetaFromLonLatPt'
00169 request = self.getInputMessageInstance(operationName)
00170 request._theme = 'Topo'
00171 request._point = self._moduleDict[self._typeModuleName].ns1.LonLatPt_Def()
00172 request._point._Lon = -122.64
00173 request._point._Lat = 48.29
00174 request._scale = "Scale4m"
00175 response = self.RPC(operationName, request)
00176
00177 def test_GetTileMetaFromTileId(self):
00178 operationName = 'GetTileMetaFromTileId'
00179 request = self.getInputMessageInstance(operationName)
00180 request._id = self._moduleDict[self._typeModuleName].ns1.TileId_Def()
00181 request._id._Theme = 'Topo'
00182 request._id._Scale = 'Scale2m'
00183 request._id._Scene = 8
00184 request._id._X = 20
00185 request._id._Y = 20
00186 response = self.RPC(operationName, request)
00187
00188
00189 class TerraServiceTestFailures(ServiceTestCase):
00190 name = "test_TerraService"
00191
00192 def test_ConvertPlaceToLonLatPt_x1(self):
00193 """
00194 This test should fail
00195 """
00196 operationName = 'ConvertPlaceToLonLatPt'
00197 request = self.getInputMessageInstance(operationName)
00198 request._place = self._moduleDict[self._typeModuleName].ns1.Place_Def()
00199 request._place._City = 1
00200 request._place._State = 'Washington'
00201 request._place._Country = 'United States'
00202
00203 try:
00204 response = self.RPC(operationName, request)
00205
00206 except Exception, msg:
00207 exceptionString = str(msg)
00208 if SERIALIZE_PATTERN.match(exceptionString):
00209 pass
00210 else:
00211 raise
00212
00213 def test_GetPlaceFacts(self):
00214 operationName = 'GetPlaceFacts'
00215 request = self.getInputMessageInstance(operationName)
00216 request._place = self._moduleDict[self._typeModuleName].ns1.Place_Def()
00217 request._place._City = 'Seattle'
00218 request._place._State = 'Washington'
00219 request._place._Country = 'United States'
00220 try:
00221 response = self.RPC(operationName, request)
00222 except EvaluateException, ex:
00223 pass
00224
00225 def test_GetPlaceList(self):
00226 operationName = 'GetPlaceList'
00227 request = self.getInputMessageInstance(operationName)
00228 request._placeName = 'New York'
00229 request._MaxItems = 5
00230 request._imagePresence = 0
00231 try:
00232 response = self.RPC(operationName, request)
00233 except EvaluateException, ex:
00234 pass
00235
00236 def makeTestSuite():
00237 suite = ServiceTestSuite()
00238 suite.addTest(unittest.makeSuite(TerraServiceTest, 'test_'))
00239 suite.addTest(unittest.makeSuite(TerraServiceTestFailures, 'test_'))
00240 return suite
00241
00242
00243 if __name__ == "__main__" :
00244 unittest.TestProgram(defaultTest="makeTestSuite")