@@ -95,6 +95,44 @@ func TestHttpPubSub(t *testing.T) {
9595 })
9696}
9797
98+ func TestHttpSubStatusCode (t * testing.T ) {
99+ pub , sub := createPubSub (t )
100+
101+ defer func () {
102+ require .NoError (t , pub .Close ())
103+ require .NoError (t , sub .Close ())
104+ }()
105+
106+ msgs , err := sub .Subscribe (context .Background (), "/test" )
107+ require .NoError (t , err )
108+
109+ go func () {
110+ _ = sub .StartHTTPServer ()
111+ }()
112+
113+ waitForHTTP (t , sub , time .Second * 10 )
114+
115+ t .Run ("response with custom http status code" , func (t * testing.T ) {
116+ go func () {
117+ select {
118+ case <- time .After (time .Second * 10 ):
119+ return
120+ case msg := <- msgs :
121+ http .SetResponseStatusCode (msg , nethttp .StatusForbidden )
122+ msg .Nack ()
123+ }
124+ }()
125+
126+ req , err := nethttp .NewRequest (nethttp .MethodPost , fmt .Sprintf ("http://%s/test" , sub .Addr ()), nil )
127+ require .NoError (t , err )
128+
129+ resp , err := nethttp .DefaultClient .Do (req )
130+ require .NoError (t , err )
131+
132+ require .Equal (t , nethttp .StatusForbidden , resp .StatusCode )
133+ })
134+ }
135+
98136func waitForHTTP (t * testing.T , sub * http.Subscriber , timeoutTime time.Duration ) {
99137 timeout := time .After (timeoutTime )
100138 for {
0 commit comments