mirror of
https://github.com/foss42/apidash.git
synced 2025-12-03 03:17:00 +08:00
test: update auth field tests
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:apidash_design_system/apidash_design_system.dart';
|
||||
@@ -29,7 +31,12 @@ class _ApiKeyAuthFieldsState extends State<ApiKeyAuthFields> {
|
||||
super.initState();
|
||||
final apiAuth = widget.authData?.apikey;
|
||||
_key = apiAuth?.key ?? '';
|
||||
_name = apiAuth?.name ?? kApiKeyHeaderName;
|
||||
log(apiAuth?.name ?? "By default name is empty");
|
||||
_name = (apiAuth?.name != null && apiAuth!.name.isNotEmpty)
|
||||
? apiAuth.name
|
||||
: kApiKeyHeaderName;
|
||||
|
||||
log(_name);
|
||||
_addKeyTo = apiAuth?.location ?? kAddToDefaultLocation;
|
||||
}
|
||||
|
||||
@@ -68,7 +75,7 @@ class _ApiKeyAuthFieldsState extends State<ApiKeyAuthFields> {
|
||||
EnvAuthField(
|
||||
readOnly: widget.readOnly,
|
||||
hintText: kHintTextFieldName,
|
||||
initialValue: widget.authData?.apikey?.name,
|
||||
initialValue: _name,
|
||||
onChanged: (value) {
|
||||
_name = value;
|
||||
_updateApiKeyAuth();
|
||||
@@ -80,7 +87,7 @@ class _ApiKeyAuthFieldsState extends State<ApiKeyAuthFields> {
|
||||
title: kLabelApiKey,
|
||||
hintText: kHintTextKey,
|
||||
isObscureText: true,
|
||||
initialValue: widget.authData?.apikey?.key,
|
||||
initialValue: _key,
|
||||
onChanged: (value) {
|
||||
_key = value;
|
||||
_updateApiKeyAuth();
|
||||
|
||||
@@ -21,7 +21,7 @@ class EnvAuthField extends StatefulWidget {
|
||||
this.readOnly = false,
|
||||
this.isObscureText = false,
|
||||
this.infoText,
|
||||
this.initialValue});
|
||||
required this.initialValue});
|
||||
|
||||
@override
|
||||
State<EnvAuthField> createState() => _AuthFieldState();
|
||||
@@ -59,7 +59,7 @@ class _AuthFieldState extends State<EnvAuthField> {
|
||||
EnvironmentTriggerField(
|
||||
keyId: "auth-${widget.title ?? widget.hintText}-${Random.secure()}",
|
||||
onChanged: widget.onChanged,
|
||||
initialValue: widget.initialValue,
|
||||
initialValue: widget.initialValue ?? "",
|
||||
readOnly: widget.readOnly,
|
||||
// TODO: Needs some new implementation
|
||||
// obscureText: widget.isObscureText,
|
||||
|
||||
@@ -2,7 +2,9 @@ import 'package:apidash/screens/common_widgets/auth/api_key_auth_fields.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:apidash_design_system/apidash_design_system.dart';
|
||||
import 'package:extended_text_field/extended_text_field.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_portal/flutter_portal.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
@@ -23,11 +25,15 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SingleChildScrollView(
|
||||
child: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -35,7 +41,7 @@ void main() {
|
||||
|
||||
expect(find.text('Add to'), findsOneWidget);
|
||||
expect(find.byType(ADPopupMenu<String>), findsOneWidget);
|
||||
expect(find.byType(AuthTextField), findsNWidgets(2));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(2));
|
||||
expect(find.text('Header'), findsOneWidget);
|
||||
});
|
||||
|
||||
@@ -43,20 +49,38 @@ void main() {
|
||||
'updates auth data when authData is null and API key value is changed',
|
||||
(WidgetTester tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ApiKeyAuthFields(
|
||||
authData: null,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SingleChildScrollView(
|
||||
child: ApiKeyAuthFields(
|
||||
authData: null,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Find the key field (second AuthTextField)
|
||||
final keyField = find.byType(AuthTextField).last;
|
||||
await tester.tap(keyField);
|
||||
await tester.enterText(keyField, 'new-api-key');
|
||||
// Wait for the widget to settle
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Find EnvAuthField widgets
|
||||
final authFields = find.byType(EnvAuthField);
|
||||
expect(authFields, findsNWidgets(2));
|
||||
|
||||
// Find ExtendedTextField widgets within the EnvAuthField widgets
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(2));
|
||||
|
||||
// Use testTextInput to directly input text
|
||||
final lastField = textFields.last;
|
||||
await tester.tap(lastField);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('new-api-key');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -77,11 +101,15 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SingleChildScrollView(
|
||||
child: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -89,7 +117,7 @@ void main() {
|
||||
|
||||
expect(find.text('Add to'), findsOneWidget);
|
||||
expect(find.text('Header'), findsOneWidget);
|
||||
expect(find.byType(AuthTextField), findsNWidgets(2));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(2));
|
||||
});
|
||||
|
||||
testWidgets('renders with query params location',
|
||||
@@ -104,11 +132,15 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SingleChildScrollView(
|
||||
child: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -130,11 +162,15 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SingleChildScrollView(
|
||||
child: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -166,20 +202,33 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SingleChildScrollView(
|
||||
child: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Find the name field (first AuthTextField)
|
||||
final nameField = find.byType(AuthTextField).first;
|
||||
await tester.tap(nameField);
|
||||
await tester.enterText(nameField, 'Authorization');
|
||||
// Wait for the widget to settle
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Find ExtendedTextField widgets
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(2));
|
||||
|
||||
// Tap and enter text in the name field (should be the first text field)
|
||||
await tester.tap(textFields.first);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('Authorization');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -200,20 +249,37 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SingleChildScrollView(
|
||||
child: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Find the key field (second AuthTextField)
|
||||
final keyField = find.byType(AuthTextField).last;
|
||||
await tester.tap(keyField);
|
||||
await tester.enterText(keyField, 'new-api-key');
|
||||
// Wait for the widget to settle
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Find EnvAuthField widgets
|
||||
final textFields = find.byType(EnvAuthField);
|
||||
expect(textFields, findsNWidgets(2));
|
||||
|
||||
// Find the underlying ExtendedTextField widgets
|
||||
final extendedTextFields = find.byType(ExtendedTextField);
|
||||
expect(extendedTextFields, findsAtLeastNWidgets(2));
|
||||
|
||||
// Tap and enter text in the key field (should be the last text field)
|
||||
await tester.tap(extendedTextFields.last);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('new-api-key');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -233,21 +299,25 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
readOnly: true,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SingleChildScrollView(
|
||||
child: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
readOnly: true,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Verify that AuthTextField widgets are rendered
|
||||
expect(find.byType(AuthTextField), findsNWidgets(2));
|
||||
// Verify that EnvAuthField widgets are rendered
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(2));
|
||||
|
||||
// The readOnly property should be passed to AuthTextField widgets
|
||||
// The readOnly property should be passed to EnvAuthField widgets
|
||||
// This is verified by the widget structure itself
|
||||
});
|
||||
|
||||
@@ -255,11 +325,15 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SingleChildScrollView(
|
||||
child: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -267,28 +341,40 @@ void main() {
|
||||
|
||||
expect(find.text('Add to'), findsOneWidget);
|
||||
// Check for the existence of the auth text fields
|
||||
expect(find.byType(AuthTextField), findsNWidgets(2));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(2));
|
||||
});
|
||||
testWidgets('initializes with correct default values',
|
||||
(WidgetTester tester) async {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SingleChildScrollView(
|
||||
child: ApiKeyAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Wait for the widget to settle
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Default location should be header
|
||||
expect(find.text('Header'), findsOneWidget);
|
||||
|
||||
// Default name should be 'x-api-key' in the text field
|
||||
expect(find.text('x-api-key'), findsOneWidget);
|
||||
// Check for the existence of text fields with default values
|
||||
final textFields = find.byType(EnvAuthField);
|
||||
expect(textFields, findsNWidgets(2));
|
||||
|
||||
// Verify the first text field (name) has the default value in its controller
|
||||
final nameTextField = tester.widget<EnvAuthField>(textFields.first);
|
||||
expect(nameTextField.initialValue, 'x-api-key');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import 'package:apidash/screens/common_widgets/auth/basic_auth_fields.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:extended_text_field/extended_text_field.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_portal/flutter_portal.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
@@ -22,17 +24,19 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsNWidgets(2));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(2));
|
||||
expect(find.text('Username'), findsNWidgets(2));
|
||||
expect(find.text('Password'), findsNWidgets(2));
|
||||
});
|
||||
@@ -48,17 +52,19 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsNWidgets(2));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(2));
|
||||
expect(find.text('Username'), findsExactly(2));
|
||||
expect(find.text('Password'), findsExactly(2));
|
||||
});
|
||||
@@ -74,20 +80,28 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Find the username field (first AuthTextField)
|
||||
final usernameField = find.byType(AuthTextField).first;
|
||||
// Find the username field (first ExtendedTextField)
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(2));
|
||||
|
||||
final usernameField = textFields.first;
|
||||
await tester.tap(usernameField);
|
||||
await tester.enterText(usernameField, 'newuser');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('newuser');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -108,20 +122,28 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Find the password field (second AuthTextField)
|
||||
final passwordField = find.byType(AuthTextField).last;
|
||||
// Find the password field (second ExtendedTextField)
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(2));
|
||||
|
||||
final passwordField = textFields.last;
|
||||
await tester.tap(passwordField);
|
||||
await tester.enterText(passwordField, 'newpass');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('newpass');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -141,21 +163,23 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
readOnly: true,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
readOnly: true,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Verify that AuthTextField widgets are rendered
|
||||
expect(find.byType(AuthTextField), findsNWidgets(2));
|
||||
// Verify that EnvAuthField widgets are rendered
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(2));
|
||||
|
||||
// The readOnly property should be passed to AuthTextField widgets
|
||||
// The readOnly property should be passed to EnvAuthField widgets
|
||||
// This is verified by the widget structure itself
|
||||
});
|
||||
|
||||
@@ -163,17 +187,19 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsNWidgets(2));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(2));
|
||||
});
|
||||
|
||||
testWidgets('handles empty auth data gracefully',
|
||||
@@ -187,17 +213,19 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsNWidgets(2));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(2));
|
||||
});
|
||||
|
||||
testWidgets('creates proper AuthModel on field changes',
|
||||
@@ -205,20 +233,28 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BasicAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Enter username
|
||||
final usernameField = find.byType(AuthTextField).first;
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(2));
|
||||
|
||||
final usernameField = textFields.first;
|
||||
await tester.tap(usernameField);
|
||||
await tester.enterText(usernameField, 'testuser');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('testuser');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called with correct structure
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import 'package:apidash/screens/common_widgets/auth/bearer_auth_fields.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:extended_text_field/extended_text_field.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_portal/flutter_portal.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
@@ -22,17 +24,19 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsOneWidget);
|
||||
expect(find.byType(EnvAuthField), findsOneWidget);
|
||||
expect(find.text('Token'), findsNWidgets(2));
|
||||
});
|
||||
|
||||
@@ -46,17 +50,19 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsOneWidget);
|
||||
expect(find.byType(EnvAuthField), findsOneWidget);
|
||||
expect(find.text('Token'), findsNWidgets(2));
|
||||
});
|
||||
|
||||
@@ -70,20 +76,28 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Find the token field
|
||||
final tokenField = find.byType(AuthTextField);
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(1));
|
||||
|
||||
final tokenField = textFields.first;
|
||||
await tester.tap(tokenField);
|
||||
await tester.enterText(tokenField, 'new-bearer-token');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('new-bearer-token');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -102,21 +116,23 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
readOnly: true,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
readOnly: true,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Verify that AuthTextField widget is rendered
|
||||
expect(find.byType(AuthTextField), findsOneWidget);
|
||||
// Verify that EnvAuthField widget is rendered
|
||||
expect(find.byType(EnvAuthField), findsOneWidget);
|
||||
|
||||
// The readOnly property should be passed to AuthTextField widget
|
||||
// The readOnly property should be passed to EnvAuthField widget
|
||||
// This is verified by the widget structure itself
|
||||
});
|
||||
|
||||
@@ -124,17 +140,19 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsOneWidget);
|
||||
expect(find.byType(EnvAuthField), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('handles empty auth data gracefully',
|
||||
@@ -147,17 +165,19 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsOneWidget);
|
||||
expect(find.byType(EnvAuthField), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('creates proper AuthModel on token change',
|
||||
@@ -165,20 +185,28 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Enter token
|
||||
final tokenField = find.byType(AuthTextField);
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(1));
|
||||
|
||||
final tokenField = textFields.first;
|
||||
await tester.tap(tokenField);
|
||||
await tester.enterText(tokenField, 'test-bearer-token');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('test-bearer-token');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called with correct structure
|
||||
@@ -193,18 +221,20 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// The token field should be empty initially
|
||||
expect(find.byType(AuthTextField), findsOneWidget);
|
||||
expect(find.byType(EnvAuthField), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('trims whitespace from token input',
|
||||
@@ -212,20 +242,28 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: BearerAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Enter token with whitespace
|
||||
final tokenField = find.byType(AuthTextField);
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(1));
|
||||
|
||||
final tokenField = textFields.first;
|
||||
await tester.tap(tokenField);
|
||||
await tester.enterText(tokenField, ' test-token ');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText(' test-token ');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called with trimmed token
|
||||
|
||||
@@ -2,7 +2,9 @@ import 'package:apidash/screens/common_widgets/auth/digest_auth_fields.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:apidash_design_system/widgets/widgets.dart';
|
||||
import 'package:extended_text_field/extended_text_field.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_portal/flutter_portal.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
@@ -23,19 +25,21 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsNWidgets(6));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(6));
|
||||
expect(find.byType(ADPopupMenu<String>), findsOneWidget);
|
||||
// Check for field labels (each AuthTextField creates a Text widget for label)
|
||||
// Check for field labels (each EnvAuthField creates a Text widget for label)
|
||||
expect(find.text('Username'), findsNWidgets(2));
|
||||
expect(find.text('Password'), findsNWidgets(2));
|
||||
expect(find.text('Realm'), findsNWidgets(2));
|
||||
@@ -61,17 +65,19 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsNWidgets(6));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(6));
|
||||
expect(find.byType(ADPopupMenu<String>), findsOneWidget);
|
||||
expect(find.text('MD5'), findsOneWidget);
|
||||
});
|
||||
@@ -92,20 +98,28 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Find the username field (first AuthTextField)
|
||||
final usernameField = find.byType(AuthTextField).first;
|
||||
// Find the username field (first ExtendedTextField)
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(6));
|
||||
|
||||
final usernameField = textFields.first;
|
||||
await tester.tap(usernameField);
|
||||
await tester.enterText(usernameField, 'newuser');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('newuser');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -131,20 +145,28 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Find the password field (second AuthTextField)
|
||||
final passwordField = find.byType(AuthTextField).at(1);
|
||||
// Find the password field (second ExtendedTextField)
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(6));
|
||||
|
||||
final passwordField = textFields.at(1);
|
||||
await tester.tap(passwordField);
|
||||
await tester.enterText(passwordField, 'newpass');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('newpass');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -170,11 +192,13 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -210,20 +234,28 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Find the realm field (third AuthTextField)
|
||||
final realmField = find.byType(AuthTextField).at(2);
|
||||
// Find the realm field (third ExtendedTextField)
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(6));
|
||||
|
||||
final realmField = textFields.at(2);
|
||||
await tester.tap(realmField);
|
||||
await tester.enterText(realmField, 'newrealm');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText('newrealm');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -247,46 +279,51 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
readOnly: true,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
readOnly: true,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
final usernameFieldFinder = find.byType(AuthTextField).first;
|
||||
final usernameFieldFinder = find.byType(ExtendedTextField).first;
|
||||
|
||||
// Try to enter text
|
||||
await tester.enterText(usernameFieldFinder, 'testuser');
|
||||
await tester.pumpAndSettle();
|
||||
// Verify the field is readOnly
|
||||
final usernameField =
|
||||
tester.widget<ExtendedTextField>(usernameFieldFinder);
|
||||
expect(usernameField.readOnly, isTrue);
|
||||
|
||||
// Ensure updateAuth was not called
|
||||
expect(capturedAuthUpdates, isEmpty);
|
||||
|
||||
// Check the field still shows original value
|
||||
final textField = tester.widget<AuthTextField>(usernameFieldFinder);
|
||||
expect(textField.controller.text, equals('user'));
|
||||
final textField = tester.widget<ExtendedTextField>(usernameFieldFinder);
|
||||
expect(textField.controller?.text, equals('user'));
|
||||
});
|
||||
|
||||
testWidgets('displays correct hint texts', (WidgetTester tester) async {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(AuthTextField), findsNWidgets(6));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(6));
|
||||
expect(find.byType(ADPopupMenu<String>), findsOneWidget);
|
||||
expect(find.text('Algorithm'), findsOneWidget);
|
||||
});
|
||||
@@ -296,11 +333,13 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -311,7 +350,7 @@ void main() {
|
||||
|
||||
// Default QOP should be 'auth' - but this is in the TextFormField value, not visible text
|
||||
// We need to check the controller value instead
|
||||
expect(find.byType(AuthTextField), findsNWidgets(6));
|
||||
expect(find.byType(EnvAuthField), findsNWidgets(6));
|
||||
});
|
||||
|
||||
testWidgets('creates proper AuthModel on field changes',
|
||||
@@ -319,20 +358,22 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Enter username
|
||||
final usernameField = find.byType(AuthTextField).first;
|
||||
final usernameField = find.byType(ExtendedTextField).first;
|
||||
await tester.tap(usernameField);
|
||||
await tester.enterText(usernameField, 'testuser');
|
||||
tester.testTextInput.enterText('testuser');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called with correct structure
|
||||
@@ -348,11 +389,13 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -380,20 +423,28 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DigestAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Enter username with whitespace
|
||||
final usernameField = find.byType(AuthTextField).first;
|
||||
final textFields = find.byType(ExtendedTextField);
|
||||
expect(textFields, findsAtLeastNWidgets(6));
|
||||
|
||||
final usernameField = textFields.first;
|
||||
await tester.tap(usernameField);
|
||||
await tester.enterText(usernameField, ' testuser ');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Use tester.testTextInput to enter text directly
|
||||
tester.testTextInput.enterText(' testuser ');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called with trimmed values
|
||||
|
||||
@@ -2,8 +2,10 @@ import 'package:apidash/screens/common_widgets/auth/jwt_auth_fields.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:apidash_design_system/apidash_design_system.dart';
|
||||
import 'package:extended_text_field/extended_text_field.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:flutter_portal/flutter_portal.dart';
|
||||
|
||||
void main() {
|
||||
group('JwtAuthFields Widget Tests', () {
|
||||
@@ -23,11 +25,13 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -59,11 +63,13 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -93,11 +99,13 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -105,7 +113,7 @@ void main() {
|
||||
|
||||
expect(find.text('Secret Key'), findsExactly(2));
|
||||
expect(find.text('Secret is Base64 encoded'), findsOneWidget);
|
||||
expect(find.byType(AuthTextField), findsOneWidget);
|
||||
expect(find.byType(EnvAuthField), findsOneWidget);
|
||||
expect(find.byType(CheckboxListTile), findsOneWidget);
|
||||
});
|
||||
|
||||
@@ -127,11 +135,13 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -160,11 +170,13 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -202,11 +214,13 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -244,20 +258,22 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Find the secret field
|
||||
final secretField = find.byType(AuthTextField).first;
|
||||
final secretField = find.byType(ExtendedTextField).first;
|
||||
await tester.tap(secretField);
|
||||
await tester.enterText(secretField, 'new-secret');
|
||||
tester.testTextInput.enterText('new-secret');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -284,11 +300,13 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -297,7 +315,7 @@ void main() {
|
||||
// Find the payload field (TextField)
|
||||
final payloadField = find.byType(TextField).last;
|
||||
await tester.tap(payloadField);
|
||||
await tester.enterText(payloadField, '{"sub": "1234567890"}');
|
||||
tester.testTextInput.enterText('{"sub": "1234567890"}');
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Verify that updateAuth was called
|
||||
@@ -324,11 +342,13 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -349,11 +369,13 @@ void main() {
|
||||
mockAuthData = null;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: JwtAuthFields(
|
||||
authData: mockAuthData,
|
||||
updateAuth: mockUpdateAuth,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user