gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-blog] 02/02: done with /refund test case


From: gnunet
Subject: [GNUnet-SVN] [taler-blog] 02/02: done with /refund test case
Date: Thu, 04 Jan 2018 10:55:26 +0100

This is an automated email from the git hooks/post-receive script.

marcello pushed a commit to branch master
in repository blog.

commit 8d8aade1608755824541b6151acc2111ed07db3f
Author: Marcello Stanisci <address@hidden>
AuthorDate: Thu Jan 4 10:55:06 2018 +0100

    done with /refund test case
---
 .gitignore             | 15 +++++++++++++++
 talerblog/blog/blog.py | 28 ++++++++++------------------
 talerblog/tests.py     | 39 +++++++++++++++++++++++++++++++++++++--
 3 files changed, 62 insertions(+), 20 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..409c488
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+.eggs/
+Makefile
+aclocal.m4
+autom4te.cache/
+compile
+config.log
+config.status
+configure
+frontend-blog.wsgi
+install-sh
+missing
+taler-merchant-blog
+talerblog.egg-info/
+talerblog/__pycache__/
+talerblog/blog/__pycache__/
diff --git a/talerblog/blog/blog.py b/talerblog/blog/blog.py
index 54d77f0..fb3bbe8 100644
--- a/talerblog/blog/blog.py
+++ b/talerblog/blog/blog.py
@@ -33,25 +33,20 @@ from ..helpers import (make_url, \
 from ..blog.content import (ARTICLES, \
     get_article_file, get_image_file)
 
-LOGGER = logging.getLogger(__name__)
-
 BASE_DIR = os.path.dirname(os.path.abspath(__file__))
-
 app = flask.Flask(__name__, template_folder=BASE_DIR)
 app.debug = True
 app.secret_key = base64.b64encode(os.urandom(64)).decode('utf-8')
 
+LOGGER = logging.getLogger(__name__)
 TC = TalerConfig.from_env()
-
 BACKEND_URL = TC["frontends"]["backend"].value_string(required=True)
 CURRENCY = TC["taler"]["currency"].value_string(required=True)
 INSTANCE = TC["blog"]["instance"].value_string(required=True)
-
 ARTICLE_AMOUNT = dict(value=0, fraction=50000000, currency=CURRENCY)
 
 app.config.from_object(__name__)
 
-
 @app.context_processor
 def utility_processor():
     def url(my_url):
@@ -60,14 +55,12 @@ def utility_processor():
         return os.environ.get(name, default)
     return dict(url=url, env=env)
 
-
 @app.route("/")
 def index():
     return flask.render_template("templates/index.html",
                                  merchant_currency=CURRENCY,
                                  articles=ARTICLES.values())
 
-
 @app.route("/javascript")
 def javascript_licensing():
     return flask.render_template("templates/javascript.html")
@@ -95,16 +88,15 @@ def refund():
         response.headers["X-Taler-Refund-Url"] = make_url("/refund", 
("order_id", order_id))
         return response, 402
 
-    else:
-        order_id = expect_parameter("order_id", False)
-        if not order_id:
-            LOGGER.error("Missing parameter 'order_id'")
-            return flask.jsonify(dict(error="Missing parameter 'order_id'")), 
400
-        resp = requests.get(urljoin(BACKEND_URL, "refund"),
-                            params=dict(order_id=order_id, instance=INSTANCE))
-        if resp.status_code != 200:
-            return backend_error(resp)
-        return flask.jsonify(resp.json()), resp.status_code
+    order_id = expect_parameter("order_id", False)
+    if not order_id:
+        LOGGER.error("Missing parameter 'order_id'")
+        return flask.jsonify(dict(error="Missing parameter 'order_id'")), 400
+    resp = requests.get(urljoin(BACKEND_URL, "refund"),
+                        params=dict(order_id=order_id, instance=INSTANCE))
+    if resp.status_code != 200:
+        return backend_error(resp)
+    return flask.jsonify(resp.json()), resp.status_code
 
 
 @app.route("/generate-contract", methods=["GET"])
diff --git a/talerblog/tests.py b/talerblog/tests.py
index 050d852..1cd5128 100644
--- a/talerblog/tests.py
+++ b/talerblog/tests.py
@@ -1,17 +1,52 @@
 #!/usr/bin/env python3
 
 import unittest
+import logging
 from mock import patch, MagicMock
-from talerblog.blog import blog
-from talerblog.talerconfig import TalerConfig
+from .blog import blog
+from .talerconfig import TalerConfig
 
 TC = TalerConfig.from_env()
 CURRENCY = TC["taler"]["currency"].value_string(required=True)
+LOGGER = logging.getLogger(__name__)
 
 class BlogTestCase(unittest.TestCase):
     def setUp(self):
         blog.app.testing = True
         self.app = blog.app.test_client()
+        self.instance = TC["blog"]["instance"].value_string(required=True)
+
+    @patch("requests.get")
+    @patch("requests.post")
+    @patch("flask.session")
+    def test_refund(self, mocked_session, mocked_post, mocked_get):
+
+        # Test GET
+        ret_get = MagicMock()
+        ret_get.status_code = 200
+        ret_get.json.return_value = {"error": "mocckky error"}
+        mocked_get.return_value = ret_get
+        response = self.app.get("/refund?order_id=99")
+        mocked_get.assert_called_with(
+            "http://backend.test.taler.net/refund";,
+            params={"order_id": "99", "instance": self.instance})
+
+        # Test POST
+        mocked_session.get.return_value = {"mocckky": 99}
+        ret_post = MagicMock()
+        ret_post.status_code = 200
+        mocked_post.return_value = ret_post
+        response = self.app.post("/refund", data={"article_name": "mocckky"})
+        mocked_post.assert_called_with(
+            "http://backend.test.taler.net/refund";,
+            json={
+                "order_id": 99,
+                "refund": {
+                    "value": 0,
+                    "fraction": 50000000,
+                    "currency": CURRENCY},
+                "reason": "Demo reimbursement",
+                "instance": self.instance})
 
     @patch("requests.post")
     def test_proposal_creation(self, mocked_post):

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]