Skip to content

Commit

Permalink
post and put data in template form
Browse files Browse the repository at this point in the history
  • Loading branch information
jlmadurga committed Mar 15, 2016
1 parent 34fcd1b commit c228275
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 3 deletions.
8 changes: 6 additions & 2 deletions microbot/models/handler.py
Expand Up @@ -72,9 +72,13 @@ def process(self, **context):
if self.method == self.GET:
r = requests.get(url, headers=headers, params=params)
elif self.method == self.POST:
r = requests.post(url, data=json.loads(self.data), headers=headers, params=params)
data_template = Template(self.data)
data = data_template.render(**context)
r = requests.post(url, data=json.loads(data), headers=headers, params=params)
elif self.method == self.PUT:
r = requests.put(url, data=json.loads(self.data), headers=headers, params=params)
data_template = Template(self.data)
data = data_template.render(**context)
r = requests.put(url, data=json.loads(data), headers=headers, params=params)
else:
r = requests.delete(url, headers=headers, params=params)
return r
Expand Down
41 changes: 40 additions & 1 deletion tests/test_microbot.py
Expand Up @@ -155,6 +155,20 @@ class TestRequests(LiveServerTestCase, testcases.BaseTestBot):
}
}

author_post_data_template = {'in': '/authorscreate@author2',
'out': {'parse_mode': 'HTML',
'reply_markup': '',
'text': '<b>author2</b> created'
}
}

author_put_data_template = {'in': '/authorsupdate@1@author2',
'out': {'parse_mode': 'HTML',
'reply_markup': '',
'text': '<b>author2</b> updated'
}
}

def test_get_request(self):
Author.objects.create(name="author1")
self.request = factories.RequestFactory(url_template=self.live_server_url + '/api/authors/',
Expand Down Expand Up @@ -313,4 +327,29 @@ def test_header_not_authenticated(self):
response_text_template='''{% if response.list %}{% for book in response.list %}<b>{{book.title}}</b>{% endfor %}
{% else %}not books{% endif %}''',
response_keyboard_template='')
self._test_message(self.book_get_not_authorized)
self._test_message(self.book_get_not_authorized)

def test_post_data_template(self):
self.request = factories.RequestFactory(url_template=self.live_server_url + '/api/authors/',
method=Request.POST,
data='{"name":"{{url.name}}"}')
self.handler = factories.HandlerFactory(bot=self.bot,
pattern='/authorscreate@(?P<name>\w+)',
request=self.request,
response_text_template='<b>{{response.name}}</b> created',
response_keyboard_template='')
self._test_message(self.author_post_data_template)
self.assertEqual(Author.objects.all()[0].name, 'author2')

def test_put_data_template(self):
Author.objects.create(name="author1")
self.request = factories.RequestFactory(url_template=self.live_server_url + '/api/authors/{{url.id}}/',
method=Request.PUT,
data='{"name":"{{url.name}}"}')
self.handler = factories.HandlerFactory(bot=self.bot,
pattern='/authorsupdate@(?P<id>\d+)@(?P<name>\w+)',
request=self.request,
response_text_template='<b>{{response.name}}</b> updated',
response_keyboard_template='')
self._test_message(self.author_put_data_template)
self.assertEqual(Author.objects.all()[0].name, 'author2')

0 comments on commit c228275

Please sign in to comment.