client.py 2.2 KB
import string
import unittest
from random import choice

from floraconcierge import errors
from floraconcierge.client import ApiClient
from floraconcierge.mapping import Collection
from floraconcierge.mapping.model import Language


class TestOne(unittest.TestCase):
    def setUp(self):
        self.__api_id = 1
        self.__api_secret = 'ihaidhsuihi1uhiu12h3h12qd123'
        self.client = ApiClient(self.__api_id, self.__api_secret)
        self.client.debug = True
        self.client.api_endpoint = 'http://api.floraconcierge.loc/v1/'

    def _test_data(self):
        return dict(
            user_id=10,
            username='test',
            password='password',
            firstname="Steve",
            lastname="Jobs"
        ), '8a5532e59eea6ed0874f2e530595c042ba1320d2'

    def _random_string(self, len):
        return "".join(choice(string.ascii_letters + string.digits) for _ in range(len))

    def test_signature(self):
        data, signature = self._test_data()

        self.assertEqual(self.client.sign(**data), signature)

    def test_signature_extra(self):
        data, signature = self._test_data()

        for i in range(0, 5):
            data['_' + self._random_string(5)] = self._random_string(15)

        self.assertEqual(self.client.sign(**data), signature)

    def test_api_call_bad_get(self):
        self.assertRaises(AssertionError, self.client.call, 'null', 'dict required')

    def test_api_call_bad_post(self):
        self.assertRaises(AssertionError, self.client.call, 'null', None, 'dict required')

    def test_api_call_bad_func(self):
        self.assertRaises(errors.ResultApiNotFoundError, self.client.call, 'bad/function/name')

    def test_api_call_checkip(self):
        self.assertEqual(self.client.call('geo/useripinfo').ip, '127.0.0.1')

    def test_api_call_languages(self):
        self.assertIsInstance(self.client.services.system.get_languages_list(), Collection)

    def test_api_call_language_ru(self):
        lang = self.client.services.system.get_language_by_id('ru')

        self.assertIsInstance(lang, Language)
        self.assertEqual(lang.iso, 'ru')

    def test_api_call_x(self):
        self.assertEqual(self.client.services.geo.get_city_by_id(2800).slug, 'moscow')