[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