mirror of
https://github.com/simplex-chat/simplexmq.git
synced 2026-08-28 05:04:40 +00:00
test: error when ACK is sent without message
This commit is contained in:
+6
-7
@@ -64,9 +64,8 @@ runClient h = do
|
||||
`finally` cancelSubscribers c
|
||||
|
||||
cancelSubscribers :: (MonadUnliftIO m) => Client -> m ()
|
||||
cancelSubscribers Client {subscriptions} = do
|
||||
cs <- readTVarIO subscriptions
|
||||
forM_ cs cancelSub
|
||||
cancelSubscribers Client {subscriptions} =
|
||||
readTVarIO subscriptions >>= mapM_ cancelSub
|
||||
|
||||
cancelSub :: (MonadUnliftIO m) => Sub -> m ()
|
||||
cancelSub = \case
|
||||
@@ -84,7 +83,7 @@ receive h Client {rcvQ} = forever $ do
|
||||
(signature, (connId, cmdOrError)) <- tGet fromClient h
|
||||
-- TODO maybe send Either to queue?
|
||||
signed <- case cmdOrError of
|
||||
Left e -> return . (connId,) . Cmd SBroker $ ERR e
|
||||
Left e -> return . mkResp connId $ ERR e
|
||||
Right cmd -> verifyTransmission signature connId cmd
|
||||
atomically $ writeTBQueue rcvQ signed
|
||||
|
||||
@@ -93,6 +92,9 @@ send h Client {sndQ} = forever $ do
|
||||
signed <- atomically $ readTBQueue sndQ
|
||||
tPut h (B.empty, signed)
|
||||
|
||||
mkResp :: ConnId -> Command 'Broker -> Signed
|
||||
mkResp connId command = (connId, Cmd SBroker command)
|
||||
|
||||
verifyTransmission :: forall m. (MonadUnliftIO m, MonadReader Env m) => Signature -> ConnId -> Cmd -> m Signed
|
||||
verifyTransmission signature connId cmd = do
|
||||
(connId,) <$> case cmd of
|
||||
@@ -253,9 +255,6 @@ client clnt@Client {subscriptions, rcvQ, sndQ} Server {subscribedQ} =
|
||||
Left e -> return $ err e
|
||||
Right _ -> delMsgQueue ms connId $> ok
|
||||
|
||||
mkResp :: ConnId -> Command 'Broker -> Signed
|
||||
mkResp cId command = (cId, Cmd SBroker command)
|
||||
|
||||
ok :: Signed
|
||||
ok = mkResp connId OK
|
||||
|
||||
|
||||
@@ -56,6 +56,9 @@ testCreateSecure =
|
||||
Resp _ ok4 <- sendRecv h ("1234", rId, "ACK")
|
||||
(ok4, OK) #== "replies OK when message acknowledged if no more messages"
|
||||
|
||||
Resp _ err6 <- sendRecv h ("1234", rId, "ACK")
|
||||
(err6, ERR PROHIBITED) #== "replies ERR when message acknowledged without messages"
|
||||
|
||||
Resp sId2 err1 <- sendRecv h ("4567", sId, "SEND :hello")
|
||||
(err1, ERR AUTH) #== "rejects signed SEND"
|
||||
(sId2, sId) #== "same connection ID in response 2"
|
||||
|
||||
Reference in New Issue
Block a user