v2 / vlib / net / smtp / smtp_timeout_test.v
41 lines · 38 sloc · 1.06 KB · e2e5cf8db56f3562c7baa735061690be936bdf3e
Raw
1module smtp
2
3import net
4import time
5
6fn smtp_timeout_test_server(mut listener net.TcpListener, done chan bool) {
7 defer {
8 listener.close() or {}
9 done <- true
10 }
11 mut conn := listener.accept() or { panic(err) }
12 defer {
13 conn.close() or {}
14 }
15 conn.write_string('220 localhost ESMTP ready\r\n') or { panic(err) }
16 ehlo := conn.read_line().trim_space()
17 assert ehlo.starts_with('EHLO ')
18 conn.write_string('250-localhost\r\n250 OK\r\n') or { panic(err) }
19 quit := conn.read_line().trim_space()
20 assert quit == 'QUIT'
21 conn.write_string('221 Bye\r\n') or { panic(err) }
22}
23
24fn test_client_timeout_configures_tcp_conn() ! {
25 timeout := 7 * time.second
26 mut listener := net.listen_tcp(.ip, '127.0.0.1:0')!
27 port := listener.addr()!.port()!
28 done := chan bool{}
29 spawn smtp_timeout_test_server(mut listener, done)
30 mut client := new_client(Config{
31 server: '127.0.0.1'
32 port: int(port)
33 timeout: timeout
34 })!
35 assert client.is_open
36 assert client.conn.read_timeout() == timeout
37 assert client.conn.write_timeout() == timeout
38 client.quit()!
39 assert !client.is_open
40 _ := <-done
41}
42