octohat-0.1: spec/Network/Octohat/TestData.hs
{-# LANGUAGE OverloadedStrings #-}
module Network.Octohat.TestData ( loadTestOrganizationName
, loadOwnerTeam
, loadTestAccountOne
, loadTestAccountTwo
, loadTestAccountThree
, publicKeyFixture
, publicKeyHostnameFixture
, fingerprintFixture
, fullPublicKeyFixture
) where
import Network.Octohat.Types
import Network.Octohat (teamForTeamNameInOrg)
import Network.Octohat.Members (userForUsername)
import Control.Monad.IO.Class (liftIO)
import Control.Arrow (second)
import System.Environment.Compat (getEnvironment)
import Configuration.Dotenv (loadFile)
import Control.Applicative ((<$>), (<*>))
import qualified Data.Text as T
data TestEnvironment =
TestEnvironment {
organization :: T.Text,
accountOne :: T.Text,
accountTwo :: T.Text,
accountThree :: T.Text
}
readEnv :: [(String, String)] -> Maybe TestEnvironment
readEnv environment =
TestEnvironment <$> lookup "SANDBOX_ORGANIZATION" env
<*> lookup "TEST_ACCOUNT_ONE" env
<*> lookup "TEST_ACCOUNT_TWO" env
<*> lookup "TEST_ACCOUNT_THREE" env
where env = map (second T.pack) environment
loadEnv :: IO TestEnvironment
loadEnv = do
loadFile False ".github-sandbox"
env <- getEnvironment
case readEnv env of
Just res -> return res
Nothing -> fail "Environment variables not set correctly, please read README.md"
loadTestOrganizationName :: IO T.Text
loadTestOrganizationName = organization `fmap` loadEnv
loadOwnerTeam :: GitHub Team
loadOwnerTeam = liftIO (organization `fmap` loadEnv) >>= teamForTeamNameInOrg "Owners"
loadTestAccountOne :: GitHub Member
loadTestAccountOne = liftIO (accountOne `fmap` loadEnv) >>= userForUsername
loadTestAccountTwo :: GitHub Member
loadTestAccountTwo = liftIO (accountTwo `fmap` loadEnv) >>= userForUsername
loadTestAccountThree :: GitHub Member
loadTestAccountThree = liftIO (accountThree `fmap` loadEnv) >>= userForUsername
publicKeyHostnameFixture :: T.Text
publicKeyHostnameFixture = "octohat@stackbuilders"
fingerprintFixture :: T.Text
fingerprintFixture = "42:59:20:02:6f:df:b4:4a:1c:0e:fd:1b:86:58:f6:06"
publicKeyFixture :: T.Text
publicKeyFixture = "AAAAB3NzaC1yc2EAAAADAQABAAABAQC1Dopc3yxLWlzJwFqSoj0nAzRCU93R5DwNlogtRr/7NsnUVf443wl/vpRDRNscR0dV/VeNWYCqiZA0wGrXiVJ7HYi9XaWtHrUutLqrLe47aFFvAIdp15+RHkM0sXr963Kb9XMkmqswyXJ2TaZ0cgZfMNgl1ND248Y8fMDBx8elHwdZvyG2onG5aSVtOuKB4dWnmIb+uSQCN1K2kLYwHvQOjmqCiZ2XOP9u+ScphVdp6x4uAczH67CCRSUhI6U2fxSNf6YaDXyCWcqxj1agHUKdskb5rzxPaz5XZ2BgQscjoVo93M338HLmkyvbuP4yl2X6ZdLfE5mk2ZFfWQogxLGd"
fullPublicKeyFixture :: T.Text
fullPublicKeyFixture = T.concat ["ssh-rsa ", publicKeyFixture, " ", publicKeyHostnameFixture]