from tornado.testing import AsyncHTTPTestCase
from tornado.escape import json_decode
from gns3server.server import VersionHandler
from gns3server.version import __version__
import tornado.web

"""
Tests for the web server version handler
"""


class TestVersionHandler(AsyncHTTPTestCase):

    URL = "/version"

    def get_app(self):

        return tornado.web.Application([(self.URL, VersionHandler)])

    def test_endpoint(self):
        """
        Tests if the response HTTP code is 200 (success)
        """

        self.http_client.fetch(self.get_url(self.URL), self.stop)
        response = self.wait()
        assert response.code == 200

    def test_received_version(self):
        """
        Tests if the returned content type is JSON and
        if the received version is the same as the server
        """

        self.http_client.fetch(self.get_url(self.URL), self.stop)
        response = self.wait()
        assert(response.headers['Content-Type'].startswith('application/json'))
        assert(response.body)
        body = json_decode(response.body)
        assert body['version'] == __version__