@@ -178,58 +178,73 @@ func TestClient_Write(t *testing.T) {
178178 require .NoError (t , err )
179179 defer server .Close ()
180180
181- var called atomic.Int32
181+ t .Run ("write into the connection" , func (t * testing.T ) {
182+ var called atomic.Int32
183+ inboundMessageHandler := func (c * connection.Connection , message * iso8583.Message ) {
184+ called .Add (1 )
182185
183- inboundMessageHandler := func (c * connection.Connection , message * iso8583.Message ) {
184- called .Add (1 )
186+ mti , err := message .GetMTI ()
187+ require .NoError (t , err )
188+ require .Equal (t , "0810" , mti )
189+ }
185190
186- mti , err := message .GetMTI ()
191+ // we should be able to write any bytes to the server
192+ c , err := connection .New (server .Addr , testSpec , readMessageLength , writeMessageLength , connection .InboundMessageHandler (inboundMessageHandler ))
187193 require .NoError (t , err )
188- require .Equal (t , "0810" , mti )
189- }
194+ defer c .Close ()
190195
191- // we should be able to write any bytes to the server
192- c , err := connection .New (server .Addr , testSpec , readMessageLength , writeMessageLength , connection .InboundMessageHandler (inboundMessageHandler ))
193- require .NoError (t , err )
194- defer c .Close ()
196+ err = c .Connect ()
197+ require .NoError (t , err )
195198
196- err = c .Connect ()
197- require .NoError (t , err )
199+ // let's create data to write to the server, we will prepare header and
200+ // packed message
201+
202+ // network management message
203+ message := iso8583 .NewMessage (testSpec )
204+ err = message .Marshal (baseFields {
205+ MTI : field .NewStringValue ("0800" ),
206+ TestCaseCode : field .NewStringValue (TestCaseReply ),
207+ STAN : field .NewStringValue (getSTAN ()),
208+ })
209+ require .NoError (t , err )
198210
199- // let's create data to write to the server, we will prepare header and
200- // packed message
211+ packed , err := message . Pack ()
212+ require . NoError ( t , err )
201213
202- // network management message
203- message := iso8583 .NewMessage (testSpec )
204- err = message .Marshal (baseFields {
205- MTI : field .NewStringValue ("0800" ),
206- TestCaseCode : field .NewStringValue (TestCaseReply ),
207- STAN : field .NewStringValue (getSTAN ()),
208- })
209- require .NoError (t , err )
214+ // prepare header
215+ header := & bytes.Buffer {}
216+ _ , err = writeMessageLength (header , len (packed ))
217+ require .NoError (t , err )
210218
211- packed , err := message . Pack ()
212- require . NoError ( t , err )
219+ // combine header and message
220+ data := append ( header . Bytes (), packed ... )
213221
214- // prepare header
215- header := & bytes.Buffer {}
216- _ , err = writeMessageLength (header , len (packed ))
217- require .NoError (t , err )
222+ // write the data directly to the connection
223+ n , err := c .Write (data )
224+
225+ require .NoError (t , err )
226+ require .Equal (t , len (data ), n )
227+
228+ // we should expect to get reply, but as we are not using Send method,
229+ // the reply will be handled by InboundMessageHandler
230+ require .Eventually (t , func () bool {
231+ return called .Load () == 1
232+ }, 100 * time .Millisecond , 20 * time .Millisecond , "inboundMessageHandler should be called" )
233+ })
218234
219- // combine header and message
220- data := append (header .Bytes (), packed ... )
235+ t .Run ("write into the closed connection " , func (t * testing.T ) {
236+ c , err := connection .New (server .Addr , testSpec , readMessageLength , writeMessageLength )
237+ require .NoError (t , err )
238+ defer c .Close ()
221239
222- // write the data directly to the connection
223- n , err := c . Write ( data )
240+ err = c . Connect ()
241+ require . NoError ( t , err )
224242
225- require .NoError (t , err )
226- require .Equal (t , len (data ), n )
243+ c .Close ()
227244
228- // we should expect to get reply, but as we are not using Send method,
229- // the reply will be handled by InboundMessageHandler
230- require .Eventually (t , func () bool {
231- return called .Load () == 1
232- }, 100 * time .Millisecond , 20 * time .Millisecond , "inboundMessageHandler should be called" )
245+ _ , err = c .Write ([]byte ("hello" ))
246+ require .Error (t , err )
247+ })
233248}
234249
235250func TestClient_Send (t * testing.T ) {
0 commit comments