mirror of
https://github.com/penpot/penpot.git
synced 2026-04-25 11:18:36 +00:00
90 lines
3.1 KiB
Clojure
90 lines
3.1 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS INC
|
|
|
|
(ns common-tests.spec-test
|
|
(:require
|
|
[app.common.spec :as spec]
|
|
[clojure.test :as t]))
|
|
|
|
(t/deftest valid-emails
|
|
(t/testing "accepts well-formed email addresses"
|
|
(doseq [email ["user@domain.com"
|
|
"user.name@domain.com"
|
|
"user+tag@domain.com"
|
|
"user-name@domain.com"
|
|
"user_name@domain.com"
|
|
"user123@domain.com"
|
|
"USER@DOMAIN.COM"
|
|
"u@domain.io"
|
|
"user@sub.domain.com"
|
|
"user@domain.co.uk"
|
|
"user@domain.dev"
|
|
"a@bc.co"]]
|
|
(t/is (some? (spec/parse-email email)) (str "should accept: " email)))))
|
|
|
|
(t/deftest rejects-invalid-local-part
|
|
(t/testing "rejects local part starting with a dot"
|
|
(t/is (nil? (spec/parse-email ".user@domain.com"))))
|
|
|
|
(t/testing "rejects local part with consecutive dots"
|
|
(t/is (nil? (spec/parse-email "user..name@domain.com"))))
|
|
|
|
(t/testing "rejects local part with spaces"
|
|
(t/is (nil? (spec/parse-email "us er@domain.com"))))
|
|
|
|
(t/testing "rejects local part with comma"
|
|
(t/is (nil? (spec/parse-email "user,name@domain.com")))
|
|
(t/is (nil? (spec/parse-email ",user@domain.com"))))
|
|
|
|
(t/testing "rejects empty local part"
|
|
(t/is (nil? (spec/parse-email "@domain.com")))))
|
|
|
|
(t/deftest rejects-invalid-domain
|
|
(t/testing "rejects domain starting with a dot"
|
|
(t/is (nil? (spec/parse-email "user@.domain.com"))))
|
|
|
|
(t/testing "rejects domain part with comma"
|
|
(t/is (nil? (spec/parse-email "user@domain,com")))
|
|
(t/is (nil? (spec/parse-email "user@,domain.com"))))
|
|
|
|
(t/testing "rejects domain with consecutive dots"
|
|
(t/is (nil? (spec/parse-email "user@sub..domain.com"))))
|
|
|
|
(t/testing "rejects label starting with hyphen"
|
|
(t/is (nil? (spec/parse-email "user@-domain.com"))))
|
|
|
|
(t/testing "rejects label ending with hyphen"
|
|
(t/is (nil? (spec/parse-email "user@domain-.com"))))
|
|
|
|
(t/testing "rejects TLD shorter than 2 chars"
|
|
(t/is (nil? (spec/parse-email "user@domain.c"))))
|
|
|
|
(t/testing "rejects domain without a dot"
|
|
(t/is (nil? (spec/parse-email "user@domain"))))
|
|
|
|
(t/testing "rejects domain with spaces"
|
|
(t/is (nil? (spec/parse-email "user@do main.com"))))
|
|
|
|
(t/testing "rejects domain ending with a dot"
|
|
(t/is (nil? (spec/parse-email "user@domain.")))))
|
|
|
|
(t/deftest rejects-invalid-structure
|
|
(t/testing "rejects nil"
|
|
(t/is (nil? (spec/parse-email nil))))
|
|
|
|
(t/testing "rejects empty string"
|
|
(t/is (nil? (spec/parse-email ""))))
|
|
|
|
(t/testing "rejects string without @"
|
|
(t/is (nil? (spec/parse-email "userdomain.com"))))
|
|
|
|
(t/testing "rejects string with multiple @"
|
|
(t/is (nil? (spec/parse-email "user@@domain.com")))
|
|
(t/is (nil? (spec/parse-email "us@er@domain.com"))))
|
|
|
|
(t/testing "rejects empty domain"
|
|
(t/is (nil? (spec/parse-email "user@")))))
|