@@ -60,15 +60,35 @@ defmodule ExDTLS.IntegrationTest do
60
60
assert { :error , :handshake_error } = feed_packets ( tx_dtls , packets )
61
61
end
62
62
63
- describe "disconnect " do
64
- test "before handshake has finished" do
63
+ describe "close/1 " do
64
+ test "before handshake has finished (client mode) " do
65
65
dtls = ExDTLS . init ( mode: :client , dtls_srtp: true , verify_peer: true )
66
66
assert { :ok , [ ] } = ExDTLS . close ( dtls )
67
67
# assert that handshake can't be started
68
68
assert { :error , :closed } = ExDTLS . do_handshake ( dtls )
69
69
end
70
70
71
- test "after handshake has finished" do
71
+ test "before handshake has finished (server mode)" do
72
+ dtls = ExDTLS . init ( mode: :server , dtls_srtp: true , verify_peer: true )
73
+ assert { :ok , [ ] } = ExDTLS . close ( dtls )
74
+ # assert that handshake can't be started
75
+ assert { :error , :closed } = ExDTLS . do_handshake ( dtls )
76
+ end
77
+
78
+ test "after handshake has finished (client mode)" do
79
+ rx_dtls = ExDTLS . init ( mode: :server , dtls_srtp: true , verify_peer: true )
80
+ tx_dtls = ExDTLS . init ( mode: :client , dtls_srtp: true , verify_peer: true )
81
+
82
+ { :ok , packets , _timeout } = ExDTLS . do_handshake ( tx_dtls )
83
+
84
+ assert :ok == loop ( { rx_dtls , false } , { tx_dtls , false } , packets )
85
+ assert { :ok , [ packet ] } = ExDTLS . close ( tx_dtls )
86
+ assert { :error , :peer_closed_for_writing } = ExDTLS . handle_data ( rx_dtls , packet )
87
+ assert { :error , :closed } = ExDTLS . handle_timeout ( tx_dtls )
88
+ assert { :error , :closed } = ExDTLS . handle_timeout ( rx_dtls )
89
+ end
90
+
91
+ test "after handshake has finished (server mode)" do
72
92
rx_dtls = ExDTLS . init ( mode: :server , dtls_srtp: true , verify_peer: true )
73
93
tx_dtls = ExDTLS . init ( mode: :client , dtls_srtp: true , verify_peer: true )
74
94
@@ -77,6 +97,8 @@ defmodule ExDTLS.IntegrationTest do
77
97
assert :ok == loop ( { rx_dtls , false } , { tx_dtls , false } , packets )
78
98
assert { :ok , [ packet ] } = ExDTLS . close ( rx_dtls )
79
99
assert { :error , :peer_closed_for_writing } = ExDTLS . handle_data ( tx_dtls , packet )
100
+ assert { :error , :closed } = ExDTLS . handle_timeout ( tx_dtls )
101
+ assert { :error , :closed } = ExDTLS . handle_timeout ( rx_dtls )
80
102
end
81
103
end
82
104
0 commit comments