]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/commitdiff
Check before processing that credentials are valid
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Tue, 8 May 2018 19:00:27 +0000 (21:00 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Tue, 8 May 2018 19:00:27 +0000 (21:00 +0200)
market.py
tests/test_market.py

index caa951330dac039fe4170d597394b50989eadb17..9550b7706aa7194a6e09ab174ea0420206fd7832 100644 (file)
--- a/market.py
+++ b/market.py
@@ -1,4 +1,4 @@
-from ccxt import ExchangeError, NotSupported, RequestTimeout, InvalidNonce
+from ccxt import AuthenticationError, ExchangeError, NotSupported, RequestTimeout, InvalidNonce
 import ccxt_wrapper as ccxt
 import time
 import dbs
@@ -88,6 +88,7 @@ class Market:
 
     def process(self, actions, before=False, after=False):
         try:
+            self.ccxt.check_required_credentials()
             for action in actions:
                 if bool(before) is bool(after):
                     self.processor.process(action, steps="all")
@@ -95,6 +96,8 @@ class Market:
                     self.processor.process(action, steps="before")
                 elif after:
                     self.processor.process(action, steps="after")
+        except AuthenticationError:
+            self.report.log_error("market_authentication", message="Impossible to authenticate to market")
         except Exception as e:
             import traceback
             self.report.log_error("market_process", exception=e, message=traceback.format_exc())
index 2c92655ccb78bfb009f432ecf562e132b8f08e9b..c89025be021383625a810a5eb8e33efb82bed6dd 100644 (file)
@@ -887,6 +887,17 @@ class MarketTest(WebMockTestCase):
             store_report.assert_called_once()
             log_error.assert_not_called()
 
+        process.reset_mock()
+        log_error.reset_mock()
+        store_report.reset_mock()
+        with self.subTest(authentication_error=True):
+            m.ccxt.check_required_credentials.side_effect = market.ccxt.AuthenticationError
+
+            m.process(["some_action"], before=True)
+            log_error.assert_called_with("market_authentication", message="Impossible to authenticate to market")
+            store_report.assert_called_once()
+
+        m.ccxt.check_required_credentials.side_effect = True
         process.reset_mock()
         log_error.reset_mock()
         store_report.reset_mock()