@@ -410,6 +410,39 @@ public void TestConsumerRecoveryOnClientNamedQueueWithOneRecovery()
410410 }
411411 }
412412
413+ [ Fact ]
414+ public void TestConsumerRecoveryWithServerNamedQueue ( )
415+ {
416+ // https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/1238
417+ using ( AutorecoveringConnection c = CreateAutorecoveringConnection ( ) )
418+ {
419+ IChannel ch = c . CreateChannel ( ) ;
420+ QueueDeclareOk queueDeclareResult = ch . QueueDeclare ( queue : string . Empty , durable : false , exclusive : true , autoDelete : true , arguments : null ) ;
421+ string qname = queueDeclareResult . QueueName ;
422+ Assert . False ( string . IsNullOrEmpty ( qname ) ) ;
423+
424+ var cons = new EventingBasicConsumer ( ch ) ;
425+ ch . BasicConsume ( string . Empty , true , cons ) ;
426+ AssertConsumerCount ( ch , qname , 1 ) ;
427+
428+ bool queueNameBeforeIsEqual = false ;
429+ bool queueNameChangeAfterRecoveryCalled = false ;
430+ string qnameAfterRecovery = null ;
431+ c . QueueNameChangeAfterRecovery += ( source , ea ) =>
432+ {
433+ queueNameChangeAfterRecoveryCalled = true ;
434+ queueNameBeforeIsEqual = qname . Equals ( ea . NameBefore ) ;
435+ qnameAfterRecovery = ea . NameAfter ;
436+ } ;
437+
438+ CloseAndWaitForRecovery ( c ) ;
439+
440+ AssertConsumerCount ( ch , qnameAfterRecovery , 1 ) ;
441+ Assert . True ( queueNameChangeAfterRecoveryCalled ) ;
442+ Assert . True ( queueNameBeforeIsEqual ) ;
443+ }
444+ }
445+
413446 [ Fact ]
414447 public void TestConsumerRecoveryWithManyConsumers ( )
415448 {
0 commit comments