diff options
author | Trever Fischer <tdfischer@fedoraproject.org> | 2012-02-21 17:37:56 -0500 |
---|---|---|
committer | Trever Fischer <tdfischer@fedoraproject.org> | 2012-03-07 16:16:10 -0500 |
commit | bcf830732d36945a863ccb83bc40c7bed704eb07 (patch) | |
tree | 50b177f0c92272a6697af577a7a076fe04324813 /tests | |
parent | a7f90f99a38181ab05353296f0c7b6eaf3b664f4 (diff) |
Implement IPV4/6 with GSocket API and write IPv4 tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/twisted/Makefile.am | 2 | ||||
-rw-r--r-- | tests/twisted/avahi/file-transfer/receive-file-ipv4.py | 76 | ||||
-rw-r--r-- | tests/twisted/avahi/file-transfer/send-file-ipv4.py | 44 |
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) |