from tornado.testing import AsyncHTTPTestCase
#from gns3server.plugins.dynamips import Dynamips
#from gns3server._compat import urlencode
from functools import partial
import tornado.web
import json
import tempfile


# class TestVMHandler(AsyncHTTPTestCase):
# 
#     def setUp(self):
# 
#         AsyncHTTPTestCase.setUp(self)
#         self.post_request = partial(self.http_client.fetch,
#                                     self.get_url("/api/vms/dynamips"),
#                                     self.stop,
#                                     method="POST")
# 
#     def get_app(self):
#         return tornado.web.Application(Dynamips().handlers())
# 
#     def test_endpoint(self):
#         self.http_client.fetch(self.get_url("/api/vms/dynamips"), self.stop)
#         response = self.wait()
#         assert response.code == 200
# 
#     def test_upload(self):
# 
#         try:
#             from poster.encode import multipart_encode
#         except ImportError:
#             # poster isn't available for Python 3, let's just ignore the test
#             return
# 
#         file_to_upload = tempfile.NamedTemporaryFile()
#         data, headers = multipart_encode({"file1": file_to_upload})
#         body = ""
#         for d in data:
#             body += d
# 
#         response = self.fetch('/api/vms/dynamips/storage/upload',
#                               headers=headers,
#                               body=body,
#                               method='POST')
# 
#         assert response.code == 200
# 
#     def get_new_ioloop(self):
#         return tornado.ioloop.IOLoop.instance()
# 
#     def test_create_vm(self):
# 
#         post_data = {"name": "R1",
#                      "platform": "c3725",
#                      "console": 2000,
#                      "aux": 3000,
#                      "image": "c3725.bin",
#                      "ram": 128}
# 
#         self.post_request(body=json.dumps(post_data))
#         response = self.wait()
#         assert(response.headers['Content-Type'].startswith('application/json'))
#         expected = {"success": True}
#         assert response.body.decode("utf-8") == json.dumps(expected)