Merge pull request #83 from begriffs/404

Issue 404 for nonexistent tables
This commit is contained in:
Joe Nelson
2014-10-14 19:02:06 -07:00
2 changed files with 9 additions and 5 deletions
+5 -5
View File
@@ -18,7 +18,7 @@ import Control.Exception (finally, throw, catchJust, catch, SomeException,
import Network.HTTP.Types.Header (RequestHeaders, hContentType, hAuthorization, import Network.HTTP.Types.Header (RequestHeaders, hContentType, hAuthorization,
hLocation) hLocation)
import Network.HTTP.Types.Status (status400, status401, status301) import Network.HTTP.Types.Status (status400, status401, status404, status301)
import Network.Wai (Application, requestHeaders, responseLBS, rawPathInfo, import Network.Wai (Application, requestHeaders, responseLBS, rawPathInfo,
rawQueryString, isSecure) rawQueryString, isSecure)
import Network.URI (URI(..), parseURI) import Network.URI (URI(..), parseURI)
@@ -72,10 +72,10 @@ instance ToJSON SqlError where
clientErrors :: Application -> Application clientErrors :: Application -> Application
clientErrors app req respond = clientErrors app req respond =
catchJust isPgException (app req respond) ( catchJust isPgException (app req respond) $ \err ->
respond . responseLBS status400 [(hContentType, "application/json")] respond $ if seState err == "42P01"
. encode then responseLBS status404 [] ""
) else responseLBS status400 [(hContentType, "application/json")] (encode err)
where where
isPgException :: SqlError -> Maybe SqlError isPgException :: SqlError -> Maybe SqlError
+4
View File
@@ -9,6 +9,10 @@ import SpecHelper
spec :: Spec spec :: Spec
spec = around appWithFixture $ do spec = around appWithFixture $ do
describe "Querying a nonexistent table" $
it "causes a 404" $
get "/faketable" `shouldRespondWith` 404
describe "Filtering response" $ describe "Filtering response" $
context "column equality" $ context "column equality" $