| #!/usr/bin/python |
| """Fake minissdpd for unit tests. |
| |
| """ |
| |
| import BaseHTTPServer |
| import socket |
| import sys |
| |
| |
| text_device_xml = """<root> |
| <specVersion><major>1</major><minor>0</minor></specVersion> |
| <device><friendlyName>Test Device</friendlyName> |
| <manufacturer>Google Fiber</manufacturer> |
| <modelDescription>Unit Test</modelDescription> |
| <modelName>ssdptax</modelName> |
| </device></root>""" |
| |
| |
| email_address_xml = """<root> |
| <specVersion><major>1</major><minor>0</minor></specVersion> |
| <device><friendlyName>FOOBAR: foo@example.com:</friendlyName> |
| <manufacturer>Google Fiber</manufacturer> |
| <modelDescription>Unit Test</modelDescription> |
| <modelName>ssdptax</modelName> |
| </device></root>""" |
| |
| |
| no_friendlyname_xml = """<root> |
| <specVersion><major>1</major><minor>0</minor></specVersion> |
| <device></device></root>""" |
| |
| |
| xml = [''] |
| |
| |
| class XmlHandler(BaseHTTPServer.BaseHTTPRequestHandler): |
| def do_GET(self): |
| self.send_response(200) |
| self.send_header('Content-type','text/xml') |
| self.end_headers() |
| self.wfile.write(xml[0]) |
| |
| |
| def main(): |
| un = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) |
| un.bind(sys.argv[1]) |
| un.listen(1) |
| conn, _ = un.accept() |
| |
| testnum = int(sys.argv[2]) |
| if testnum == 1: |
| xml[0] = text_device_xml |
| if testnum == 2: |
| xml[0] = email_address_xml |
| if testnum == 3: |
| xml[0] = no_friendlyname_xml |
| |
| s = BaseHTTPServer.HTTPServer(("", 0), XmlHandler) |
| sn = s.socket.getsockname() |
| port = sn[1] |
| url = 'http://127.0.0.1:%d/foo.xml' % port |
| st = 'server type' |
| uuid = 'uuid goes here' |
| data = [1] |
| data.extend([len(url)] + list(url)) |
| data.extend([len(st)] + list(st)) |
| data.extend([len(uuid)] + list(uuid)) |
| |
| _ = conn.recv(8192) |
| conn.sendall(bytearray(data)) |
| s.handle_request() |
| |
| |
| if __name__ == '__main__': |
| main() |