示例#1
0
class ApiTest(IntegrationTest):
    def setUp(self):
        self.new_api = Api()

    def test_good_request(self):
        response = self.new_api.request('/account', 'get')
        self.assertEqual(response.status_code, 200)
示例#2
0
class ApiTest(IntegrationTest):
    def setUp(self):
        self.new_api = Api(sandbox_mode=True)

    def test_good_request(self):
        response = self.new_api.request('/games', 'get')
        self.assertEqual(response.status_code, 200)
示例#3
0
def test_create_auth():
    """
    Verifies that the default Client is used
    when all the tokens are not empty strings.
    """
    api = Api()
    auth = api.create_auth('https://www.mkmapi.eu/ws/v1.1/output.json',
                           app_token='app_token',
                           app_secret='app_secret',
                           access_token='access_token',
                           access_token_secret='access_token_secret')

    assert isinstance(auth.client, Client)
    assert auth.client.client_key == 'app_token'
    assert auth.client.client_secret == 'app_secret'
    assert auth.client.resource_owner_key == 'access_token'
    assert auth.client.resource_owner_secret == 'access_token_secret'
示例#4
0
def test_create_auth_with_empty_string_token():
    """
    Verifies that the custom MKMClient is used
    when access token and access token secret
    are empty strings.
    """
    api = Api()
    auth = api.create_auth('https://www.mkmapi.eu/ws/v1.1/output.json',
                           app_token='app_token',
                           app_secret='app_secret',
                           access_token='',
                           access_token_secret='')

    assert isinstance(auth.client, MKMClient)
    assert auth.client.client_key == 'app_token'
    assert auth.client.client_secret == 'app_secret'
    assert auth.client.resource_owner_key == ''
    assert auth.client.resource_owner_secret == ''
示例#5
0
def test_create_auth():
    """
    Verifies that the default Client is used
    when all the tokens are not empty strings.
    """
    api = Api("https://api.cardmarket.com/ws/v1.1/output.json")
    auth = api.create_auth(
        "https://api.cardmarket.com/ws/v1.1/output.json",
        app_token="app_token",
        app_secret="app_secret",
        access_token="access_token",
        access_token_secret="access_token_secret",
    )

    assert isinstance(auth.client, Client)
    assert auth.client.client_key == "app_token"
    assert auth.client.client_secret == "app_secret"
    assert auth.client.resource_owner_key == "access_token"
    assert auth.client.resource_owner_secret == "access_token_secret"
示例#6
0
def test_create_auth_with_empty_string_token():
    """
    Verifies that the custom MKMClient is used
    when access token and access token secret
    are empty strings.
    """
    api = Api("https://api.cardmarket.com/ws/v1.1/output.json")
    auth = api.create_auth(
        "https://api.cardmarket.com/ws/v1.1/output.json",
        app_token="app_token",
        app_secret="app_secret",
        access_token="",
        access_token_secret="",
    )

    assert isinstance(auth.client, MKMClient)
    assert auth.client.client_key == "app_token"
    assert auth.client.client_secret == "app_secret"
    assert auth.client.resource_owner_key == ""
    assert auth.client.resource_owner_secret == ""
示例#7
0
def test_request_with_auth_params(mocker):
    mocker.patch("mkmsdk.api.request")
    api = Api("https://sandbox.cardmarket.com/ws/v1.1/output.json")
    mocker.patch.object(api, 'create_auth')
    mocker.patch.object(api, 'handle_response')

    auth_params = {
        "app_token": "my_app_token",
        "app_secret": "my_app_secret",
        "access_token": "my_access_token",
        "access_token_secret": "my_access_token_secret"
    }

    api.request("/games", "get", auth_params=auth_params)

    api.create_auth.assert_called_with(
        "https://sandbox.cardmarket.com/ws/v1.1/output.json/games",
        app_token="my_app_token",
        app_secret="my_app_secret",
        access_token="my_access_token",
        access_token_secret="my_access_token_secret")
示例#8
0
 def setUp(self):
     self.new_api = Api(sandbox_mode=True)
示例#9
0
def test_endpoint():
    """Verifies the live endpoint is used by default."""
    api = Api()
    expected_live_base_endpoint = 'https://www.mkmapi.eu/ws/v1.1/output.json'

    assert api.base_endpoint == expected_live_base_endpoint
示例#10
0
def test_good_request():
    """Verifies that a correctly formed api request returns 200."""
    new_api = Api(_API_MAP["1.1"]["api_sandbox_root"])
    response = new_api.request("/games", "get")

    assert response.status_code == 200
示例#11
0
 def setUp(self):
     self.new_api = Api()
示例#12
0
def test_sandbox_mode():
    """Verifies the sandbox endpoint is used when specified."""
    sandbox_api = Api(sandbox_mode=True)
    expected_sandbox_base_endpoint = 'https://sandbox.mkmapi.eu/ws/v1.1/output.json'

    assert sandbox_api.base_endpoint == expected_sandbox_base_endpoint
示例#13
0
def test_handle_request(mocked_response):
    api = Api("https://sandbox.cardmarket.com/ws/v1.1/output.json")

    mocked_response.status_code = 400
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 401
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 403
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 404
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 405
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 409
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 410
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 422
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 480
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 545
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 1001
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)
示例#14
0
def test_sandbox_mode():
    """Verifies the sandbox endpoint is used when specified."""
    sandbox_api = Api("https://sandbox.cardmarket.com/ws/v1.1/output.json")
    expected_sandbox_base_endpoint = "https://sandbox.cardmarket.com/ws/v1.1/output.json"

    assert sandbox_api.base_endpoint == expected_sandbox_base_endpoint
示例#15
0
def test_endpoint():
    """Verifies the live endpoint is used by default."""
    api = Api("https://api.cardmarket.com/ws/v1.1/output.json")
    expected_live_base_endpoint = "https://api.cardmarket.com/ws/v1.1/output.json"

    assert api.base_endpoint == expected_live_base_endpoint
示例#16
0
def test_handle_request(mocked_response):
    api = Api()

    mocked_response.status_code = 400
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 401
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 403
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 404
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 405
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 409
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 410
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 422
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 480
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 545
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)

    mocked_response.status_code = 1001
    with pytest.raises(exceptions.ConnectionError):
        api.handle_response(mocked_response)
示例#17
0
def test_good_request():
    """Verifies that a correctly formed api request returns 200."""
    new_api = Api(sandbox_mode=True)
    response = new_api.request('/games', 'get')

    assert response.status_code == 200
示例#18
0
 def setUp(self):
     self.api = Api()
     self.response = mock.Mock()
     self.response.content = {}
示例#19
0
class ApiTest(unittest.TestCase):

    def setUp(self):
        self.api = Api()
        self.response = mock.Mock()
        self.response.content = {}

    def test_create_auth(self):
        auth = self.api.create_auth('https://www.mkmapi.eu/ws/v1.1/output.json',
                                    app_token='app_token',
                                    app_secret='app_secret',
                                    access_token='access_token',
                                    access_token_secret='access_token_secret')

        self.assertIsInstance(auth.client, Client)
        self.assertEqual(auth.client.client_key, 'app_token')
        self.assertEqual(auth.client.client_secret, 'app_secret')
        self.assertEqual(auth.client.resource_owner_key, 'access_token')
        self.assertEqual(auth.client.resource_owner_secret, 'access_token_secret')

    def test_create_auth_with_empty_string_token(self):
        auth = self.api.create_auth('https://www.mkmapi.eu/ws/v1.1/output.json',
                                    app_token='app_token',
                                    app_secret='app_secret',
                                    access_token='',
                                    access_token_secret='')

        self.assertIsInstance(auth.client, MKMClient)
        self.assertEqual(auth.client.client_key, 'app_token')
        self.assertEqual(auth.client.client_secret, 'app_secret')
        self.assertEqual(auth.client.resource_owner_key, '')
        self.assertEqual(auth.client.resource_owner_secret, '')

    def test_missing_env_var_raise_exception_correctly(self):
        with mock.patch('mkmsdk.os') as os_mocked:
            os_mocked.environ = {}
            self.assertRaises(exceptions.MissingConfig, get_mkm_app_secret)

    def test_endpoint(self):
        expected_live_base_endpoint = 'https://www.mkmapi.eu/ws/v1.1/output.json'

        self.assertEqual(self.api.base_endpoint, expected_live_base_endpoint)

    def test_sandbox_mode(self):
        sandbox_api = Api(sandbox_mode=True)
        expected_sandbox_base_endpoint = 'https://sandbox.mkmapi.eu/ws/v1.1/output.json'

        self.assertEqual(sandbox_api.base_endpoint, expected_sandbox_base_endpoint)

    def test_redirection(self):
        self.response.status_code = 301
        self.assertRaises(exceptions.Redirection,
                          self.api.handle_response, self.response, self.response.content)

        self.response.status_code = 302
        self.assertRaises(exceptions.Redirection,
                          self.api.handle_response, self.response, self.response.content)

        self.response.status_code = 303
        self.assertRaises(exceptions.Redirection,
                          self.api.handle_response, self.response, self.response.content)

        self.response.status_code = 307
        self.assertRaises(exceptions.Redirection,
                          self.api.handle_response, self.response, self.response.content)

    def test_bad_request(self):
        self.response.status_code = 400
        self.assertRaises(exceptions.BadRequest,
                          self.api.handle_response, self.response, self.response.content)

    def test_unauthorized_access(self):
        self.response.status_code = 401
        self.assertRaises(exceptions.UnauthorizedAccess,
                          self.api.handle_response, self.response, self.response.content)

    def test_forbidden_access(self):
        self.response.status_code = 403
        self.assertRaises(exceptions.ForbiddenAccess,
                          self.api.handle_response, self.response, self.response.content)

    def test_resource_not_found(self):
        self.response.status_code = 404
        self.assertRaises(exceptions.ResourceNotFound,
                          self.api.handle_response, self.response, self.response.content)

    def test_method_not_allowed(self):
        self.response.status_code = 405
        self.assertRaises(exceptions.MethodNotAllowed,
                          self.api.handle_response, self.response, self.response.content)

    def test_resource_conflict(self):
        self.response.status_code = 409
        self.assertRaises(exceptions.ResourceConflict,
                          self.api.handle_response, self.response, self.response.content)

    def test_resource_gone(self):
        self.response.status_code = 410
        self.assertRaises(exceptions.ResourceGone,
                          self.api.handle_response, self.response, self.response.content)

    def test_resource_invalid(self):
        self.response.status_code = 422
        self.assertRaises(exceptions.ResourceInvalid,
                          self.api.handle_response, self.response, self.response.content)

    def test_client_error(self):
        self.response.status_code = 480
        self.assertRaises(exceptions.ClientError,
                          self.api.handle_response, self.response, self.response.content)

    def test_server_error(self):
        self.response.status_code = 545
        self.assertRaises(exceptions.ServerError,
                          self.api.handle_response, self.response, self.response.content)

    def test_unknown_error(self):
        self.response.status_code = 1001
        self.assertRaises(exceptions.ConnectionError,
                          self.api.handle_response, self.response, self.response.content)