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
This commit is contained in:
parent
059af12bea
commit
75595b0126
5 changed files with 216 additions and 110 deletions
38
tools/website-blocker/Spec.hs
Normal file
38
tools/website-blocker/Spec.hs
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue