@@ -74,6 +74,50 @@ func TestHandshake(t *testing.T) {
74
74
return nil
75
75
},
76
76
},
77
+ {
78
+ name : "closeError" ,
79
+ server : func (w http.ResponseWriter , r * http.Request ) error {
80
+ c , err := websocket .Accept (w , r , websocket.AcceptOptions {})
81
+ if err != nil {
82
+ return err
83
+ }
84
+ defer c .Close (websocket .StatusInternalError , "" )
85
+
86
+ err = wsjson .Write (r .Context (), c , "hello" )
87
+ if err != nil {
88
+ return err
89
+ }
90
+
91
+ return nil
92
+ },
93
+ client : func (ctx context.Context , u string ) error {
94
+ c , _ , err := websocket .Dial (ctx , u , websocket.DialOptions {
95
+ Subprotocols : []string {"meow" },
96
+ })
97
+ if err != nil {
98
+ return err
99
+ }
100
+ defer c .Close (websocket .StatusInternalError , "" )
101
+
102
+ var m string
103
+ err = wsjson .Read (ctx , c , & m )
104
+ if err != nil {
105
+ return err
106
+ }
107
+
108
+ if m != "hello" {
109
+ return xerrors .Errorf ("recieved unexpected msg but expected hello: %+v" , m )
110
+ }
111
+
112
+ _ , _ , err = c .Reader (ctx )
113
+ var cerr websocket.CloseError
114
+ if ! xerrors .As (err , & cerr ) || cerr .Code != websocket .StatusInternalError {
115
+ return xerrors .Errorf ("unexpected error: %+v" , err )
116
+ }
117
+
118
+ return nil
119
+ },
120
+ },
77
121
{
78
122
name : "defaultSubprotocol" ,
79
123
server : func (w http.ResponseWriter , r * http.Request ) error {
0 commit comments