From 292d8a4fac94534ad826b598b4c8e65dcc0bb6c0 Mon Sep 17 00:00:00 2001
From: Catalin Pop <catapop@gmail.com>
Date: Fri, 17 May 2024 00:36:56 +0300
Subject: [PATCH 1/7] upgrade to web_socket_channel 3.0.0

---
 links/gql_websocket_link/pubspec.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/links/gql_websocket_link/pubspec.yaml b/links/gql_websocket_link/pubspec.yaml
index 362bbb30..95e99a58 100644
--- a/links/gql_websocket_link/pubspec.yaml
+++ b/links/gql_websocket_link/pubspec.yaml
@@ -11,7 +11,7 @@ dependencies:
   meta: ^1.3.0
   rxdart: '>=0.26.0 <0.28.0'
   uuid: '>=3.0.0 <5.0.0'
-  web_socket_channel: ^2.0.0
+  web_socket_channel: ^3.0.0
 dev_dependencies: 
   gql_pedantic: ^1.0.2
   mockito: ^5.0.0

From e2619cf7382ad606261d094882ea6da5bcfaaf90 Mon Sep 17 00:00:00 2001
From: Catalin Pop <catapop@gmail.com>
Date: Thu, 6 Jun 2024 06:10:23 +0300
Subject: [PATCH 2/7] adjust test units to web_socket_channel 3.0.0

---
 .../test/gql_websocket_link_test.dart         | 32 ++++++++++++++++---
 1 file changed, 28 insertions(+), 4 deletions(-)

diff --git a/links/gql_websocket_link/test/gql_websocket_link_test.dart b/links/gql_websocket_link/test/gql_websocket_link_test.dart
index 6d881d97..afae8435 100644
--- a/links/gql_websocket_link/test/gql_websocket_link_test.dart
+++ b/links/gql_websocket_link/test/gql_websocket_link_test.dart
@@ -156,6 +156,8 @@ void _testLinks(
       link = makeLink(null, channelGenerator: () => channel);
       //
       link.request(request).listen(print);
+
+      await server.close();
     },
   );
 
@@ -204,6 +206,8 @@ void _testLinks(
       );
       //
       link.request(request).listen(print);
+
+      await server.close();
     },
   );
 
@@ -254,6 +258,8 @@ void _testLinks(
       );
       //
       link.request(request).listen(print);
+
+      await server.close();
     },
   );
 
@@ -341,6 +347,8 @@ void _testLinks(
           },
         ),
       );
+
+      await server.close();
     },
   );
 
@@ -465,6 +473,8 @@ void _testLinks(
               count: maxCall,
             ),
           );
+
+      await server.close();
     },
   );
 
@@ -567,6 +577,8 @@ void _testLinks(
           },
         ),
       );
+
+      await server.close();
     },
   );
 
@@ -703,6 +715,8 @@ void _testLinks(
               count: maxCall,
             ),
           );
+
+      await server.close();
     },
   );
 
@@ -757,6 +771,7 @@ void _testLinks(
     webSocket = await WebSocket.connect("ws://localhost:${server.port}");
     channel = IOWebSocketChannel(webSocket);
     link = makeLink(null, channelGenerator: () => channel);
+    await server.close();
     expect(
       link.request(request).first,
       throwsA(isA<WebSocketLinkParserException>()),
@@ -812,6 +827,7 @@ void _testLinks(
     webSocket = await WebSocket.connect("ws://localhost:${server.port}");
     channel = IOWebSocketChannel(webSocket);
     link = makeLink(null, channelGenerator: () => channel);
+    await server.close();
     expect(
       link.request(request).first,
       throwsA(isA<WebSocketLinkServerException>()),
@@ -822,7 +838,7 @@ void _testLinks(
     HttpServer server;
     WebSocket webSocket;
     IOWebSocketChannel channel;
-    Link link;
+    late Link link;
     Request request;
 
     request = Request(
@@ -836,10 +852,16 @@ void _testLinks(
     server.transform(WebSocketTransformer());
 
     webSocket = await WebSocket.connect("ws://localhost:${server.port}");
-    // Close the socket to cause network error.
-    await webSocket.close();
     channel = IOWebSocketChannel(webSocket);
-    link = makeLink(null, channelGenerator: () => channel);
+    channel.stream.listen(null, onError: (err) {});
+
+    await webSocket.close();
+    link = makeLink(
+      null,
+      channelGenerator: () => channel,
+      autoReconnect: false,
+    );
+    await server.close();
     expect(
       link.request(request).first,
       throwsA(isA<WebSocketLinkServerException>()),
@@ -908,6 +930,8 @@ void _testLinks(
     channel = IOWebSocketChannel(webSocket);
     link = makeLink(null, channelGenerator: () => channel);
     responseSub = link.request(request).listen(print);
+
+    await server.close();
   });
 
   test(

From d6a799dcc689be248658195f007b575088b95150 Mon Sep 17 00:00:00 2001
From: Catalin Pop <catapop@gmail.com>
Date: Thu, 6 Jun 2024 06:22:31 +0300
Subject: [PATCH 3/7] fix auto reconnect unit test

---
 links/gql_websocket_link/test/gql_websocket_link_test.dart | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/links/gql_websocket_link/test/gql_websocket_link_test.dart b/links/gql_websocket_link/test/gql_websocket_link_test.dart
index afae8435..e6ffc768 100644
--- a/links/gql_websocket_link/test/gql_websocket_link_test.dart
+++ b/links/gql_websocket_link/test/gql_websocket_link_test.dart
@@ -1089,7 +1089,7 @@ void _testLinks(
                                 ConnectionAck(),
                               ),
                             );
-                            webSocket.close(websocket_status.goingAway);
+                            webSocket.close(websocket_status.normalClosure);
                           }
                           messageCount++;
                         },
@@ -1161,7 +1161,7 @@ void _testLinks(
                         expect(map["type"], startMessageType);
                         subId = map["id"] as String?;
                         // disconnect
-                        webSocket.close(websocket_status.goingAway);
+                        webSocket.close(websocket_status.normalClosure);
                       }
                       messageCount++;
                     },

From 0d8f953d35c2440b169735a6fba06a41dc273381 Mon Sep 17 00:00:00 2001
From: Catalin Pop <catapop@gmail.com>
Date: Thu, 6 Jun 2024 06:26:12 +0300
Subject: [PATCH 4/7] fix auto reconnect unit test

---
 links/gql_websocket_link/test/gql_websocket_link_test.dart | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/links/gql_websocket_link/test/gql_websocket_link_test.dart b/links/gql_websocket_link/test/gql_websocket_link_test.dart
index e6ffc768..bdb7caf6 100644
--- a/links/gql_websocket_link/test/gql_websocket_link_test.dart
+++ b/links/gql_websocket_link/test/gql_websocket_link_test.dart
@@ -1089,7 +1089,7 @@ void _testLinks(
                                 ConnectionAck(),
                               ),
                             );
-                            webSocket.close(websocket_status.normalClosure);
+                            webSocket.close(3001);
                           }
                           messageCount++;
                         },

From b291637603db0f9cae62f41069528a5f6a2d4278 Mon Sep 17 00:00:00 2001
From: Catalin Pop <catapop@gmail.com>
Date: Thu, 6 Jun 2024 06:43:26 +0300
Subject: [PATCH 5/7] add web_socket: 0.1.5

---
 links/gql_websocket_link/pubspec.yaml                      | 1 +
 links/gql_websocket_link/test/gql_websocket_link_test.dart | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/links/gql_websocket_link/pubspec.yaml b/links/gql_websocket_link/pubspec.yaml
index 95e99a58..867268fb 100644
--- a/links/gql_websocket_link/pubspec.yaml
+++ b/links/gql_websocket_link/pubspec.yaml
@@ -12,6 +12,7 @@ dependencies:
   rxdart: '>=0.26.0 <0.28.0'
   uuid: '>=3.0.0 <5.0.0'
   web_socket_channel: ^3.0.0
+  web_socket: ^0.1.5
 dev_dependencies: 
   gql_pedantic: ^1.0.2
   mockito: ^5.0.0
diff --git a/links/gql_websocket_link/test/gql_websocket_link_test.dart b/links/gql_websocket_link/test/gql_websocket_link_test.dart
index bdb7caf6..e6ffc768 100644
--- a/links/gql_websocket_link/test/gql_websocket_link_test.dart
+++ b/links/gql_websocket_link/test/gql_websocket_link_test.dart
@@ -1089,7 +1089,7 @@ void _testLinks(
                                 ConnectionAck(),
                               ),
                             );
-                            webSocket.close(3001);
+                            webSocket.close(websocket_status.normalClosure);
                           }
                           messageCount++;
                         },

From 46533a673e7081ec6145554dcdf0be48ab71d65f Mon Sep 17 00:00:00 2001
From: Catalin Pop <catapop@gmail.com>
Date: Thu, 6 Jun 2024 06:51:01 +0300
Subject: [PATCH 6/7] normal closure on auto reconnect

---
 links/gql_websocket_link/test/gql_websocket_link_test.dart | 1 +
 1 file changed, 1 insertion(+)

diff --git a/links/gql_websocket_link/test/gql_websocket_link_test.dart b/links/gql_websocket_link/test/gql_websocket_link_test.dart
index e6ffc768..143d09ed 100644
--- a/links/gql_websocket_link/test/gql_websocket_link_test.dart
+++ b/links/gql_websocket_link/test/gql_websocket_link_test.dart
@@ -1111,6 +1111,7 @@ void _testLinks(
           return IOWebSocketChannel(webSocket);
         },
         reconnectInterval: Duration(milliseconds: 500),
+        autoReconnect: true
       );
       //
       link.request(request).listen(print, onError: print);

From 240a4b29b7eeadfa49106fd3c1866d4cefcad3e1 Mon Sep 17 00:00:00 2001
From: Catalin Pop <catapop@gmail.com>
Date: Sun, 9 Jun 2024 01:33:32 +0300
Subject: [PATCH 7/7] - dart format

---
 .../test/gql_websocket_link_test.dart            | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/links/gql_websocket_link/test/gql_websocket_link_test.dart b/links/gql_websocket_link/test/gql_websocket_link_test.dart
index 143d09ed..376110eb 100644
--- a/links/gql_websocket_link/test/gql_websocket_link_test.dart
+++ b/links/gql_websocket_link/test/gql_websocket_link_test.dart
@@ -1103,17 +1103,11 @@ void _testLinks(
             ),
           );
 
-      link = makeLink(
-        null,
-        channelGenerator: () async {
-          final webSocket =
-              await WebSocket.connect("ws://localhost:${server.port}");
-          return IOWebSocketChannel(webSocket);
-        },
-        reconnectInterval: Duration(milliseconds: 500),
-        autoReconnect: true
-      );
-      //
+      link = makeLink(null, channelGenerator: () async {
+        final webSocket =
+            await WebSocket.connect("ws://localhost:${server.port}");
+        return IOWebSocketChannel(webSocket);
+      }, reconnectInterval: Duration(milliseconds: 500), autoReconnect: true);
       link.request(request).listen(print, onError: print);
     },
   );