mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-11-04 12:57:45 +00:00
28 lines
1.3 KiB
Haskell
28 lines
1.3 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
module Bots.StoreService.NamesLabelTests (namesLabelTests) where
|
|
|
|
import Data.Text (Text)
|
|
import qualified Data.Text as T
|
|
import Simplex.Messaging.SimplexName (SimplexTLD (..))
|
|
import StoreService.Names.Label
|
|
import Test.Hspec
|
|
|
|
namesLabelTests :: Spec
|
|
namesLabelTests = describe "StoreService names: label" $ do
|
|
describe "accepts" $ do
|
|
mapM_ accepted ["bakery", "bak-ery-2", "a-b-c-d-e-f", "123456", T.replicate 63 "a"]
|
|
describe "refuses as characters" $ do
|
|
mapM_ (refused LEChars) ["bak--ery", "--bakery", "bakery--", "-bakery", "bakery-", "Bakery", "bak.ery", "bäkery", "bak ery", "bak_ery", "bakery.simplex", "бакеry1"]
|
|
describe "refuses as length" $ do
|
|
mapM_ (refused LELength) ["", "abcde", "a.b", T.replicate 64 "a", T.replicate 100 "-"]
|
|
it "applies the same rule under the testing TLD" $ do
|
|
validLabel TLDTesting "bakery" `shouldBe` Right "bakery"
|
|
validLabel TLDTesting "bak--ery" `shouldBe` Left LEChars
|
|
it "has no bare web names" $
|
|
validLabel TLDWeb "bakery" `shouldBe` Left LEChars
|
|
where
|
|
accepted l = it ("accepts " <> show l) $ validLabel TLDSimplex l `shouldBe` Right l
|
|
refused :: LabelError -> Text -> Spec
|
|
refused e l = it ("refuses " <> show l) $ validLabel TLDSimplex l `shouldBe` Left e
|