diff --git a/src/test/utils/isUrl.spec.ts b/src/test/utils/isUrl.spec.ts new file mode 100644 index 0000000..4ff92a9 --- /dev/null +++ b/src/test/utils/isUrl.spec.ts @@ -0,0 +1,39 @@ +import { isUrl } from '../../utils/isUrl' + +describe('urlValidator', () => { + it('should return true with an HTTP URL', () => { + const url = 'http://google.com' + + expect(isUrl(url)).toEqual(true) + }) + + it('should return true with an HTTPS URL', () => { + const url = 'https://google.com' + + expect(isUrl(url)).toEqual(true) + }) + + it('should return true when the URL is blank', () => { + const url = '' + + expect(isUrl(url)).toEqual(false) + }) + + it('should return false when the URL has not supported protocol', () => { + const url = 'htpps://google.com' + + expect(isUrl(url)).toEqual(false) + }) + + it('should return false when the URL is null', () => { + const url = null + + expect(isUrl((url as unknown) as string)).toEqual(false) + }) + + it('should return false when the URL is undefined', () => { + const url = undefined + + expect(isUrl((url as unknown) as string)).toEqual(false) + }) +}) diff --git a/src/utils/isUrl.ts b/src/utils/isUrl.ts index 4e54757..4f38faf 100644 --- a/src/utils/isUrl.ts +++ b/src/utils/isUrl.ts @@ -1,10 +1,14 @@ /** * Checks if string is in URL format. - * @param url - string to check. + * @param str - string to check. */ -export const isUrl = (url: string): boolean => { +export const isUrl = (str: string): boolean => { + const supportedProtocols = ['http:', 'https:'] + try { - const validUrl = new URL(url) + const url = new URL(str) + + if (!supportedProtocols.includes(url.protocol)) return false } catch (_) { return false }