Merge branch 'master' into uni2work

This commit is contained in:
Gregor Kleen 2021-06-27 13:08:21 +02:00
commit fda3a000f9
23 changed files with 218 additions and 86 deletions

1
.envrc Normal file
View File

@ -0,0 +1 @@
use flake

View File

@ -10,12 +10,12 @@ dist: trusty
language: c language: c
services: services:
- redis-server - redis-server
addons: addons:
apt: apt:
packages: packages:
- libgmp-dev - libgmp-dev
postgresql: "9.3" postgresql: "9.3"
cache: cache:
@ -25,8 +25,7 @@ cache:
matrix: matrix:
include: include:
- env: STACKARGS="--resolver=lts-11" - env: STACKARGS="--resolver=lts-15"
- env: STACKARGS="--resolver=lts-12"
- env: STACKARGS="--resolver=nightly" - env: STACKARGS="--resolver=nightly"
allow_failures: allow_failures:
- env: STACKARGS="--resolver=nightly" - env: STACKARGS="--resolver=nightly"

View File

@ -1,3 +1,6 @@
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE UndecidableInstances #-}
module Model where module Model where
import ClassyPrelude.Yesod import ClassyPrelude.Yesod

44
flake.lock Normal file
View File

@ -0,0 +1,44 @@
{
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1619345332,
"narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28",
"type": "github"
},
"original": {
"owner": "numtide",
"ref": "master",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1620323686,
"narHash": "sha256-+gfcE3YTGl+Osc8HzOUXSFO8/0PAK4J8ZxCXZ4hjXHI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "dfacb8329b2236688b9a1e705116203a213b283a",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

30
flake.nix Normal file
View File

@ -0,0 +1,30 @@
{
inputs = {
nixpkgs = {
type = "github";
owner = "NixOS";
repo = "nixpkgs";
ref = "master";
};
flake-utils = {
type = "github";
owner = "numtide";
repo = "flake-utils";
ref = "master";
};
};
outputs = { self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem
(system:
let pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
in {
devShell = pkgs.mkShell {
name = "uni2work-serversession";
nativeBuildInputs = with pkgs.haskellPackages; [ stack ];
};
}
);
}

8
nixpkgs.nix Normal file
View File

@ -0,0 +1,8 @@
import (
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in fetchTarball {
url = "https://api.github.com/repos/NixOS/nixpkgs/tarball/${lock.nodes.nixpkgs.locked.rev}";
sha256 = lock.nodes.nixpkgs.locked.narHash;
}
)

View File

@ -0,0 +1,3 @@
# 1.0.4
* bump acid-state to 0.16

View File

@ -1,5 +1,6 @@
cabal-version: >= 1.10
name: serversession-backend-acid-state name: serversession-backend-acid-state
version: 1.0.3 version: 1.0.4
license: MIT license: MIT
license-file: LICENSE license-file: LICENSE
author: Felipe Lessa <felipe.lessa@gmail.com> author: Felipe Lessa <felipe.lessa@gmail.com>
@ -7,7 +8,6 @@ maintainer: Michael Xavier <michael@michaelxavier.net>
synopsis: Storage backend for serversession using acid-state. synopsis: Storage backend for serversession using acid-state.
category: Web category: Web
stability: Stable stability: Stable
cabal-version: >= 1.8
build-type: Simple build-type: Simple
homepage: https://github.com/yesodweb/serversession homepage: https://github.com/yesodweb/serversession
description: API docs and the README are available at <http://www.stackage.org/package/serversession-backend-acid-state> description: API docs and the README are available at <http://www.stackage.org/package/serversession-backend-acid-state>
@ -19,10 +19,11 @@ flag lib-Werror
manual: True manual: True
library library
default-language: Haskell2010
hs-source-dirs: src hs-source-dirs: src
build-depends: build-depends:
base == 4.* base == 4.*
, acid-state == 0.16.* , acid-state >= 0.16
, containers , containers
, mtl , mtl
, safecopy >= 0.8 && <0.11 , safecopy >= 0.8 && <0.11
@ -32,7 +33,7 @@ library
exposed-modules: exposed-modules:
Web.ServerSession.Backend.Acid Web.ServerSession.Backend.Acid
Web.ServerSession.Backend.Acid.Internal Web.ServerSession.Backend.Acid.Internal
extensions: default-extensions:
ConstraintKinds ConstraintKinds
DeriveDataTypeable DeriveDataTypeable
FlexibleContexts FlexibleContexts
@ -47,6 +48,7 @@ library
test-suite tests test-suite tests
default-language: Haskell2010
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0
hs-source-dirs: tests hs-source-dirs: tests
build-depends: build-depends:
@ -57,7 +59,7 @@ test-suite tests
, serversession , serversession
, serversession-backend-acid-state , serversession-backend-acid-state
main-is: Main.hs main-is: Main.hs
extensions: default-extensions:
CPP CPP
ghc-options: -Wall -threaded "-with-rtsopts=-N -s -M1G -c" -rtsopts ghc-options: -Wall -threaded "-with-rtsopts=-N -s -M1G -c" -rtsopts
if flag(lib-Werror) if flag(lib-Werror)

View File

@ -109,7 +109,7 @@ instance SafeCopy SS.SessionMap where
-- | We can't @deriveSafeCopy 0 'base ''SS.SessionId@ as -- | We can't @deriveSafeCopy 0 'base ''SS.SessionId@ as
-- otherwise we'd require an unneeded @SafeCopy sess@. -- otherwise we'd require an unneeded @SafeCopy sess@.
instance SafeCopy (SS.SessionId sess) where instance Typeable sess => SafeCopy (SS.SessionId sess) where
putCopy = contain . safePut . SSI.unS putCopy = contain . safePut . SSI.unS
getCopy = contain $ SSI.S <$> safeGet getCopy = contain $ SSI.S <$> safeGet
@ -118,7 +118,7 @@ instance SafeCopy (SS.SessionId sess) where
-- | We can't @deriveSafeCopy 0 'base ''SS.Session@ due to the -- | We can't @deriveSafeCopy 0 'base ''SS.Session@ due to the
-- required context. -- required context.
instance SafeCopy (SS.Decomposed sess) => SafeCopy (SS.Session sess) where instance (Typeable sess, SafeCopy (SS.Decomposed sess)) => SafeCopy (SS.Session sess) where
putCopy (SS.Session key authId data_ createdAt accessedAt) = contain $ do putCopy (SS.Session key authId data_ createdAt accessedAt) = contain $ do
put_t <- getSafePut put_t <- getSafePut
safePut key safePut key
@ -140,7 +140,7 @@ instance SafeCopy (SS.Decomposed sess) => SafeCopy (SS.Session sess) where
-- | We can't @deriveSafeCopy 0 'base ''ServerSessionAcidState@ due -- | We can't @deriveSafeCopy 0 'base ''ServerSessionAcidState@ due
-- to the required context. -- to the required context.
instance SafeCopy (SS.Decomposed sess) => SafeCopy (ServerSessionAcidState sess) where instance (Typeable sess, SafeCopy (SS.Decomposed sess)) => SafeCopy (ServerSessionAcidState sess) where
putCopy (ServerSessionAcidState sits aits) = contain $ do putCopy (ServerSessionAcidState sits aits) = contain $ do
safePut (HM.toList sits) safePut (HM.toList sits)
safePut (HM.toList aits) safePut (HM.toList aits)
@ -279,31 +279,27 @@ data DeleteAllSessionsOfAuthId sess = DeleteAllSessionsOfAuthId SS.AuthId derivi
data InsertSession sess = InsertSession (SS.Session sess) deriving (Typeable) data InsertSession sess = InsertSession (SS.Session sess) deriving (Typeable)
data ReplaceSession sess = ReplaceSession (SS.Session sess) deriving (Typeable) data ReplaceSession sess = ReplaceSession (SS.Session sess) deriving (Typeable)
instance SafeCopy (GetSession sess) where instance Typeable sess => SafeCopy (GetSession sess) where
putCopy (GetSession v) = contain $ safePut v putCopy (GetSession v) = contain $ safePut v
getCopy = contain $ GetSession <$> safeGet getCopy = contain $ GetSession <$> safeGet
errorTypeName _ = "GetSession" instance Typeable sess => SafeCopy (DeleteSession sess) where
instance SafeCopy (DeleteSession sess) where
putCopy (DeleteSession v) = contain $ safePut v putCopy (DeleteSession v) = contain $ safePut v
getCopy = contain $ DeleteSession <$> safeGet getCopy = contain $ DeleteSession <$> safeGet
errorTypeName _ = "DeleteSession" errorTypeName _ = "DeleteSession"
instance SafeCopy (DeleteAllSessionsOfAuthId sess) where instance Typeable sess => SafeCopy (DeleteAllSessionsOfAuthId sess) where
putCopy (DeleteAllSessionsOfAuthId v) = contain $ safePut v putCopy (DeleteAllSessionsOfAuthId v) = contain $ safePut v
getCopy = contain $ DeleteAllSessionsOfAuthId <$> safeGet getCopy = contain $ DeleteAllSessionsOfAuthId <$> safeGet
errorTypeName _ = "DeleteAllSessionsOfAuthId" errorTypeName _ = "DeleteAllSessionsOfAuthId"
instance SafeCopy (SS.Decomposed sess) => SafeCopy (InsertSession sess) where instance (Typeable sess, SafeCopy (SS.Decomposed sess)) => SafeCopy (InsertSession sess) where
putCopy (InsertSession v) = contain $ safePut v putCopy (InsertSession v) = contain $ safePut v
getCopy = contain $ InsertSession <$> safeGet getCopy = contain $ InsertSession <$> safeGet
errorTypeName _ = "InsertSession" instance (Typeable sess, SafeCopy (SS.Decomposed sess)) => SafeCopy (ReplaceSession sess) where
instance SafeCopy (SS.Decomposed sess) => SafeCopy (ReplaceSession sess) where
putCopy (ReplaceSession v) = contain $ safePut v putCopy (ReplaceSession v) = contain $ safePut v
getCopy = contain $ ReplaceSession <$> safeGet getCopy = contain $ ReplaceSession <$> safeGet

View File

@ -1,3 +1,5 @@
1.0.5
* bump persistent to 2.10
1.0.4 1.0.4
* Default auth id to NULL to fix a MySQL bug. * Default auth id to NULL to fix a MySQL bug.
1.0.3 1.0.3

View File

@ -1,5 +1,6 @@
cabal-version: >= 1.10
name: serversession-backend-persistent name: serversession-backend-persistent
version: 1.0.4 version: 1.0.5
license: MIT license: MIT
license-file: LICENSE license-file: LICENSE
author: Felipe Lessa <felipe.lessa@gmail.com> author: Felipe Lessa <felipe.lessa@gmail.com>
@ -7,7 +8,6 @@ maintainer: Michael Xavier <michael@michaelxavier.net>
synopsis: Storage backend for serversession using persistent and an RDBMS. synopsis: Storage backend for serversession using persistent and an RDBMS.
category: Web category: Web
stability: Stable stability: Stable
cabal-version: >= 1.8
build-type: Simple build-type: Simple
homepage: https://github.com/yesodweb/serversession homepage: https://github.com/yesodweb/serversession
description: API docs and the README are available at <http://www.stackage.org/package/serversession-backend-persistent> description: API docs and the README are available at <http://www.stackage.org/package/serversession-backend-persistent>
@ -19,6 +19,7 @@ flag lib-Werror
manual: True manual: True
library library
default-language: Haskell2010
hs-source-dirs: src hs-source-dirs: src
build-depends: build-depends:
base == 4.* base == 4.*
@ -27,7 +28,7 @@ library
, bytestring , bytestring
, cereal >= 0.4 , cereal >= 0.4
, path-pieces , path-pieces
, persistent >= 2.1 , persistent >= 2.10
, tagged >= 0.7 , tagged >= 0.7
, text , text
, time , time
@ -39,7 +40,7 @@ library
Web.ServerSession.Backend.Persistent Web.ServerSession.Backend.Persistent
Web.ServerSession.Backend.Persistent.Internal.Impl Web.ServerSession.Backend.Persistent.Internal.Impl
Web.ServerSession.Backend.Persistent.Internal.Types Web.ServerSession.Backend.Persistent.Internal.Types
extensions: default-extensions:
DeriveDataTypeable DeriveDataTypeable
EmptyDataDecls EmptyDataDecls
FlexibleContexts FlexibleContexts
@ -62,6 +63,7 @@ library
test-suite tests test-suite tests
default-language: Haskell2010
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0
hs-source-dirs: tests hs-source-dirs: tests
build-depends: build-depends:
@ -79,7 +81,7 @@ test-suite tests
, serversession , serversession
, serversession-backend-persistent , serversession-backend-persistent
extensions: default-extensions:
OverloadedStrings OverloadedStrings
TemplateHaskell TemplateHaskell
main-is: Main.hs main-is: Main.hs

View File

@ -96,6 +96,7 @@ instance forall sess. P.PersistFieldSql (Decomposed sess) => P.PersistEntity (Pe
["Eq", "Ord", "Show", "Typeable"] ["Eq", "Ord", "Show", "Typeable"]
M.mempty M.mempty
False False
Nothing
where where
pfd :: P.EntityField (PersistentSession sess) typ -> P.FieldDef pfd :: P.EntityField (PersistentSession sess) typ -> P.FieldDef
pfd = P.persistFieldDef pfd = P.persistFieldDef
@ -142,8 +143,10 @@ instance forall sess. P.PersistFieldSql (Decomposed sess) => P.PersistEntity (Pe
(P.SqlOther "SqlType unset for key") (P.SqlOther "SqlType unset for key")
[] []
True True
P.NoReference] P.NoReference
Nothing]
[])) []))
Nothing
persistFieldDef PersistentSessionKey persistFieldDef PersistentSessionKey
= P.FieldDef = P.FieldDef
(P.HaskellName "key") (P.HaskellName "key")
@ -153,6 +156,7 @@ instance forall sess. P.PersistFieldSql (Decomposed sess) => P.PersistEntity (Pe
["maxlen=30"] ["maxlen=30"]
True True
P.NoReference P.NoReference
Nothing
persistFieldDef PersistentSessionAuthId persistFieldDef PersistentSessionAuthId
= P.FieldDef = P.FieldDef
(P.HaskellName "authId") (P.HaskellName "authId")
@ -162,6 +166,7 @@ instance forall sess. P.PersistFieldSql (Decomposed sess) => P.PersistEntity (Pe
["Maybe", "default=NULL"] ["Maybe", "default=NULL"]
True True
P.NoReference P.NoReference
Nothing
persistFieldDef PersistentSessionSession persistFieldDef PersistentSessionSession
= P.FieldDef = P.FieldDef
(P.HaskellName "session") (P.HaskellName "session")
@ -171,6 +176,7 @@ instance forall sess. P.PersistFieldSql (Decomposed sess) => P.PersistEntity (Pe
[] []
True True
P.NoReference P.NoReference
Nothing
persistFieldDef PersistentSessionCreatedAt persistFieldDef PersistentSessionCreatedAt
= P.FieldDef = P.FieldDef
(P.HaskellName "createdAt") (P.HaskellName "createdAt")
@ -180,6 +186,7 @@ instance forall sess. P.PersistFieldSql (Decomposed sess) => P.PersistEntity (Pe
[] []
True True
P.NoReference P.NoReference
Nothing
persistFieldDef PersistentSessionAccessedAt persistFieldDef PersistentSessionAccessedAt
= P.FieldDef = P.FieldDef
(P.HaskellName "accessedAt") (P.HaskellName "accessedAt")
@ -189,6 +196,7 @@ instance forall sess. P.PersistFieldSql (Decomposed sess) => P.PersistEntity (Pe
[] []
True True
P.NoReference P.NoReference
Nothing
persistIdField = PersistentSessionId persistIdField = PersistentSessionId

View File

@ -1,3 +1,5 @@
1.0.4
* bump hedis to 0.13
1.0.3 1.0.3
* Allow hedis-0.10 * Allow hedis-0.10
1.0.2 1.0.2

View File

@ -1,5 +1,6 @@
cabal-version: >= 1.10
name: serversession-backend-redis name: serversession-backend-redis
version: 1.0.3 version: 1.0.4
license: MIT license: MIT
license-file: LICENSE license-file: LICENSE
author: Felipe Lessa <felipe.lessa@gmail.com> author: Felipe Lessa <felipe.lessa@gmail.com>
@ -7,7 +8,6 @@ maintainer: Michael Xavier <michael@michaelxavier.net>
synopsis: Storage backend for serversession using Redis. synopsis: Storage backend for serversession using Redis.
category: Web category: Web
stability: Stable stability: Stable
cabal-version: >= 1.8
build-type: Simple build-type: Simple
homepage: https://github.com/yesodweb/serversession homepage: https://github.com/yesodweb/serversession
description: API docs and the README are available at <http://www.stackage.org/package/serversession-backend-redis> description: API docs and the README are available at <http://www.stackage.org/package/serversession-backend-redis>
@ -23,11 +23,12 @@ flag lib-Werror
manual: True manual: True
library library
default-language: Haskell2010
hs-source-dirs: src hs-source-dirs: src
build-depends: build-depends:
base == 4.* base == 4.*
, bytestring , bytestring
, hedis < 0.11 , hedis < 0.13
, path-pieces , path-pieces
, tagged >= 0.7 , tagged >= 0.7
, text , text
@ -43,7 +44,7 @@ library
exposed-modules: exposed-modules:
Web.ServerSession.Backend.Redis Web.ServerSession.Backend.Redis
Web.ServerSession.Backend.Redis.Internal Web.ServerSession.Backend.Redis.Internal
extensions: default-extensions:
CPP CPP
DeriveDataTypeable DeriveDataTypeable
FlexibleContexts FlexibleContexts
@ -60,6 +61,7 @@ library
test-suite tests test-suite tests
default-language: Haskell2010
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0
hs-source-dirs: tests hs-source-dirs: tests
build-depends: build-depends:

View File

@ -1,3 +1,4 @@
cabal-version: >= 1.10
name: serversession-frontend-snap name: serversession-frontend-snap
version: 1.0.1 version: 1.0.1
license: MIT license: MIT
@ -7,7 +8,6 @@ maintainer: Michael Xavier <michael@michaelxavier.net>
synopsis: Snap bindings for serversession. synopsis: Snap bindings for serversession.
category: Web category: Web
stability: Stable stability: Stable
cabal-version: >= 1.8
build-type: Simple build-type: Simple
homepage: https://github.com/yesodweb/serversession homepage: https://github.com/yesodweb/serversession
description: API docs and the README are available at <http://www.stackage.org/package/serversession-frontend-snap> description: API docs and the README are available at <http://www.stackage.org/package/serversession-frontend-snap>
@ -20,6 +20,7 @@ flag lib-Werror
library library
default-language: Haskell2010
hs-source-dirs: src hs-source-dirs: src
build-depends: build-depends:
base == 4.* base == 4.*
@ -37,7 +38,7 @@ library
exposed-modules: exposed-modules:
Web.ServerSession.Frontend.Snap Web.ServerSession.Frontend.Snap
Web.ServerSession.Frontend.Snap.Internal Web.ServerSession.Frontend.Snap.Internal
extensions: default-extensions:
DeriveDataTypeable DeriveDataTypeable
FlexibleContexts FlexibleContexts
OverloadedStrings OverloadedStrings

View File

@ -1,3 +1,4 @@
cabal-version: >= 1.10
name: serversession-frontend-wai name: serversession-frontend-wai
version: 1.0 version: 1.0
license: MIT license: MIT
@ -7,7 +8,6 @@ maintainer: Michael Xavier <michael@michaelxavier.net>
synopsis: wai-session bindings for serversession. synopsis: wai-session bindings for serversession.
category: Web category: Web
stability: Stable stability: Stable
cabal-version: >= 1.8
build-type: Simple build-type: Simple
homepage: https://github.com/yesodweb/serversession homepage: https://github.com/yesodweb/serversession
description: API docs and the README are available at <http://www.stackage.org/package/serversession-frontend-wai> description: API docs and the README are available at <http://www.stackage.org/package/serversession-frontend-wai>
@ -19,6 +19,7 @@ flag lib-Werror
manual: True manual: True
library library
default-language: Haskell2010
hs-source-dirs: src hs-source-dirs: src
build-depends: build-depends:
base >= 4.6 && < 5 base >= 4.6 && < 5
@ -38,7 +39,7 @@ library
exposed-modules: exposed-modules:
Web.ServerSession.Frontend.Wai Web.ServerSession.Frontend.Wai
Web.ServerSession.Frontend.Wai.Internal Web.ServerSession.Frontend.Wai.Internal
extensions: default-extensions:
FlexibleContexts FlexibleContexts
OverloadedStrings OverloadedStrings
TypeFamilies TypeFamilies

View File

@ -1,3 +1,4 @@
cabal-version: >= 1.10
name: serversession-frontend-yesod name: serversession-frontend-yesod
version: 1.0 version: 1.0
license: MIT license: MIT
@ -7,7 +8,6 @@ maintainer: Michael Xavier <michael@michaelxavier.net>
synopsis: Yesod bindings for serversession. synopsis: Yesod bindings for serversession.
category: Web category: Web
stability: Stable stability: Stable
cabal-version: >= 1.8
build-type: Simple build-type: Simple
homepage: https://github.com/yesodweb/serversession homepage: https://github.com/yesodweb/serversession
description: API docs and the README are available at <http://www.stackage.org/package/serversession-frontend-yesod> description: API docs and the README are available at <http://www.stackage.org/package/serversession-frontend-yesod>
@ -19,6 +19,7 @@ flag lib-Werror
manual: True manual: True
library library
default-language: Haskell2010
hs-source-dirs: src hs-source-dirs: src
build-depends: build-depends:
base == 4.* base == 4.*
@ -38,7 +39,7 @@ library
exposed-modules: exposed-modules:
Web.ServerSession.Frontend.Yesod Web.ServerSession.Frontend.Yesod
Web.ServerSession.Frontend.Yesod.Internal Web.ServerSession.Frontend.Yesod.Internal
extensions: default-extensions:
FlexibleContexts FlexibleContexts
OverloadedStrings OverloadedStrings
TypeFamilies TypeFamilies

View File

@ -0,0 +1,2 @@
# 1.0.2
* add persistent-test to deps

View File

@ -1,5 +1,6 @@
cabal-version: >= 1.10
name: serversession name: serversession
version: 1.0.1 version: 1.0.2
license: MIT license: MIT
license-file: LICENSE license-file: LICENSE
author: Felipe Lessa <felipe.lessa@gmail.com> author: Felipe Lessa <felipe.lessa@gmail.com>
@ -7,7 +8,6 @@ maintainer: Michael Xavier <michael@michaelxavier.net>
synopsis: Secure, modular server-side sessions. synopsis: Secure, modular server-side sessions.
category: Web category: Web
stability: Stable stability: Stable
cabal-version: >= 1.8
build-type: Simple build-type: Simple
homepage: https://github.com/yesodweb/serversession homepage: https://github.com/yesodweb/serversession
description: API docs and the README are available at <http://www.stackage.org/package/serversession> description: API docs and the README are available at <http://www.stackage.org/package/serversession>
@ -19,16 +19,18 @@ flag lib-Werror
manual: True manual: True
library library
default-language: Haskell2010
hs-source-dirs: src hs-source-dirs: src
build-depends: build-depends:
base == 4.* base == 4.*
, aeson , aeson
, base64-bytestring == 1.0.* , base64-bytestring >= 1.0 && < 1.3
, bytestring , bytestring
, data-default , data-default
, hashable , hashable
, nonce == 1.0.* , nonce == 1.0.*
, path-pieces , path-pieces
, persistent-test
, text , text
, time , time
, transformers , transformers
@ -37,7 +39,7 @@ library
Web.ServerSession.Core Web.ServerSession.Core
Web.ServerSession.Core.Internal Web.ServerSession.Core.Internal
Web.ServerSession.Core.StorageTests Web.ServerSession.Core.StorageTests
extensions: default-extensions:
DeriveDataTypeable DeriveDataTypeable
FlexibleContexts FlexibleContexts
OverloadedStrings OverloadedStrings
@ -53,6 +55,7 @@ library
test-suite tests test-suite tests
default-language: Haskell2010
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0
hs-source-dirs: tests hs-source-dirs: tests
build-depends: build-depends:
@ -64,7 +67,7 @@ test-suite tests
, hspec >= 2.1 && < 3 , hspec >= 2.1 && < 3
, QuickCheck , QuickCheck
, serversession , serversession
extensions: default-extensions:
DeriveDataTypeable DeriveDataTypeable
FlexibleContexts FlexibleContexts
OverloadedStrings OverloadedStrings

View File

@ -10,6 +10,7 @@ module Web.ServerSession.Core.StorageTests
import Control.Applicative as A import Control.Applicative as A
import Control.Exception (Exception) import Control.Exception (Exception)
import Control.Monad import Control.Monad
import DataTypeTest (roundUTCTime)
import Web.ServerSession.Core.Internal import Web.ServerSession.Core.Internal
import qualified Crypto.Nonce as N import qualified Crypto.Nonce as N
@ -173,8 +174,8 @@ allStorageTests storage it runIO parallel _shouldBe shouldReturn shouldThrow = d
{ sessionKey = sid { sessionKey = sid
, sessionAuthId = Nothing , sessionAuthId = Nothing
, sessionData = SessionMap $ HM.fromList vals , sessionData = SessionMap $ HM.fromList vals
, sessionCreatedAt = now , sessionCreatedAt = roundUTCTime now
, sessionAccessedAt = now , sessionAccessedAt = roundUTCTime now
} }
ver2 = session { sessionData = SessionMap HM.empty } ver2 = session { sessionData = SessionMap HM.empty }
run (getSession storage sid) `shouldReturn` Nothing run (getSession storage sid) `shouldReturn` Nothing
@ -223,8 +224,8 @@ generateSession gen hasAuthId = do
{ sessionKey = sid { sessionKey = sid
, sessionAuthId = authId , sessionAuthId = authId
, sessionData = SessionMap data_ , sessionData = SessionMap data_
, sessionCreatedAt = TI.addUTCTime (-1000) now , sessionCreatedAt = roundUTCTime $ TI.addUTCTime (-1000) now
, sessionAccessedAt = now , sessionAccessedAt = roundUTCTime $ now
} }
data HasAuthId = HasAuthId | NoAuthId data HasAuthId = HasAuthId | NoAuthId

16
stack.nix Normal file
View File

@ -0,0 +1,16 @@
{ ghc, nixpkgs ? import ./nixpkgs.nix }:
let
# haskellPackages = import ./stackage.nix { inherit nixpkgs; };
haskellPackages = pkgs.haskellPackages;
inherit (nixpkgs {}) pkgs;
in pkgs.haskell.lib.buildStackProject {
inherit ghc;
inherit (haskellPackages) stack;
name = "stackenv";
buildInputs = (with pkgs;
[ postgresql zlib libsodium gmp llvm_9
]) ++ (with haskellPackages;
[ yesod-bin happy alex
]);
}

View File

@ -1,4 +1,18 @@
resolver: lts-15.0 flags:
serversession-backend-acid-state:
lib-Werror: true
serversession-frontend-wai:
lib-Werror: true
serversession-backend-persistent:
lib-Werror: true
serversession:
lib-Werror: true
serversession-backend-redis:
lib-Werror: true
serversession-frontend-yesod:
lib-Werror: true
serversession-frontend-snap:
lib-Werror: true
packages: packages:
- serversession - serversession
- serversession-backend-acid-state - serversession-backend-acid-state
@ -8,25 +22,16 @@ packages:
- serversession-frontend-wai - serversession-frontend-wai
- serversession-frontend-yesod - serversession-frontend-yesod
- examples/serversession-example-yesod-persistent - examples/serversession-example-yesod-persistent
flags:
serversession:
lib-Werror: true
serversession-backend-acid-state:
lib-Werror: true
serversession-backend-persistent:
lib-Werror: true
serversession-backend-redis:
lib-Werror: true
serversession-frontend-snap:
lib-Werror: true
serversession-frontend-wai:
lib-Werror: true
serversession-frontend-yesod:
lib-Werror: true
extra-deps: extra-deps:
- acid-state-0.16.0 - snap-1.1.3.0@sha256:0c0814d2ab1c3d5f22cef4615b2913ded18e87710ea6febdbe6e3ab8d9838735,8872
- snap-1.1.1.0 - acid-state-0.16.0@sha256:a5640fd8d99bdb5f152476a2ae56cc8eb81864b280c8ec7d1387e81296ed844d,6190
- heist-1.1 - heist-1.1.0.1@sha256:7355cf8c1a7ef84c0c800c0539f7b99e7e540cace697238009a2dea1f05231f1,9311
- map-syntax-0.3 - map-syntax-0.3@sha256:ca8b449615fa57419c16a5e98844624a6ac758692b87b3cfae8c74c87c56f1b2,2420
- pwstore-fast-2.4.4 - pwstore-fast-2.4.4@sha256:9b6a37510d8b9f37f409a8ab3babac9181afcaaa3fce8ba1c131a7ed3de30698,1351
- xmlhtml-0.2.5.2 - xmlhtml-0.2.5.2@sha256:3f0990f725551985d777e8edb5563fe99aee998f1fde6a7633f720f76df54701,46997
resolver: lts-16.31
nix:
packages: []
pure: false
shell-file: ./stack.nix
add-gc-roots: true

View File

@ -4,51 +4,51 @@
# https://docs.haskellstack.org/en/stable/lock_files # https://docs.haskellstack.org/en/stable/lock_files
packages: packages:
- completed:
hackage: snap-1.1.3.0@sha256:0c0814d2ab1c3d5f22cef4615b2913ded18e87710ea6febdbe6e3ab8d9838735,8872
pantry-tree:
size: 5743
sha256: 804f55a8cab81e720547308e799243e81f43e089b860c0d3160a938cad86ed0d
original:
hackage: snap-1.1.3.0@sha256:0c0814d2ab1c3d5f22cef4615b2913ded18e87710ea6febdbe6e3ab8d9838735,8872
- completed: - completed:
hackage: acid-state-0.16.0@sha256:a5640fd8d99bdb5f152476a2ae56cc8eb81864b280c8ec7d1387e81296ed844d,6190 hackage: acid-state-0.16.0@sha256:a5640fd8d99bdb5f152476a2ae56cc8eb81864b280c8ec7d1387e81296ed844d,6190
pantry-tree: pantry-tree:
size: 13678 size: 13678
sha256: c6e4b7f00d2a500e6286beafe3a2da7ba898a9ea31f5744df57cdce8a8f5890f sha256: c6e4b7f00d2a500e6286beafe3a2da7ba898a9ea31f5744df57cdce8a8f5890f
original: original:
hackage: acid-state-0.16.0 hackage: acid-state-0.16.0@sha256:a5640fd8d99bdb5f152476a2ae56cc8eb81864b280c8ec7d1387e81296ed844d,6190
- completed: - completed:
hackage: snap-1.1.1.0@sha256:3b6301b66f244074d1d7a87173cc70871df1df84b3a86bba5e996422d5e73f45,9093 hackage: heist-1.1.0.1@sha256:7355cf8c1a7ef84c0c800c0539f7b99e7e540cace697238009a2dea1f05231f1,9311
pantry-tree:
size: 5743
sha256: 23a8899b96ab2dd080328b35f047c057c06ff1dc31a73b724a7a69ba3f5db374
original:
hackage: snap-1.1.1.0
- completed:
hackage: heist-1.1@sha256:20187de15ef630f8f6debc1cc22cacefb55ddf8864749294bfe2b79a831cad8d,8722
pantry-tree: pantry-tree:
size: 7354 size: 7354
sha256: 977c0818628cc92775afbf063032e308e55e29e85eaf6289e955dcdcd80b563f sha256: a2635ed49de6debaf8b98189989f83ab58dcc125c6ae8e57f6fe0903bc7fa8ff
original: original:
hackage: heist-1.1 hackage: heist-1.1.0.1@sha256:7355cf8c1a7ef84c0c800c0539f7b99e7e540cace697238009a2dea1f05231f1,9311
- completed: - completed:
hackage: map-syntax-0.3@sha256:ca8b449615fa57419c16a5e98844624a6ac758692b87b3cfae8c74c87c56f1b2,2420 hackage: map-syntax-0.3@sha256:ca8b449615fa57419c16a5e98844624a6ac758692b87b3cfae8c74c87c56f1b2,2420
pantry-tree: pantry-tree:
size: 558 size: 558
sha256: c196bee0433f9540e4251ebd1be06d802ff7cc4931e6f0aedc38babd28683a3c sha256: c196bee0433f9540e4251ebd1be06d802ff7cc4931e6f0aedc38babd28683a3c
original: original:
hackage: map-syntax-0.3 hackage: map-syntax-0.3@sha256:ca8b449615fa57419c16a5e98844624a6ac758692b87b3cfae8c74c87c56f1b2,2420
- completed: - completed:
hackage: pwstore-fast-2.4.4@sha256:9b6a37510d8b9f37f409a8ab3babac9181afcaaa3fce8ba1c131a7ed3de30698,1351 hackage: pwstore-fast-2.4.4@sha256:9b6a37510d8b9f37f409a8ab3babac9181afcaaa3fce8ba1c131a7ed3de30698,1351
pantry-tree: pantry-tree:
size: 270 size: 270
sha256: ff4a44ede62515efe5cd366a5803f7183c811c4a0cf56eea88da94181c4844c0 sha256: ff4a44ede62515efe5cd366a5803f7183c811c4a0cf56eea88da94181c4844c0
original: original:
hackage: pwstore-fast-2.4.4 hackage: pwstore-fast-2.4.4@sha256:9b6a37510d8b9f37f409a8ab3babac9181afcaaa3fce8ba1c131a7ed3de30698,1351
- completed: - completed:
hackage: xmlhtml-0.2.5.2@sha256:3f0990f725551985d777e8edb5563fe99aee998f1fde6a7633f720f76df54701,46997 hackage: xmlhtml-0.2.5.2@sha256:3f0990f725551985d777e8edb5563fe99aee998f1fde6a7633f720f76df54701,46997
pantry-tree: pantry-tree:
size: 61835 size: 61835
sha256: bb1bd95db3738e18d112bbc9724510ee64a51b7eda61494507f4957c5e2281f6 sha256: bb1bd95db3738e18d112bbc9724510ee64a51b7eda61494507f4957c5e2281f6
original: original:
hackage: xmlhtml-0.2.5.2 hackage: xmlhtml-0.2.5.2@sha256:3f0990f725551985d777e8edb5563fe99aee998f1fde6a7633f720f76df54701,46997
snapshots: snapshots:
- completed: - completed:
size: 488576 size: 534126
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/15/0.yaml url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/16/31.yaml
sha256: e4b6a87b47ec1cf63a7f1a0884a3b276fce2b0d174a10e8753c4f618e7983568 sha256: 637fb77049b25560622a224845b7acfe81a09fdb6a96a3c75997a10b651667f6
original: lts-15.0 original: lts-16.31