hbs2/hbs2-tests/test/TestACB.hs

68 lines
1.7 KiB
Haskell

{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# Language PatternSynonyms #-}
module Main where
import HBS2.Prelude
import HBS2.Net.Proto.ACB
import HBS2.Data.Types
import HBS2.Net.Auth.Credentials
import HBS2.Net.Proto.Definition
import HBS2.OrDie
-- import HBS2.Net.Messaging.UDP
import Test.Tasty.HUnit
import Data.Config.Suckless
import Data.Maybe
import Prettyprinter
import System.IO
import Lens.Micro.Platform
import Data.Either
import Data.Text qualified as Text
import Safe
data T
type SK = PubKey 'Sign T
main :: IO ()
main = do
let pek1 = fromStringMay "5k9rLmFdXCP4RncG9WHEaXXEjxvnxmBvvMUqcKkoY45q"
let pek2 = fromStringMay "FpZbzEbdFBztGUSXy5yCoWgkYUbJYDuCmSVxFTTrHx7D"
let root = fromStringMay @SK "sRyP45vd7wnopdLP6MLxUJAFGJu5wGVHyzF64mKwBbH"
let owners = catMaybes [ fromStringMay "EJgvBg9bL2yKXk3GvZaYJgqpHy5kvpXdtEnAgoi4B5DN" ]
let acb = set acbRoot root
. set acbOwners ( owners <> maybeToList root )
. set acbWriters ( owners <> maybeToList root )
. set acbReaders ( catMaybes [pek1, pek2 ] )
$ mempty :: ACBSimple T
let s = show $ pretty (AsSyntax (DefineACB "a1" acb))
putStrLn s
let macb2 = fromStringMay s :: Maybe (ACBSimple T)
acb2 <- pure macb2 `orDie` "can't load ACB"
print $ pretty (AsSyntax (DefineACB "a1" acb2))
assertBool "1" $ view acbRoot acb == view acbRoot acb2
assertBool "2" $ view acbOwners acb == view acbOwners acb2
assertBool "3" $ view acbReaders acb == view acbReaders acb2
assertBool "4" $ view acbWriters acb == view acbWriters acb2
assertBool "5" $ view acbPrev acb == view acbPrev acb2
assertBool "6" $ acb == acb2
-- TODO: acbPrev test
pure ()