diff options
| author | Lars Ingebrigtsen | 2016-02-19 12:37:34 +1100 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2016-02-19 12:37:34 +1100 |
| commit | 7d63fa01afef49ee53c742cd6b8cb86d14911fa3 (patch) | |
| tree | 9aeb7954ab33b339ea781346fb20f74c8a20b988 /test/lisp | |
| parent | b73e5254ea9056ee2088ed096ef1de3ef8699855 (diff) | |
| download | emacs-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.el | 64 |
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)) |