From b5b725a087345d1f89f1683fba30dc6b6c66300d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?M=C3=A1ximo=20Liberata=20Torres?=
 <maximoliberata0@gmail.com>
Date: Mon, 5 Aug 2024 16:23:05 -0400
Subject: [PATCH] test: remove unnecesary timeout

---
 test/abstract_client.ts | 68 ++++++++++++++++++++++++++++++++---------
 1 file changed, 53 insertions(+), 15 deletions(-)

diff --git a/test/abstract_client.ts b/test/abstract_client.ts
index c4d93399e..7f8d2ccdc 100644
--- a/test/abstract_client.ts
+++ b/test/abstract_client.ts
@@ -660,9 +660,7 @@ export default function abstractTest(server, config, ports) {
 
 			client.once('connect', () => {
 				assert.strictEqual(client.queue.length, 0)
-				setTimeout(() => {
-					client.end(true, done)
-				}, 10)
+				client.end((err) => done(err))
 			})
 		})
 
@@ -672,9 +670,7 @@ export default function abstractTest(server, config, ports) {
 			client.publish('test', 'test', { qos: 0 })
 			assert.strictEqual(client.queue.length, 0)
 			client.on('connect', () => {
-				setTimeout(() => {
-					client.end(true, done)
-				}, 10)
+				client.end((err) => done(err))
 			})
 		})
 
@@ -687,9 +683,7 @@ export default function abstractTest(server, config, ports) {
 			client.unsubscribe('test')
 			assert.strictEqual(client.queue.length, 2)
 			client.on('connect', () => {
-				setTimeout(() => {
-					client.end(true, done)
-				}, 10)
+				client.end((err) => done(err))
 			})
 		})
 
@@ -857,9 +851,7 @@ export default function abstractTest(server, config, ports) {
 
 			client.on('connect', () => {
 				assert.isTrue(called)
-				setTimeout(() => {
-					client.end(true, done)
-				}, 10)
+				client.end((err) => done(err))
 			})
 		})
 
@@ -1356,6 +1348,17 @@ export default function abstractTest(server, config, ports) {
 		})
 
 		function testQosHandleMessage(qos, done) {
+			teardownHelper.add({ executeOnce: true, order: 1 }, () => {
+				if (clock) {
+					clock.restore()
+				}
+			})
+
+			const clock = sinon.useFakeTimers({
+				...fakeTimersOptions,
+				toFake: ['setTimeout'],
+			})
+
 			const client = connect()
 
 			let messageEventCount = 0
@@ -1369,10 +1372,14 @@ export default function abstractTest(server, config, ports) {
 					if (handleMessageCount === 10) {
 						setTimeout(() => {
 							client.end(true, done)
-						})
+						}, 10)
+
+						clock.tick(10)
 					}
 					callback()
 				}, 10)
+
+				clock.tick(10)
 			}
 
 			client.on('message', (topic, message, packet) => {
@@ -3270,15 +3277,33 @@ export default function abstractTest(server, config, ports) {
 		})
 
 		it('should always cleanup successfully on reconnection', function _test(t, done) {
+			teardownHelper.add({ executeOnce: true, order: 1 }, () => {
+				if (clock) {
+					clock.restore()
+				}
+			})
+
+			const clock = sinon.useFakeTimers({
+				...fakeTimersOptions,
+				toFake: ['setTimeout'],
+			})
+
 			const client = connect({
 				host: 'this_hostname_should_not_exist',
 				connectTimeout: 0,
 				reconnectPeriod: 1,
 			})
+
 			// bind client.end so that when it is called it is automatically passed in the done callback
 			setTimeout(() => {
-				client.end(done)
-			}, 100)
+				setTimeout(() => {
+					client.end(done)
+				}, 10)
+
+				clock.tick(10)
+			}, 10)
+
+			clock.tick(10)
 		})
 
 		it('should emit connack timeout error', function _test(t, done) {
@@ -4023,6 +4048,17 @@ export default function abstractTest(server, config, ports) {
 		})
 
 		it('should be able to pub/sub if reconnect() is called at out of close handler', function _test(t, done) {
+			teardownHelper.add({ executeOnce: true, order: 1 }, () => {
+				if (clock) {
+					clock.restore()
+				}
+			})
+
+			const clock = sinon.useFakeTimers({
+				...fakeTimersOptions,
+				toFake: ['setTimeout'],
+			})
+
 			const client = connect({ reconnectPeriod: 0 })
 			let tryReconnect = true
 			let reconnectEvent = false
@@ -4033,6 +4069,8 @@ export default function abstractTest(server, config, ports) {
 					setTimeout(() => {
 						client.reconnect()
 					}, 100)
+
+					clock.tick(100)
 				} else {
 					assert.isTrue(reconnectEvent)
 					done()