aboutsummaryrefslogtreecommitdiffstats
path: root/test/lisp
diff options
context:
space:
mode:
authorLars Ingebrigtsen2016-02-19 12:37:34 +1100
committerLars Ingebrigtsen2016-02-19 12:37:34 +1100
commit7d63fa01afef49ee53c742cd6b8cb86d14911fa3 (patch)
tree9aeb7954ab33b339ea781346fb20f74c8a20b988 /test/lisp
parentb73e5254ea9056ee2088ed096ef1de3ef8699855 (diff)
downloademacs-7d63fa01afef49ee53c742cd6b8cb86d14911fa3.tar.gz
emacs-7d63fa01afef49ee53c742cd6b8cb86d14911fa3.zip
Fix up tests for async TLS negotiation
Diffstat (limited to 'test/lisp')
-rw-r--r--test/lisp/net/network-stream-tests.el64
1 files changed, 50 insertions, 14 deletions
diff --git a/test/lisp/net/network-stream-tests.el b/test/lisp/net/network-stream-tests.el
index a50c7f067b9..e19bd528961 100644
--- a/test/lisp/net/network-stream-tests.el
+++ b/test/lisp/net/network-stream-tests.el
@@ -37,7 +37,7 @@
37 (should (equal (process-contact server :local) file)) 37 (should (equal (process-contact server :local) file))
38 (delete-file (process-contact server :local)))) 38 (delete-file (process-contact server :local))))
39 39
40(ert-deftest make-local-tcp-server-with-unspecified-port () 40(ert-deftest make-ipv4-tcp-server-with-unspecified-port ()
41 (let ((server 41 (let ((server
42 (make-network-process 42 (make-network-process
43 :name "server" 43 :name "server"
@@ -51,7 +51,7 @@
51 (> (aref (process-contact server :local) 4) 0))) 51 (> (aref (process-contact server :local) 4) 0)))
52 (delete-process server))) 52 (delete-process server)))
53 53
54(ert-deftest make-local-tcp-server-with-specified-port () 54(ert-deftest make-ipv4-tcp-server-with-specified-port ()
55 (let ((server 55 (let ((server
56 (make-network-process 56 (make-network-process
57 :name "server" 57 :name "server"
@@ -144,9 +144,6 @@
144 :nowait t 144 :nowait t
145 :service port))) 145 :service port)))
146 (should (eq (process-status proc) 'connect)) 146 (should (eq (process-status proc) 'connect))
147 (should (null (ignore-errors
148 (process-send-string proc "echo bar")
149 t)))
150 (while (eq (process-status proc) 'connect) 147 (while (eq (process-status proc) 'connect)
151 (sit-for 0.1)) 148 (sit-for 0.1))
152 (with-current-buffer (process-buffer proc) 149 (with-current-buffer (process-buffer proc)
@@ -155,17 +152,17 @@
155 (should (equal (buffer-string) "foo\n"))) 152 (should (equal (buffer-string) "foo\n")))
156 (delete-process server))) 153 (delete-process server)))
157 154
158(defun make-tls-server () 155(defun make-tls-server (port)
159 (start-process "gnutls" (generate-new-buffer "*tls*") 156 (start-process "gnutls" (generate-new-buffer "*tls*")
160 "gnutls-serv" "--http" 157 "gnutls-serv" "--http"
161 "--x509keyfile" "lisp/net/key.pem" 158 "--x509keyfile" "lisp/net/key.pem"
162 "--x509certfile" "lisp/net/cert.pem" 159 "--x509certfile" "lisp/net/cert.pem"
163 "--port" "44330")) 160 "--port" (format "%s" port)))
164 161
165(ert-deftest connect-to-tls-ipv4-wait () 162(ert-deftest connect-to-tls-ipv4-wait ()
166 (skip-unless (executable-find "gnutls-serv")) 163 (skip-unless (executable-find "gnutls-serv"))
167 (skip-unless (gnutls-available-p)) 164 (skip-unless (gnutls-available-p))
168 (let ((server (make-tls-server)) 165 (let ((server (make-tls-server 44332))
169 (times 0) 166 (times 0)
170 proc status) 167 proc status)
171 (sleep-for 1) 168 (sleep-for 1)
@@ -178,7 +175,7 @@
178 :name "bar" 175 :name "bar"
179 :buffer (generate-new-buffer "*foo*") 176 :buffer (generate-new-buffer "*foo*")
180 :host "localhost" 177 :host "localhost"
181 :service 44330)))) 178 :service 44332))))
182 (< (setq times (1+ times)) 10)) 179 (< (setq times (1+ times)) 10))
183 (sit-for 0.1)) 180 (sit-for 0.1))
184 (should proc) 181 (should proc)
@@ -194,10 +191,46 @@
194 (setq issuer (split-string issuer ",")) 191 (setq issuer (split-string issuer ","))
195 (should (equal (nth 3 issuer) "O=Emacs Test Servicess LLC"))))) 192 (should (equal (nth 3 issuer) "O=Emacs Test Servicess LLC")))))
196 193
194(ert-deftest connect-to-tls-ipv4-nowait ()
195 (skip-unless (executable-find "gnutls-serv"))
196 (skip-unless (gnutls-available-p))
197 (let ((server (make-tls-server 44331))
198 (times 0)
199 proc status)
200 (sleep-for 1)
201 (with-current-buffer (process-buffer server)
202 (message "gnutls-serv: %s" (buffer-string)))
203
204 ;; It takes a while for gnutls-serv to start.
205 (while (and (null (ignore-errors
206 (setq proc (make-network-process
207 :name "bar"
208 :buffer (generate-new-buffer "*foo*")
209 :nowait t
210 :tls-parameters
211 (cons 'gnutls-x509pki
212 (gnutls-boot-parameters
213 :hostname "localhost"))
214 :host "localhost"
215 :service 44331))))
216 (< (setq times (1+ times)) 10))
217 (sit-for 0.1))
218 (should proc)
219 (while (eq (process-status proc) 'connect)
220 (sit-for 0.1))
221 (delete-process server)
222 (setq status (gnutls-peer-status proc))
223 (should (consp status))
224 (delete-process proc)
225 (let ((issuer (plist-get (plist-get status :certificate) :issuer)))
226 (should (stringp issuer))
227 (setq issuer (split-string issuer ","))
228 (should (equal (nth 3 issuer) "O=Emacs Test Servicess LLC")))))
229
197(ert-deftest connect-to-tls-ipv6-nowait () 230(ert-deftest connect-to-tls-ipv6-nowait ()
198 (skip-unless (executable-find "gnutls-serv")) 231 (skip-unless (executable-find "gnutls-serv"))
199 (skip-unless (gnutls-available-p)) 232 (skip-unless (gnutls-available-p))
200 (let ((server (make-tls-server)) 233 (let ((server (make-tls-server 44333))
201 (times 0) 234 (times 0)
202 proc status) 235 proc status)
203 (sleep-for 1) 236 (sleep-for 1)
@@ -211,14 +244,17 @@
211 :buffer (generate-new-buffer "*foo*") 244 :buffer (generate-new-buffer "*foo*")
212 :family 'ipv6 245 :family 'ipv6
213 :nowait t 246 :nowait t
247 :tls-parameters
248 (cons 'gnutls-x509pki
249 (gnutls-boot-parameters
250 :hostname "localhost"))
214 :host "::1" 251 :host "::1"
215 :service 44330)))) 252 :service 44333))))
216 (< (setq times (1+ times)) 10)) 253 (< (setq times (1+ times)) 10))
217 (sit-for 0.1)) 254 (sit-for 0.1))
218 (should proc) 255 (should proc)
219 (gnutls-negotiate :process proc 256 (while (eq (process-status proc) 'connect)
220 :type 'gnutls-x509pki 257 (sit-for 0.1))
221 :hostname "localhost")
222 (delete-process server) 258 (delete-process server)
223 (setq status (gnutls-peer-status proc)) 259 (setq status (gnutls-peer-status proc))
224 (should (consp status)) 260 (should (consp status))