aboutsummaryrefslogtreecommitdiffstats
path: root/tests/spec/Network/WireGuard/RPCSpec.hs
blob: 5a33d8092fec6525512367fa2d26e9faae0ff0b4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
module Network.WireGuard.RPCSpec (spec) where

import Control.Monad.STM                           (atomically, STM)
import qualified Data.ByteString            as BS  (ByteString)
import qualified Data.ByteString.Lazy       as BSL (ByteString)
import qualified Data.ByteString.Char8      as BC  (pack)
import qualified Data.ByteString.Lazy.Char8 as BCL (pack)
import Data.Conduit                                (runConduit, yield, ( .|))
import Data.Conduit.Binary                         (sinkLbs)
import Test.Hspec                                  (Spec, describe,
                                                    it, shouldBe,
                                                    shouldNotBe)

import Network.WireGuard.RPC            (serveConduit)
import Network.WireGuard.Internal.State (Device, createDevice)


getCommand :: BS.ByteString
getCommand = BC.pack "get=1\n\n"

deviceS :: STM Device
deviceS = createDevice "wg0"

bsDeviceStrict :: BS.ByteString
bsDeviceStrict = BC.pack "private_key=e84b5a6d2717c1003a13b431570353dbaca9146cf150c5f8575680feba52027a\nlisten_port=12912\npublic_key=b85996fecc9c7f1fc6d2572a76eda11d59bcd20be8e543b15ce4bd85a8e75a33\npreshared_key=188515093e952f5f22e865cef3012e72f8b5f0b598ac0309d5dacce3b70fcf52\nallowed_ip=192.168.4.4/32\nendpoint=[abcd:23::33%2]:51820\n\n"

bsDevice :: BSL.ByteString
bsDevice = BCL.pack "private_key=e84b5a6d2717c1003a13b431570353dbaca9146cf150c5f8575680feba52027a\nlisten_port=12912\npublic_key=b85996fecc9c7f1fc6d2572a76eda11d59bcd20be8e543b15ce4bd85a8e75a33\npreshared_key=188515093e952f5f22e865cef3012e72f8b5f0b598ac0309d5dacce3b70fcf52\nallowed_ip=192.168.4.4/32\nendpoint=[abcd:23::33%2]:51820\npublic_key=58402e695ba1772b1cc9309755f043251ea77fdcf10fbe63989ceb7e19321376\ntx_bytes=38333\nrx_bytes=2224\nallowed_ip=192.168.4.6/32\npersistent_keepalive_interval=111\nendpoint=182.122.22.19:3233\npublic_key=662e14fd594556f522604703340351258903b64f35553763f19426ab2a515c58\nendpoint=5.152.198.39:51820\nallowed_ip=192.168.4.10/32\nallowed_ip=192.168.4.11/32\ntx_bytes=1212111\nrx_bytes=1929999999\nerrno=0\n\n"

spec :: Spec
spec = describe "serveConduit" $ 
        it "must respond to a get v1 request" $ do
          device <- atomically deviceS
          res <- runConduit (yield getCommand .| serveConduit device .| sinkLbs)
          res `shouldNotBe` BCL.pack ""