diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,6 @@
+0.12.1.1
+* Add missing test suite files to package.
+
 0.12.1.0
 * Backwards compatibility fixes for versions of base < 4.8.
 
diff --git a/snap-extras.cabal b/snap-extras.cabal
--- a/snap-extras.cabal
+++ b/snap-extras.cabal
@@ -1,5 +1,5 @@
 Name:                snap-extras
-Version:             0.12.1.0
+Version:             0.12.1.1
 Synopsis:            A collection of useful helpers and utilities for Snap web applications.
 Description:         This package contains a collection of helper functions
                      that come in handy in most practical, real-world
@@ -51,7 +51,7 @@
       aeson                    >= 0.6   && < 1.2
     , base                     >= 4     && < 5
     , blaze-builder            >= 0.3   && < 0.5
-    , blaze-html               >= 0.6   && < 0.9
+    , blaze-html               >= 0.6   && < 0.10
     , bytestring               >= 0.9.1 && < 0.11
     , case-insensitive         >= 1.0   && < 1.3
     , configurator             >= 0.2   && < 0.4
@@ -114,6 +114,9 @@
   Main-Is: Main.hs
   Ghc-Options: -threaded -rtsopts -O0
   Default-Language: Haskell2010
+  Other-Modules:
+    Snap.Extras.Tests.Arbitrary
+    Snap.Extras.Tests.MethodOverride
   Hs-Source-Dirs:
     test/src
   Build-Depends:
diff --git a/test/src/Snap/Extras/Tests/Arbitrary.hs b/test/src/Snap/Extras/Tests/Arbitrary.hs
new file mode 100644
--- /dev/null
+++ b/test/src/Snap/Extras/Tests/Arbitrary.hs
@@ -0,0 +1,29 @@
+module Snap.Extras.Tests.Arbitrary where
+
+-------------------------------------------------------------------------------
+import           Control.Applicative
+import           Data.Char
+import           Data.ByteString.Char8                  (ByteString, pack)
+import           Snap.Core
+-------------------------------------------------------------------------------
+import           Test.QuickCheck
+-------------------------------------------------------------------------------
+
+
+instance Arbitrary Method where
+  arbitrary = oneof [ pure HEAD
+                    , pure POST
+                    , pure PUT
+                    , pure DELETE
+                    , pure TRACE
+                    , pure OPTIONS
+                    , pure CONNECT
+                    , pure PATCH
+                    , Method <$> (pack <$> cleanString)
+                    ]
+    where
+      cleanString = do
+        NonEmpty s <- arbitrary
+        return s
+
+
diff --git a/test/src/Snap/Extras/Tests/MethodOverride.hs b/test/src/Snap/Extras/Tests/MethodOverride.hs
new file mode 100644
--- /dev/null
+++ b/test/src/Snap/Extras/Tests/MethodOverride.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE OverloadedStrings #-}
+module Snap.Extras.Tests.MethodOverride
+    ( methodOverrideTests
+    ) where
+
+-------------------------------------------------------------------------------
+import           Control.Applicative
+import           Data.ByteString             (ByteString)
+import qualified Data.ByteString.Char8       as B
+import           Data.Char
+import qualified Data.Map                    as M
+import           Test.QuickCheck
+import           Test.QuickCheck.Monadic
+import           Test.Tasty
+import           Test.Tasty.QuickCheck
+-------------------------------------------------------------------------------
+import           Snap.Core
+import           Snap.Extras.MethodOverride
+import           Snap.Extras.Tests.Arbitrary ()
+import           Snap.Extras.TextUtils
+import           Snap.Test
+-------------------------------------------------------------------------------
+
+methodOverrideTests = testGroup "Snap.Extras.MethodOverride"
+    [ testProperty "leaves method alone with no override" $ \meth ->
+       monadicIO $ assertOverride meth meth Nothing
+    , testProperty "leaves non-POST alone even with override" $ \(NonPost meth) override ->
+        monadicIO $ assertOverride  meth meth (Just $ showMethod override)
+    , testProperty "leaves non-POST alone even with override and lowercased param" $ \(NonPost meth) override ->
+        monadicIO $ assertOverride  meth meth (Just $ showDCMethod override)
+    , testProperty "overrides POST" $ \meth ->
+        monadicIO $ assertOverride meth POST (Just $ showMethod meth)
+    , testProperty "overrides POST with lowercased method" $ \meth ->
+         monadicIO $ assertOverride (lowerMeth meth) POST (Just $ showDCMethod meth)
+    ]
+
+
+-------------------------------------------------------------------------------
+newtype NonPost = NonPost Method deriving (Show)
+
+instance Arbitrary NonPost where
+  arbitrary = NonPost <$> (arbitrary `suchThat` notPost)
+    where
+      notPost (POST) = False
+      notPost _ = True
+
+-------------------------------------------------------------------------------
+showDCMethod = B.map toLower . showMethod
+
+-------------------------------------------------------------------------------
+showMethod :: Method -> ByteString
+showMethod (Method m) = m
+showMethod m          = showBS m
+
+
+-------------------------------------------------------------------------------
+lowerMeth (Method m) = Method (B.map toLower m)
+lowerMeth m          = m
+
+
+-------------------------------------------------------------------------------
+assertOverride expectedMeth givenMeth override = do
+    actualMeth <- run $ evalHandler builder app
+    assert $ expectedMeth == actualMeth
+  where
+    builder = do
+      setRequestType $ RequestWithRawBody givenMeth ""
+      case override of
+        Just m -> setQueryString $ M.singleton "_method" [m]
+        _      -> return ()
+
+
+-------------------------------------------------------------------------------
+app = handleMethodOverride (getsRequest rqMethod)
+
