@@ -74,6 +74,50 @@ func TestHandshake(t *testing.T) {
7474 return nil
7575 },
7676 },
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+ },
77121 {
78122 name : "defaultSubprotocol" ,
79123 server : func (w http.ResponseWriter , r * http.Request ) error {
0 commit comments