11const { By, Key, until, Builder } = require ( 'selenium-webdriver' )
22require ( 'chromedriver' )
33const assert = require ( 'assert' )
4- const { buildDriver, goToHome, captureScreensFor, teardown, log , goToQueue } = require ( '../utils' )
4+ const { buildDriver, goToHome, captureScreensFor, teardown, doWhile , goToQueue } = require ( '../utils' )
55const { createQueue, deleteQueue, getManagementUrl, basicAuthorization } = require ( '../mgt-api' )
6+ const { open : openAmqp , once : onceAmqp , on : onAmqp , close : closeAmqp } = require ( '../amqp' )
67
78const LoginPage = require ( '../pageobjects/LoginPage' )
89const OverviewPage = require ( '../pageobjects/OverviewPage' )
910const QueuesAndStreamsPage = require ( '../pageobjects/QueuesAndStreamsPage' )
1011const QueuePage = require ( '../pageobjects/QueuePage' )
1112const StreamPage = require ( '../pageobjects/StreamPage' )
1213
14+ var untilConnectionEstablished = new Promise ( ( resolve , reject ) => {
15+ onAmqp ( 'connection_open' , function ( context ) {
16+ console . log ( "Amqp connection opened" )
17+ resolve ( )
18+ } )
19+ } )
20+
1321describe ( 'Given a quorum queue' , function ( ) {
1422 let login
1523 let queuesAndStreams
@@ -18,7 +26,7 @@ describe('Given a quorum queue', function () {
1826 let stream
1927 let overview
2028 let captureScreen
21-
29+
2230 before ( async function ( ) {
2331 driver = buildDriver ( )
2432 await goToHome ( driver )
@@ -40,20 +48,54 @@ describe('Given a quorum queue', function () {
4048 createQueue ( getManagementUrl ( ) , basicAuthorization ( "management" , "guest" ) ,
4149 "/" , queueName , "quorum" )
4250
43- } )
44-
45- it ( 'add quorum queue and view it' , async function ( ) {
4651 await goToQueue ( driver , "/" , queueName )
4752 await queuePage . isLoaded ( )
4853 assert . equal ( queueName , await queuePage . getName ( ) )
54+
55+ } )
56+
57+ it ( 'it must display its queue-type and durability' , async function ( ) {
4958 let table = await queuePage . getFeatures ( )
5059 assert . equal ( table [ 0 ] . name , "arguments:" )
5160 let expectedArguments = [ { "name" :"x-queue-type:" , "value" :"quorum" } ]
5261 assert . equal ( JSON . stringify ( table [ 0 ] . value ) , JSON . stringify ( expectedArguments ) )
5362 assert . equal ( table [ 1 ] . name , "durable:" )
54- assert . equal ( table [ 1 ] . value , "true" )
63+ assert . equal ( table [ 1 ] . value , "true" )
64+ } )
5565
66+ it ( 'it should not have any consumers' , async function ( ) {
5667 assert . equal ( "0" , await queuePage . getConsumerCount ( ) )
68+ assert . equal ( "Consumers (0)" , await queuePage . getConsumersSectionTitle ( ) )
69+ } )
70+
71+ describe ( "given there is a consumer attached to the queue" , function ( ) {
72+ let amqp
73+ before ( async function ( ) {
74+ amqp = openAmqp ( queueName )
75+ await untilConnectionEstablished
76+ } )
77+
78+ it ( 'it should have one consumer' , async function ( ) {
79+ await doWhile ( async function ( ) {
80+ await queuePage . refresh ( )
81+ await queuePage . isLoaded ( )
82+ return queuePage . getConsumerCount ( )
83+ } , function ( count ) {
84+ return count . localeCompare ( "0" ) == 1
85+ } , 5000 )
86+ assert . equal ( "1" , await queuePage . getConsumerCount ( ) )
87+ assert . equal ( "Consumers (1)" , await queuePage . getConsumersSectionTitle ( ) )
88+ } )
89+
90+ after ( function ( ) {
91+ try {
92+ if ( amqp != null ) {
93+ closeAmqp ( amqp . connection )
94+ }
95+ } catch ( error ) {
96+ error ( "Failed to close amqp10 connection due to " + error ) ;
97+ }
98+ } )
5799 } )
58100
59101 after ( async function ( ) {
0 commit comments