aboutsummaryrefslogtreecommitdiffstats
path: root/tests/spec/Network/WireGuard/RPCSpec.hs
blob: 286443e8f736d68cfd6a577b9e4e53d8f279aa0e (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
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)

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


getCommand :: BS.ByteString
getCommand = BC.pack "\n\nget=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"

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 `shouldBe` bsDevice