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

from floraconcierge import errors

from floraconcierge.client import ApiClient


class TestOne(unittest.TestCase):
    def setUp(self):
        self.__api_id = 9
        self.__api_secret = '(hijnKE_u98hhj EA)UF78gyBUHE&hihjkn ALSD'
        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"
        ), '7fe786c6335c17e4a73d6bbb7f5dcec55c929325'

    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')