tvl-depot/tools/website-blocker/Spec.hs
William Carroll 75595b0126 Parse and serialize rules.json
TL;DR:
- Write FromJSON instances to decode rules.json file
- Prefer Text to String and use the OverloadedStrings language extension
- Read /etc/hosts and append the serialized rules.json to the end

Notes:
- I can remove some of the FromJSON instances and use GHC Generics to define
  them for me.

TODO:
- Define the systemd timer unit for this to run
- Ensure script can run with root privileges
2020-03-29 18:49:45 +01:00

38 lines
1.6 KiB
Haskell

module Spec (main) where
--------------------------------------------------------------------------------
-- Dependencies
--------------------------------------------------------------------------------
import qualified Main as Main
import Test.Hspec
--------------------------------------------------------------------------------
-- Tests
--------------------------------------------------------------------------------
main :: IO ()
main = hspec $ do
describe "getRules" $ do
it "returns the parsed rules from rules.json" $ do
rules <- Main.getRules
rules `shouldBe` [ Main.Rule { Main.urls = [ Main.URL "facebook.com"
, Main.URL "www.facebook.com"
, Main.URL "twitter.com"
, Main.URL "www.twitter.com"
, Main.URL "youtube.com"
, Main.URL "www.youtube.com"
, Main.URL "instagram.com"
, Main.URL "www.instagram.com"
]
, Main.allowed = []
}
, Main.Rule { Main.urls = [ Main.URL "chat.googleplex.com" ]
, Main.allowed = []
}
]
describe "Prelude.head" $ do
it "returns the first element of a list" $ do
head [23 ..] `shouldBe` (23 :: Int)