def test_successful_payment_creation(self):
        response = requests.Response()
        response._content = """{
  "orderNumber": "12345",
  "token": "secret_token",
  "url": "https://payment.verkkomaksut.fi/payment/load/token/secret_token"
}"""
        response.status_code = requests.codes.created

        client = Client()
        flexmock(client.session)
        client.session \
            .should_receive('post') \
            .with_args(
                'https://payment.verkkomaksut.fi/api-payment/create',
                data='{"orderNumber": "12345"}',
            ) \
            .and_return(response)

        payment = MockPayment(order_number='12345')
        assert client.create_payment(payment) == {
            'order_number':
            '12345',
            'token':
            'secret_token',
            'url':
            'https://payment.verkkomaksut.fi/payment/load/token/'
            'secret_token'
        }
    def test_payment_creation_failure(self):
        response = requests.Response()
        response._content = """{
  "errorCode": "invalid-order-number",
  "errorMessage": "Missing or invalid order number"
}"""
        response.status_code = requests.codes.bad_request

        client = Client()
        flexmock(client.session)
        client.session.should_receive("post").with_args(
            "https://payment.verkkomaksut.fi/api-payment/create", data='{"orderNumber": "12345"}'
        ).and_return(response)

        payment = MockPayment()
        with raises(VerkkomaksutException) as exc_info:
            client.create_payment(payment)

        assert exc_info.value.code == "invalid-order-number"
        assert exc_info.value.message == "Missing or invalid order number"
    def test_payment_creation_failure(self):
        response = requests.Response()
        response._content = """{
  "errorCode": "invalid-order-number",
  "errorMessage": "Missing or invalid order number"
}"""
        response.status_code = requests.codes.bad_request

        client = Client()
        flexmock(client.session)
        client.session \
            .should_receive('post') \
            .with_args(
                'https://payment.verkkomaksut.fi/api-payment/create',
                data='{"orderNumber": "12345"}',
            ) \
            .and_return(response)

        payment = MockPayment()
        with raises(VerkkomaksutException) as exc_info:
            client.create_payment(payment)

        assert exc_info.value.code == 'invalid-order-number'
        assert exc_info.value.message == 'Missing or invalid order number'
    def test_successful_payment_creation(self):
        response = requests.Response()
        response._content = """{
  "orderNumber": "12345",
  "token": "secret_token",
  "url": "https://payment.verkkomaksut.fi/payment/load/token/secret_token"
}"""
        response.status_code = requests.codes.created

        client = Client()
        flexmock(client.session)
        client.session.should_receive("post").with_args(
            "https://payment.verkkomaksut.fi/api-payment/create", data='{"orderNumber": "12345"}'
        ).and_return(response)

        payment = MockPayment(order_number="12345")
        assert client.create_payment(payment) == {
            "order_number": "12345",
            "token": "secret_token",
            "url": "https://payment.verkkomaksut.fi/payment/load/token/" "secret_token",
        }