TF-2903 Add sanitize url function
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class SanitizeUrl {
|
||||
|
||||
final bool defaultToHttps;
|
||||
|
||||
SanitizeUrl({this.defaultToHttps = true});
|
||||
|
||||
final _protocolIdentifierRegex = RegExp(
|
||||
r'^(https?://)',
|
||||
caseSensitive: false,
|
||||
);
|
||||
|
||||
String process(String inputText) {
|
||||
var originalUrl = inputText;
|
||||
|
||||
originalUrl = Uri.decodeFull(originalUrl);
|
||||
|
||||
if (GetUtils.isURL(originalUrl)) {
|
||||
if (!originalUrl.startsWith(_protocolIdentifierRegex)) {
|
||||
originalUrl = (defaultToHttps ? "https://" : "http://") + originalUrl;
|
||||
}
|
||||
} else {
|
||||
originalUrl = '';
|
||||
}
|
||||
log('SanitizeUrl::process:originalUrl = $originalUrl');
|
||||
return originalUrl;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
import 'package:core/presentation/utils/html_transformer/sanitize_url.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
group('SanitizeUrl test', () {
|
||||
final sanitizeUrl = SanitizeUrl();
|
||||
|
||||
test('SHOULD return valid url WHEN input text is valid url start with https', () {
|
||||
final validUrl = sanitizeUrl.process('https://linagora.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('https://linagora.com')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return valid url WHEN input text is valid url start with http', () {
|
||||
final validUrl = sanitizeUrl.process('http://linagora.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('http://linagora.com')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return valid url WHEN input text start with www', () {
|
||||
final validUrl = sanitizeUrl.process('www.linagora.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('https://www.linagora.com')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return valid url WHEN input text start with valid domain', () {
|
||||
final validUrl = sanitizeUrl.process('linagora.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('https://linagora.com')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return empty string text WHEN input text is empty', () {
|
||||
final validUrl = sanitizeUrl.process('');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return empty string text WHEN input text not contain url', () {
|
||||
final validUrl = sanitizeUrl.process('Linagora Company');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return empty string text WHEN input text is email address', () {
|
||||
final validUrl = sanitizeUrl.process('example@linagora.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return empty string text WHEN input text is mailto link', () {
|
||||
final validUrl = sanitizeUrl.process('mailto:example@linagora.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return empty string text WHEN input text is invalid url', () {
|
||||
final validUrl = sanitizeUrl.process('linagora mail.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return empty string WHEN input text start with //', () {
|
||||
final validUrl = sanitizeUrl.process('//linagora.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return empty string WHEN input text start with /', () {
|
||||
final validUrl = sanitizeUrl.process('/linagora.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return valid url WHEN input text is url encoded start with https', () {
|
||||
final validUrl = sanitizeUrl.process('https%3A%2F%2Flinagora.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('https://linagora.com')
|
||||
);
|
||||
});
|
||||
|
||||
test('SHOULD return valid url WHEN input text is url encoded start with http', () {
|
||||
final validUrl = sanitizeUrl.process('http%3A%2F%2Flinagora.com');
|
||||
expect(
|
||||
validUrl,
|
||||
equals('http://linagora.com')
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user