forked from baron/baron-sso
57 lines
1.6 KiB
Dart
57 lines
1.6 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:userfront/core/services/runtime_env.dart';
|
|
|
|
const _expectedBackendUrl = String.fromEnvironment('BACKEND_URL');
|
|
const _expectedUserfrontUrl = String.fromEnvironment('USERFRONT_URL');
|
|
|
|
void main() {
|
|
group('runtime env compile-time defines', () {
|
|
test('runtime fallback is empty outside a browser origin', () {
|
|
expect(runtimeOriginFallback(), isEmpty);
|
|
});
|
|
|
|
test(
|
|
'BACKEND_URL dart-define overrides runtime origin fallback when set',
|
|
() {
|
|
if (_expectedBackendUrl.isEmpty) {
|
|
expect(runtimeBackendUrl(), runtimeOriginFallback());
|
|
return;
|
|
}
|
|
|
|
expect(runtimeBackendUrl(), sanitizedUrl(_expectedBackendUrl));
|
|
},
|
|
);
|
|
|
|
test(
|
|
'USERFRONT_URL dart-define overrides runtime origin fallback when set',
|
|
() {
|
|
if (_expectedUserfrontUrl.isEmpty) {
|
|
expect(runtimeUserfrontUrl(), runtimeOriginFallback());
|
|
return;
|
|
}
|
|
|
|
expect(runtimeUserfrontUrl(), sanitizedUrl(_expectedUserfrontUrl));
|
|
},
|
|
);
|
|
|
|
test('dart-define URLs are sanitized', () {
|
|
if (_expectedBackendUrl.isEmpty || _expectedUserfrontUrl.isEmpty) {
|
|
return;
|
|
}
|
|
|
|
expect(runtimeBackendUrl(), isNot(endsWith('/')));
|
|
expect(runtimeUserfrontUrl(), isNot(endsWith('/')));
|
|
});
|
|
|
|
test(
|
|
'sanitizedUrl removes dollar signs, whitespace, and trailing slash',
|
|
() {
|
|
expect(
|
|
sanitizedUrl(' https://example.test/path/\$ '),
|
|
'https://example.test/path',
|
|
);
|
|
},
|
|
);
|
|
});
|
|
}
|