예제 #1
0
 def setUp(self):
     super(TestSubscriptions, self).setUp(self)
     sxml = SpreedlySubscriptionXML()
     with patch.object(pyspreedly.api.Client, 'get_info') as mock_get_info:
         with patch.object(pyspreedly.api.Client, 'create_subscriber') as mock_create_subscriber:
             with patch.object(pyspreedly.api.Client, 'subscribe') as mock_subscribe:
                 mock_get_info.side_effect = requests.HTTPError
                 mock_create_subscriber.return_value = objectify_spreedly(sxml.create_user(self.user.id))
                 mock_subscribe.return_value = objectify_spreedly(sxml.free_trial_response(12345, self.user.id))
                 self.subscription = self.trial_plan.start_trial(self.user)
예제 #2
0
def set_client_mock_returns(client_mock):
    spreedly_xml = SpreedlySubscriptionXML()
    subscriber = objectify_spreedly(spreedly_xml.create_user())
    plans = objectify_spreedly(spreedly_xml.all_plans())

    def get_signup_url(subscriber_id, plan_id, screen_name, token=None):
        subscriber_id = str(subscriber_id)
        plan_id = str(plan_id)
        if token:
            url = '/'.join(('subscribers',subscriber_id,token,
                            'subscribe', plan_id))
        else:
            url = '/'.join(('subscribers',subscriber_id,'subscribe',
                            plan_id,screen_name))
        url = urljoin(client_mock.base_url, url)
        return url

    def allow_free_trial(subscriber_id):
        subscriber['eligible_for_free_trial'] = True
        return subscriber

    def set_info(subscriber_id, **kw):
        if 'new_customer_id' in kw:
            c_id = kw.pop('new_customer_id')
            if c_id in self._subscriptions:
                raise requests.HTTPError(
                        "status code: 403, text: you fail it")
            subscriber['customer_id'] = c_id
        for key in kw:
            subscriber[key] = kw[key]
        return subscriber

    client_mock.get_plans.return_value = plans
    client_mock.delete_subscriber.return_value = '200'
    client_mock.create_subscriber.return_value = subscriber
    client_mock.get_signup_url.side_effect = get_signup_url
    client_mock.get_info.return_value = subscriber

    client_mock.allow_free_trial.side_effect = allow_free_trial
    client_mock.set_info.side_effect = set_info

    return client_mock