packages feed

hwormhole-0.1.0.0: tests/ProtocolTests.hs

module ProtocolTests
  ( tests
  )
where

import Protolude
import Test.Hspec
import qualified Crypto.Saltine.Class as Saltine
import qualified Data.ByteString as BS

import qualified MagicWormhole

import Transit.Internal.Peer

tests :: IO ()
tests = hspec $ do
  describe "sender handshake tests" $ do
    it "sender handshake for a fixed key" $ do
      let skey = (fromMaybe (panic "error decoding bytestring into secretbox key") $ Saltine.decode (toS @Text @ByteString "12345678901234567890123456789012"))
      makeSenderHandshake skey `shouldBe` (toS @Text @ByteString "transit sender 8114b57043e22ca82f05b3aa21612bbcd403e6aa9b11e4a336dd749771775fa1 ready\n\n")
    it "receiver handshake for a fixed key" $ do
      let rkey = (fromMaybe (panic "error decoding bytestring into secretbox key") $ Saltine.decode (toS @Text @ByteString "12345678901234567890123456789012"))
      makeReceiverHandshake rkey `shouldBe` (toS @Text @ByteString "transit receiver 3b0d65f31e63b490b4edc13cf27a8b09cfb53c479f8ab67bc984e9f392ea28f4 ready\n\n")
    it "sender relay handshake for a given key" $ do
      sidea <- generateTransitSide
      let skey = (fromMaybe (panic "error decoding bytestring into secretbox key") $ Saltine.decode (toS @Text @ByteString "12345678901234567890123456789012"))
          MagicWormhole.Side s1 = sidea
      makeRelayHandshake skey sidea `shouldBe` (toS @Text @ByteString "please relay 24655fa61c1df5e320ee34d85417de170bcd5d31f69778600c2e3f78f2bd12b4 for side " <> (toS @Text @ByteString s1) <> "\n")
    it "sender relay handshake length" $ do
      sidea <- generateTransitSide
      let skey = (fromMaybe (panic "error decoding bytestring into secretbox key") $ Saltine.decode (toS @Text @ByteString "12345678901234567890123456789012"))
      BS.length (makeRelayHandshake skey sidea) `shouldBe` (BS.length (toS @Text @ByteString "please relay  for side \n") + 32*2 + 8*2)