Revision f30ca1e6

b/lib/http/server.py
59 59
"""
60 60

  
61 61

  
62
def _DateTimeHeader():
62
def _DateTimeHeader(gmnow=None):
63 63
  """Return the current date and time formatted for a message header.
64 64

  
65
  The time MUST be in the GMT timezone.
66

  
65 67
  """
66
  (year, month, day, hh, mm, ss, wd, _, _) = time.gmtime()
68
  if gmnow is None:
69
    gmnow = time.gmtime()
70
  (year, month, day, hh, mm, ss, wd, _, _) = gmnow
67 71
  return ("%s, %02d %3s %4d %02d:%02d:%02d GMT" %
68 72
          (WEEKDAYNAME[wd], day, MONTHNAME[month], year, hh, mm, ss))
69 73

  
b/test/ganeti.http_unittest.py
24 24

  
25 25
import os
26 26
import unittest
27
import tempfile
28 27
import time
29 28

  
30 29
from ganeti import http
31 30

  
31
import ganeti.http.server
32
import ganeti.http.client
32 33

  
33
# TODO: Write unittests
34

  
35
class TestStartLines(unittest.TestCase):
36
  """Test cases for start line classes"""
37

  
38
  def testClientToServerStartLine(self):
39
    """Test client to server start line (HTTP request)"""
40
    start_line = http.HttpClientToServerStartLine("GET", "/", "HTTP/1.1")
41
    self.assertEqual(str(start_line), "GET / HTTP/1.1")
42

  
43
  def testServerToClientStartLine(self):
44
    """Test server to client start line (HTTP response)"""
45
    start_line = http.HttpServerToClientStartLine("HTTP/1.1", 200, "OK")
46
    self.assertEqual(str(start_line), "HTTP/1.1 200 OK")
47

  
48

  
49
class TestMisc(unittest.TestCase):
50
  """Miscellaneous tests"""
51

  
52
  def _TestDateTimeHeader(self, gmnow, expected):
53
    self.assertEqual(http.server._DateTimeHeader(gmnow=gmnow), expected)
54

  
55
  def testDateTimeHeader(self):
56
    """Test ganeti.http._DateTimeHeader"""
57
    self._TestDateTimeHeader((2008, 1, 2, 3, 4, 5, 3, 0, 0),
58
                             "Thu, 02 Jan 2008 03:04:05 GMT")
59
    self._TestDateTimeHeader((2008, 1, 1, 0, 0, 0, 0, 0, 0),
60
                             "Mon, 01 Jan 2008 00:00:00 GMT")
61
    self._TestDateTimeHeader((2008, 12, 31, 0, 0, 0, 0, 0, 0),
62
                             "Mon, 31 Dec 2008 00:00:00 GMT")
63
    self._TestDateTimeHeader((2008, 12, 31, 23, 59, 59, 0, 0, 0),
64
                             "Mon, 31 Dec 2008 23:59:59 GMT")
65
    self._TestDateTimeHeader((2008, 12, 31, 0, 0, 0, 6, 0, 0),
66
                             "Sun, 31 Dec 2008 00:00:00 GMT")
67

  
68
  def testHttpServerRequest(self):
69
    """Test ganeti.http.server._HttpServerRequest"""
70
    fake_request = http.HttpMessage()
71
    fake_request.start_line = \
72
      http.HttpClientToServerStartLine("GET", "/", "HTTP/1.1")
73
    server_request = http.server._HttpServerRequest(fake_request)
74

  
75
    # These are expected by users of the HTTP server
76
    self.assert_(hasattr(server_request, "request_method"))
77
    self.assert_(hasattr(server_request, "request_path"))
78
    self.assert_(hasattr(server_request, "request_headers"))
79
    self.assert_(hasattr(server_request, "request_body"))
80
    self.assert_(isinstance(server_request.resp_headers, dict))
81

  
82
  def testServerSizeLimits(self):
83
    """Test HTTP server size limits"""
84
    message_reader_class = http.server._HttpClientToServerMessageReader
85
    self.assert_(message_reader_class.START_LINE_LENGTH_MAX > 0)
86
    self.assert_(message_reader_class.HEADER_LENGTH_MAX > 0)
87

  
88
  def testClientSizeLimits(self):
89
    """Test HTTP client size limits"""
90
    message_reader_class = http.client._HttpServerToClientMessageReader
91
    self.assert_(message_reader_class.START_LINE_LENGTH_MAX > 0)
92
    self.assert_(message_reader_class.HEADER_LENGTH_MAX > 0)
34 93

  
35 94

  
36 95
if __name__ == '__main__':

Also available in: Unified diff