module Test.Cloudflare.DNS.DNSSEC where import Control.Monad import Data.Maybe import Network.Cloudflare.DNS.DNSSEC import Network.Cloudflare.Types import Network.Cloudflare.Zone import Test.Cloudflare.Types import Test.Tasty import Test.Tasty.HUnit dnsSecTest :: CloudflareTestConfig -> TestTree dnsSecTest config = testGroup "DNSSEC Tests" [ testCaseSteps "DNSSEC edit" $ \step -> do step "List zones" let test = listZones authInfo zonesResult <- either (failWith "Could not list zones: ") pure =<< test forM_ (resultWithInfoResult zonesResult) $ \zone -> do step "Get DNSSEC settings before edit" pre <- either (failWith "Coulnd't get DNSSEC") pure =<< getDNSSEC authInfo (zoneId zone) step "Edit DNSSEC settings" let edit = EditDNSSECStatus (Just True) (Just True) (Just DNSSECActive) _editResult <- editDNSSEC authInfo (zoneId zone) edit step "Get DNSSEC settings after edit" post <- either (failWith "Coulnd't get DNSSEC") pure =<< getDNSSEC authInfo (zoneId zone) checkDNSSECEdit (resultResult pre) (resultResult post) edit ] where authInfo = cloudflareTestConfigAuth config checkDNSSECEdit :: DNSECDetails -> DNSECDetails -> EditDNSSECStatus -> Assertion checkDNSSECEdit (DNSSecActive pre) (DNSSecActive post) edit = do dnssecMultiSigner post @?= (editDNSSECMultiSigner edit) dnssecPresigned post @?= (editDNSSECPresigned edit) dnssecStatus post @?= fromMaybe (dnssecStatus pre) (dnssecStatusToText <$> editDNSSECStatus edit) checkDNSSECEdit _ _ _ = assertFailure "DNSSEC edit failed"