func TestUnregister(t *testing.T) { origin, err := testServer.Origin() if err != nil { t.Fatalf("Error initializing test server: %#v", err) } conn, _, err := client.Dial(origin) if err != nil { t.Fatalf("Error dialing origin: %#v", err) } defer conn.Close() defer conn.Purge() channelId, _, err := conn.Subscribe() if err != nil { t.Fatalf("Error subscribing to channel: %#v", err) } conn.RegisterDecoder("unregister", client.DecoderFunc(decodeUnregisterReply)) for index := 0; index < 2; index++ { request := client.NewUnregister(channelId, true) reply, err := conn.WriteRequest(request) if err != nil { t.Fatalf("Error writing deregistration request (attempt %d): %#v", index, err) } if reply.Status() != 200 { t.Errorf("Unexpected status code for deregistration attempt %d: got %#v, want 200", index, reply.Status()) } } }
func TestPrematureUnregister(t *testing.T) { channelId, err := id.Generate() if err != nil { t.Fatalf("Error generating channel ID: %#v", err) } origin, err := testServer.Origin() if err != nil { t.Fatalf("Error initializing test server: %#v", err) } conn, err := client.DialOrigin(origin) if err != nil { t.Fatalf("Error dialing origin: %#v", err) } defer conn.Close() defer conn.Purge() conn.RegisterDecoder("unregister", client.DecoderFunc(decodeUnregisterReply)) request := client.NewUnregister(channelId, true) _, err = conn.WriteRequest(request) if err != io.EOF { t.Fatalf("Error writing deregistration request: got %#v; want io.EOF", err) } err = conn.Close() clientErr, ok := err.(client.Error) if !ok { t.Fatalf("Type assertion failed for close error: %#v", err) } if clientErr.Status() != 401 { t.Errorf("Unexpected close error status: got %#v; want 401", clientErr.Status()) } }