From f100957fec1c48fce06fb20ba164ad24733de9c5 Mon Sep 17 00:00:00 2001 From: git-elliot Date: Sat, 18 Jan 2025 12:40:29 +0530 Subject: [PATCH] Added dns and reverse dns tests --- integration_test/app_test.dart | 4 ++ integration_test/dns/lookup/lookup_test.dart | 42 ++++++++++++++++++ .../dns/reverse_lookup/reverse_lookup.dart | 44 +++++++++++++++++++ lib/pages/dns/dns_page.dart | 3 +- lib/pages/dns/reverse_dns_page.dart | 3 +- lib/pages/home_page.dart | 2 + lib/values/keys.dart | 2 + lib/values/strings.dart | 4 ++ 8 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 integration_test/dns/lookup/lookup_test.dart create mode 100644 integration_test/dns/reverse_lookup/reverse_lookup.dart diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart index fe8b4ba2..d860e4e4 100644 --- a/integration_test/app_test.dart +++ b/integration_test/app_test.dart @@ -3,6 +3,8 @@ import 'package:integration_test/integration_test.dart'; import 'package:vernet/main.dart'; import 'package:vernet/ui/adaptive/adaptive_list.dart'; +import 'dns/lookup/lookup_test.dart' as lookup_test; +import 'dns/reverse_lookup/reverse_lookup.dart' as reverse_lookup; import 'network_troubleshooting_test/ping_test/ping_test.dart' as ping_test; import 'wifi_test/wifi_test_runner.dart' as wifi_test_runner; @@ -21,4 +23,6 @@ void main() { }); wifi_test_runner.main(); ping_test.main(); + lookup_test.main(); + reverse_lookup.main(); } diff --git a/integration_test/dns/lookup/lookup_test.dart b/integration_test/dns/lookup/lookup_test.dart new file mode 100644 index 00000000..11fcfde6 --- /dev/null +++ b/integration_test/dns/lookup/lookup_test.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:vernet/main.dart'; +import 'package:vernet/ui/adaptive/adaptive_list.dart'; +import 'package:vernet/values/keys.dart'; +import 'package:vernet/values/strings.dart'; + +void main() { + group('Dns lookup integration test', () { + testWidgets('tap on the DNS lookup button, verify lookup ended', + (tester) async { + // Load app widget. + await tester.pumpWidget(const MyApp(true)); + await tester.pumpAndSettle(); + + // Verify that there are 4 widgets at homepage + expect(find.bySubtype(), findsAtLeastNWidgets(4)); + + // Finds the scan for devices button to tap on. + final lookupButton = find.byKey(WidgetKey.dnsLookupButton.key); + + // Emulate a tap on the button. + await tester.tap(lookupButton); + await tester.pumpAndSettle(); + + expect(find.text(StringValue.dnsLookupEmptyPlaceholder), findsOneWidget); + + await tester.enterText( + find.byType(TextFormField), + 'google.com', + ); + await tester.pumpAndSettle(); + + final submitButton = find.byKey(WidgetKey.basePageSubmitButton.key); + await tester.tap(submitButton); + + await tester.pumpAndSettle(const Duration(seconds: 2)); + + expect(find.byType(AdaptiveListTile), findsExactly(3)); + }); + }); +} diff --git a/integration_test/dns/reverse_lookup/reverse_lookup.dart b/integration_test/dns/reverse_lookup/reverse_lookup.dart new file mode 100644 index 00000000..d8365941 --- /dev/null +++ b/integration_test/dns/reverse_lookup/reverse_lookup.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:vernet/main.dart'; +import 'package:vernet/ui/adaptive/adaptive_list.dart'; +import 'package:vernet/values/keys.dart'; +import 'package:vernet/values/strings.dart'; + +void main() { + group('Reverse DNS lookup integration test', () { + testWidgets('tap on the reverse DNS lookup button, verify lookup ended', + (tester) async { + // Load app widget. + await tester.pumpWidget(const MyApp(true)); + await tester.pumpAndSettle(); + + // Verify that there are 4 widgets at homepage + expect(find.bySubtype(), findsAtLeastNWidgets(4)); + + // Finds the scan for devices button to tap on. + final reverseDnsLookupButton = + find.byKey(WidgetKey.reverseDnsLookupButton.key); + + // Emulate a tap on the button. + await tester.tap(reverseDnsLookupButton); + await tester.pumpAndSettle(); + + expect(find.text(StringValue.reverseDnsLookupEmptyPlaceholder), + findsOneWidget); + + await tester.enterText( + find.byType(TextFormField), + '172.217.160.142', + ); + await tester.pumpAndSettle(); + + final submitButton = find.byKey(WidgetKey.basePageSubmitButton.key); + await tester.tap(submitButton); + + await tester.pumpAndSettle(const Duration(seconds: 2)); + + expect(find.text("maa03s29-in-f14.1e100.net"), findsOne); + }); + }); +} diff --git a/lib/pages/dns/dns_page.dart b/lib/pages/dns/dns_page.dart index ca09ab26..627eedcc 100644 --- a/lib/pages/dns/dns_page.dart +++ b/lib/pages/dns/dns_page.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:vernet/pages/base_page.dart'; import 'package:vernet/ui/adaptive/adaptive_list.dart'; +import 'package:vernet/values/strings.dart'; class DNSPage extends StatefulWidget { const DNSPage({super.key}); @@ -20,7 +21,7 @@ class _DNSPageState extends BasePage { return _addresses.isEmpty ? const Center( child: Text( - 'No addresses found yet.\nAll addresses will appear here.', + StringValue.dnsLookupEmptyPlaceholder, textAlign: TextAlign.center, ), ) diff --git a/lib/pages/dns/reverse_dns_page.dart b/lib/pages/dns/reverse_dns_page.dart index 9c70bfc8..1cbf75da 100644 --- a/lib/pages/dns/reverse_dns_page.dart +++ b/lib/pages/dns/reverse_dns_page.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:vernet/pages/base_page.dart'; +import 'package:vernet/values/strings.dart'; class ReverseDNSPage extends StatefulWidget { const ReverseDNSPage({super.key}); @@ -23,7 +24,7 @@ class _ReverseDNSPageState extends BasePage { if (_address == null) { return const Center( child: Text( - 'Host name not found yet.\nHost name will appear here.', + StringValue.reverseDnsLookupEmptyPlaceholder, textAlign: TextAlign.center, ), ); diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index e670b873..9aa23295 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -259,6 +259,7 @@ class _WifiDetailState extends State { Row( children: [ ElevatedButton.icon( + key: WidgetKey.dnsLookupButton.key, onPressed: () { Navigator.push( context, @@ -272,6 +273,7 @@ class _WifiDetailState extends State { ), const SizedBox(width: 10), ElevatedButton.icon( + key: WidgetKey.reverseDnsLookupButton.key, onPressed: () { Navigator.push( context, diff --git a/lib/values/keys.dart b/lib/values/keys.dart index 9a9e5a33..126db4f2 100644 --- a/lib/values/keys.dart +++ b/lib/values/keys.dart @@ -5,6 +5,7 @@ enum WidgetKey implements Comparable { rangePortScanRadioButton('rangePortScanRadioButton'), singlePortScanRadioButton('singlePortScanRadioButton'), scanForOpenPortsButton('scanForOpenPortsButton'), + reverseDnsLookupButton('reverseDnsLookupButton'), pingSummaryTotalTime('pingSummaryTotalTime'), scanForDevicesButton('scanForDevicesButton'), basePageSubmitButton('basePageSubmitButton'), @@ -13,6 +14,7 @@ enum WidgetKey implements Comparable { veryShortPortChip('veryShortPortChip'), rescanIconButton('rescanIconButton'), pingSummarySent('pingSummarySent'), + dnsLookupButton('dnsLookupButton'), portScanButton('portScanButton'), cloudflareChip('cloudflareChip'), knownPortChip('knownPortChip'), diff --git a/lib/values/strings.dart b/lib/values/strings.dart index d1328ede..afebcbf4 100644 --- a/lib/values/strings.dart +++ b/lib/values/strings.dart @@ -22,4 +22,8 @@ class StringValue { static const String hostScanPageTitle = 'Scan for devices'; static const String loadingDevicesMessage = 'Searching for devices in your local network'; + static const String dnsLookupEmptyPlaceholder = + 'No addresses found yet.\nAll addresses will appear here.'; + static const String reverseDnsLookupEmptyPlaceholder = + 'Host name not found yet.\nHost name will appear here.'; }