summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTrever Fischer <tdfischer@fedoraproject.org>2012-02-21 17:37:56 -0500
committerTrever Fischer <tdfischer@fedoraproject.org>2012-03-07 16:16:10 -0500
commitbcf830732d36945a863ccb83bc40c7bed704eb07 (patch)
tree50b177f0c92272a6697af577a7a076fe04324813 /tests
parenta7f90f99a38181ab05353296f0c7b6eaf3b664f4 (diff)
Implement IPV4/6 with GSocket API and write IPv4 tests
Diffstat (limited to 'tests')
-rw-r--r--tests/twisted/Makefile.am2
-rw-r--r--tests/twisted/avahi/file-transfer/receive-file-ipv4.py76
-rw-r--r--tests/twisted/avahi/file-transfer/send-file-ipv4.py44
3 files changed, 122 insertions, 0 deletions
diff --git a/tests/twisted/Makefile.am b/tests/twisted/Makefile.am
index 00fb50e1..9dc553c7 100644
--- a/tests/twisted/Makefile.am
+++ b/tests/twisted/Makefile.am
@@ -19,6 +19,7 @@ TWISTED_AVAHI_TESTS = \
avahi/file-transfer/send-file-declined.py \
avahi/file-transfer/send-file-item-not-found.py \
avahi/file-transfer/send-file-ipv6.py \
+ avahi/file-transfer/send-file-ipv4.py \
avahi/file-transfer/send-file-provide-immediately.py \
avahi/file-transfer/send-file-to-unknown-contact.py \
avahi/file-transfer/send-file-wait-to-provide.py \
@@ -31,6 +32,7 @@ TWISTED_AVAHI_TESTS = \
avahi/file-transfer/receive-file-cancelled-immediately.py \
avahi/file-transfer/receive-file-decline.py \
avahi/file-transfer/receive-file-ipv6.py \
+ avahi/file-transfer/receive-file-ipv4.py \
avahi/file-transfer/receive-file-not-found.py \
avahi/file-transfer/metadata.py \
avahi/file-transfer/ft-client-caps.py \
diff --git a/tests/twisted/avahi/file-transfer/receive-file-ipv4.py b/tests/twisted/avahi/file-transfer/receive-file-ipv4.py
new file mode 100644
index 00000000..60664715
--- /dev/null
+++ b/tests/twisted/avahi/file-transfer/receive-file-ipv4.py
@@ -0,0 +1,76 @@
+import avahi
+import urllib
+import BaseHTTPServer
+import SocketServer
+import socket
+
+from saluttest import exec_test
+from file_transfer_helper import ReceiveFileTest
+
+from avahitest import AvahiAnnouncer, get_host_name, AvahiListener
+from xmppstream import connect_to_stream, setup_stream_listener
+
+from twisted.words.xish import domish
+
+class TestReceiveFileIPv4(ReceiveFileTest):
+ CONTACT_NAME = 'test-ft'
+
+ service_name = ''
+ metadata = {}
+
+ def announce_contact(self, name=CONTACT_NAME):
+ basic_txt = { "txtvers": "1", "status": "avail" }
+
+ self.contact_name = '%s@%s' % (name, get_host_name())
+ self.listener, port = setup_stream_listener(self.q, self.contact_name)
+
+ self.contact_service = AvahiAnnouncer(self.contact_name, "_presence._tcp", port,
+ basic_txt, proto=avahi.PROTO_INET)
+
+
+ def _resolve_salut_presence(self):
+ AvahiListener(self.q).listen_for_service("_presence._tcp")
+ e = self.q.expect('service-added', name = self.self_handle_name,
+ protocol = avahi.PROTO_INET)
+ service = e.service
+ service.resolve()
+
+ e = self.q.expect('service-resolved', service = service,
+ protocol = avahi.PROTO_INET)
+ return str(e.pt), e.port
+
+ def connect_to_salut(self):
+ host, port = self._resolve_salut_presence()
+
+ self.outbound = connect_to_stream(self.q, self.contact_name,
+ self.self_handle_name, host, port)
+
+ e = self.q.expect('connection-result')
+ assert e.succeeded, e.reason
+ self.q.expect('stream-opened', connection = self.outbound)
+
+ def send_ft_offer_iq(self):
+ iq = domish.Element((None, 'iq'))
+ iq['to'] = self.self_handle_name
+ iq['from'] = self.contact_name
+ iq['type'] = 'set'
+ iq['id'] = 'gibber-file-transfer-0'
+ query = iq.addElement(('jabber:iq:oob', 'query'))
+ url = 'http://127.0.0.1:%u/gibber-file-transfer-0/%s' % \
+ (self.httpd.server_port, urllib.quote(self.file.name))
+ url_node = query.addElement('url', content=url)
+ url_node['type'] = 'file'
+ url_node['size'] = str(self.file.size)
+ url_node['mimeType'] = self.file.content_type
+ query.addElement('desc', content=self.file.description)
+ self.outbound.send(iq)
+
+ def _get_http_server_class(self):
+ class HTTPServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
+ address_family = getattr(socket, 'AF_INET', None)
+
+ return HTTPServer
+
+if __name__ == '__main__':
+ test = TestReceiveFileIPv4()
+ exec_test(test.test)
diff --git a/tests/twisted/avahi/file-transfer/send-file-ipv4.py b/tests/twisted/avahi/file-transfer/send-file-ipv4.py
new file mode 100644
index 00000000..f3c86096
--- /dev/null
+++ b/tests/twisted/avahi/file-transfer/send-file-ipv4.py
@@ -0,0 +1,44 @@
+import avahi
+from saluttest import exec_test
+from avahitest import AvahiAnnouncer, get_host_name
+from xmppstream import setup_stream_listener
+from file_transfer_helper import SendFileTest
+
+import constants as cs
+
+class SendFileTransferIPv4(SendFileTest):
+ CONTACT_NAME = 'test-ft'
+
+ def announce_contact(self, name=CONTACT_NAME):
+ basic_txt = { "txtvers": "1", "status": "avail" }
+
+ self.contact_name = '%s@%s' % (name, get_host_name())
+ self.listener, port = setup_stream_listener(self.q, self.contact_name)
+
+ self.contact_service = AvahiAnnouncer(self.contact_name, "_presence._tcp", port,
+ basic_txt, proto=avahi.PROTO_INET)
+
+ def provide_file(self):
+ SendFileTest.provide_file(self)
+
+ # state is still Pending as remote didn't accept the transfer yet
+ state = self.ft_props.Get(cs.CHANNEL_TYPE_FILE_TRANSFER, 'State')
+ assert state == cs.FT_STATE_PENDING
+
+ def client_request_file(self):
+ SendFileTest.client_request_file(self)
+
+ e = self.q.expect('dbus-signal', signal='InitialOffsetDefined')
+ offset = e.args[0]
+ # We don't support resume
+ assert offset == 0
+
+ # Channel is open. We can start to send the file
+ e = self.q.expect('dbus-signal', signal='FileTransferStateChanged')
+ state, reason = e.args
+ assert state == cs.FT_STATE_OPEN
+ assert reason == cs.FT_STATE_CHANGE_REASON_NONE
+
+if __name__ == '__main__':
+ test = SendFileTransferIPv4()
+ exec_test(test.test)