testServer.py
import unittest
import requests
import subprocess
class ServerTests(unittest.TestCase):
def setUp(self):
self.server_process = subprocess.Popen("C:\Python34\python.exe "
"C:/Users/Lantay77/Documents/CS242/Assignment2.2/Server.py",
cwd=r'C:\Users\lantay77\Documents\CS242\Assignment2.2')
def tearDown(self):
self.server_process.kill()
def test_home(self):
req = requests.get("http://127.0.0.1:5000/")
assert "Longest flight: SYD to LAX. 12051km" in req.text
assert "6 connections from: IST (Istanbul)" in req.text
assert "Cities in South America:" in req.text
def test_display_city(self):
req = requests.get("http://127.0.0.1:5000/?code=atl")
assert "Name: Atlanta" in req.text
assert "Region: 3" in req.text
assert "distance: 957" in req.text
def test_display_invalid_city(self):
req = requests.get("http://127.0.0.1:5000/?code=notvalid")
assert "NOTVALID does not exist" in req.text
def test_add_api(self):
req = requests.get("http://127.0.0.1:5000/add_city?api=true&cityCode=CMI")
assert "Name: Univ Of Illinois-Willard" in req.text
assert "CMI successfully added from Wunderground API." in req.text
req = requests.get("http://127.0.0.1:5000/add_city?api=true&cityCode=CMI")
assert "Error: Unable to add CMI from API." in req.text
def test_remove_city(self):
req = requests.get("http://127.0.0.1:5000/?rm=MIA")
assert "MIA successfully removed." in req.text
assert "Miami" not in req.text
def test_edit_city(self):
req = requests.get("http://127.0.0.1:5000/add_city?cityCode=ATLA&cityName=Atlanta&cityCountry=US&cityContinent=North%20America&cityTimezone=-5&cityLatitude=34N&cityLongitude=84W&cityPop=5700000&cityRegion=3&edit=true&old_code=ATL")
assert "Code: ATLA" in req.text
assert "ATLA info:" in req.text
assert "ATLA to" in req.text
def test_add_city(self):
req = requests.get("http://127.0.0.1:5000/add_city?cityCode=ATLA&cityName=Atlanta&cityCountry=US&cityContinent=North%20America&cityTimezone=-5&cityLatitude=34N&cityLongitude=84W&cityPop=5700000&cityRegion=3")
assert "Code: ATLA" in req.text
assert "ATLA info:" in req.text
assert "Name: Atlanta" in req.text
assert "No routes" in req.text
req = requests.get("http://127.0.0.1:5000/add_city?cityCode=ATLA&cityName=Atlanta&cityCountry=US&cityContinent=North%20America&cityTimezone=-5&cityLatitude=34N&cityLongitude=84W&cityPop=5700000&cityRegion=3")
assert "Error: Unable to add city, a city with the same code already exists." in req.text
def test_invalid_add(self):
req = requests.get("http://127.0.0.1:5000/add_city?cityCode=ATLA&cityName=Atlanta&cityCountry=US&cityContinent=North%20America&cityTimezone=-5&cityLatitude=AAA&cityLongitude=84H&cityPop=AA&cityRegion=3")
assert "Error: Unable to add city, population must be a number." in req.text
assert "Error: Invalid latitude letter" in req.text
assert "Error: Invalid longitude letter" in req.text
def test_edit_from_api(self):
req = requests.get("http://127.0.0.1:5000/add_city?api=true&cityCode=LAX&edit=true&old_code=LAX")
assert "Code: LAX" in req.text
assert "Timezone: America/Los_Angeles" in req.text
assert "Editing LAX succeeded:" in req.text
assert "Name: Los Angeles International" in req.text
def test_manual_route(self):
req = requests.get("http://127.0.0.1:5000/routes?route=SCL-LIM-MEX")
assert "SCL-LIM-MEX" in req.text
assert "Total distance: 6684km" in req.text
# test clear
req = requests.get("http://127.0.0.1:5000/routes?clear=routes")
assert "SCL-LIM-MEX" not in req.text
def test_shortest_route(self):
req = requests.get("http://127.0.0.1:5000/routes?source=MOW&dest=SCL")
assert "MOW-LED-ESS-LON-NYC-WAS-MIA-BOG-LIM-SCL" in req.text
assert "Total distance: 17001km" in req.text
def test_noquery(self):
req = requests.get("http://127.0.0.1:5000/routes?route=MOW-LED-ESS-LON-NYC-WAS-MIA-BOG-LIM-SCL&noquery=y")
req = requests.get("http://127.0.0.1:5000/routes")
assert "MOW-LED-ESS-LON-NYC-WAS-MIA-BOG-LIM-SCL" not in req.text
def test_add_route(self):
req = requests.get("http://127.0.0.1:5000/routes?source=LIM&dest=MOW&direction=false&distance=500&add=y")
assert "LIM-MOW" in req.text
assert "Total cost: $175.00" in req.text
req = requests.get("http://127.0.0.1:5000/?code=LIM")
assert "distance: 500" in req.text
req = requests.get("http://127.0.0.1:5000/?code=MOW")
assert "distance: 500" not in req.text
def test_add_route_bidirectional(self):
req = requests.get("http://127.0.0.1:5000/routes?source=LIM&dest=MOW&direction=true&distance=500&add=y")
assert "LIM-MOW" in req.text
assert "Total cost: $175.00" in req.text
req = requests.get("http://127.0.0.1:5000/?code=LIM")
assert "distance: 500" in req.text
req = requests.get("http://127.0.0.1:5000/?code=MOW")
assert "distance: 500" in req.text
def test_rm_route(self):
req = requests.get("http://127.0.0.1:5000/routes?source=LIM&dest=SCL&direction=false&rm=y")
assert "Successfully removed route: LIM to SCL" in req.text
req = requests.get("http://127.0.0.1:5000/?code=LIM")
assert "distance: 2453" not in req.text
req = requests.get("http://127.0.0.1:5000/?code=SCL")
assert "distance: 2453" in req.text
def test_rm_route_bidirectional(self):
req = requests.get("http://127.0.0.1:5000/routes?source=LIM&dest=SCL&direction=true&rm=y")
assert "Successfully removed route: LIM to SCL" in req.text
req = requests.get("http://127.0.0.1:5000/?code=LIM")
assert "distance: 2453" not in req.text
req = requests.get("http://127.0.0.1:5000/?code=SCL")
assert "distance: 2453" not in req.text
if __name__ == '__main__':
unittest.main()