class TestGettingParentEntry(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.list = self.aweber.load_from_url('/accounts/1/lists/303449')
        self.account = self.aweber.load_from_url('/accounts/1')
        self.custom_field = self.aweber.load_from_url(
            '/accounts/1/lists/303449/custom_fields/1')

    def test_should_be_able_get_parent_entry(self):
        entry = self.list.get_parent_entry()

    def test_list_parent_should_be_account(self):
        entry = self.list.get_parent_entry()
        self.assertEqual(type(entry), AWeberEntry)
        self.assertEqual(entry.type, 'account')

    def test_custom_field_parent_should_be_list(self):
        entry = self.custom_field.get_parent_entry()
        self.assertEqual(type(entry), AWeberEntry)
        self.assertEqual(entry.type, 'list')

    def test_account_parent_should_be_none(self):
        entry = self.account.get_parent_entry()
        self.assertEqual(entry, None)
Ejemplo n.º 2
0
class TestAWeberCollection(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.lists = self.aweber.load_from_url('/accounts/1/lists')
        self.aweber.adapter.requests = []

    def test_should_be_a_collection(self):
        self.assertTrue(type(self.lists), AWeberCollection)

    def test_should_have_24_lists(self):
        self.assertTrue(len(self.lists), 24)

    def test_should_be_able_get_each_via_offset(self):
        for i in range(0, 23):
            list = self.lists[i]
            self.assertEqual(type(list), AWeberEntry)
            self.assertEqual(list.type, 'list')

    def test_should_be_able_to_iterate_on_collection(self):
        list_number = 0
        for list in self.lists:
            self.assertEqual(type(list), AWeberEntry)
            self.assertEqual(list.type, 'list')
            list_number += 1
        self.assertEqual(list_number, 24)

    def test_should_support_get_by_id(self):
        list = self.lists.get_by_id(303449)
        self.assertEqual(type(list), AWeberEntry)
        self.assertEqual(list.type, 'list')
        self.assertEqual(list.id, 303449)

    def test_should_support_find_method(self):
        base_url = '/accounts/1/lists/303449/subscribers'
        subscriber_collection = self.aweber.load_from_url(base_url)
        self.aweber.adapter.requests = []
        subscribers = subscriber_collection.find(email='*****@*****.**')
        request = self.aweber.adapter.requests[0]

        assert subscribers != False
        assert isinstance(subscribers, AWeberCollection)
        assert len(subscribers) == 1
        assert subscribers[0].self_link == \
                'https://api.aweber.com/1.0/accounts/1/lists/303449/subscribers/50205517'
        assert request['url'] == \
            '{0}?ws.op=find&email=joe%40example.com'.format(base_url)

    def test_find_should_handle_errors(self):
        base_url = '/accounts/1/lists/303449/subscribers'
        subscriber_collection = self.aweber.load_from_url(base_url)
        self.assertRaises(APIException, subscriber_collection.find, name='joe')

    def test_should_create_entries_with_correct_url(self):
        base_url = '/accounts/1'
        account = self.aweber.load_from_url(base_url)
        subscribers = account.findSubscribers(email='*****@*****.**')
        for subscriber in subscribers:
            assert subscriber.url == subscriber.self_link.replace(API_BASE, '')
class TestGettingParentEntry(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.list = self.aweber.load_from_url('/accounts/1/lists/303449')
        self.account = self.aweber.load_from_url('/accounts/1')
        self.custom_field = self.aweber.load_from_url('/accounts/1/lists/303449/custom_fields/1')

    def test_should_be_able_get_parent_entry(self):
        entry = self.list.get_parent_entry()

    def test_list_parent_should_be_account(self):
        entry = self.list.get_parent_entry()
        self.assertEqual(type(entry), AWeberEntry)
        self.assertEqual(entry.type, 'account')

    def test_custom_field_parent_should_be_list(self):
        entry = self.custom_field.get_parent_entry()
        self.assertEqual(type(entry), AWeberEntry)
        self.assertEqual(entry.type, 'list')

    def test_account_parent_should_be_none(self):
        entry = self.account.get_parent_entry()
        self.assertEqual(entry, None)
class TestMovingSubscribers(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        subscriber_url = '/accounts/1/lists/303449/subscribers/1'
        new_list_url = '/accounts/1/lists/505454'
        self.subscriber = self.aweber.load_from_url(subscriber_url)
        self.subscriber._diff['name'] = 'Joe Schmoe'
        self.list = self.aweber.load_from_url(new_list_url)
        self.move_subscriber()

    def move_subscriber(self, **kwargs):
        self.aweber.adapter.requests = []
        self.resp = self.subscriber.move(self.list, **kwargs)
        self.move_req = self.aweber.adapter.requests[0]
        self.get_req = self.aweber.adapter.requests[1]

    def test_returned_true(self):
        self.assertTrue(self.resp)

    def test_should_have_requested_move_with_post(self):
        self.assertEqual(self.move_req['method'], 'POST')

    def test_should_have_requested_move_on_subscriber(self):
        self.assertEqual(self.move_req['url'], self.subscriber.url)

    def test_should_have_requested_move_with_correct_parameters(self):
        expected_params = {'ws.op': 'move', 'list_link': self.list.self_link}
        self.assertEqual(self.move_req['data'], expected_params)

    def test_should_make_two_requests(self):
        self.assertEqual(len(self.aweber.adapter.requests), 2)

    def test_should_refresh_subscriber_resource(self):
        self.assertEqual(self.get_req['method'], 'GET')
        self.assertEqual(self.get_req['url'],
                         '/accounts/1/lists/505454/subscribers/3')

    def test_should_reset_diff(self):
        self.assertEqual(self.subscriber._diff, {})

    def test_should_accept_last_followup_message_number_sent(self):
        self.move_subscriber(last_followup_message_number_sent=999)
        expected_params = {
            'ws.op': 'move',
            'list_link': self.list.self_link,
            'last_followup_message_number_sent': 999
        }

        self.assertEqual(self.move_req['data'], expected_params)
class TestMovingSubscribers(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        subscriber_url = '/accounts/1/lists/303449/subscribers/1'
        new_list_url = '/accounts/1/lists/505454'
        self.subscriber = self.aweber.load_from_url(subscriber_url)
        self.subscriber._diff['name'] = 'Joe Schmoe'
        self.list = self.aweber.load_from_url(new_list_url)
        self.move_subscriber()

    def move_subscriber(self, **kwargs):
        self.aweber.adapter.requests = []
        self.resp = self.subscriber.move(self.list, **kwargs)
        self.move_req = self.aweber.adapter.requests[0]
        self.get_req = self.aweber.adapter.requests[1]

    def test_returned_true(self):
        self.assertTrue(self.resp)

    def test_should_have_requested_move_with_post(self):
        self.assertEqual(self.move_req['method'], 'POST')

    def test_should_have_requested_move_on_subscriber(self):
        self.assertEqual(self.move_req['url'] , self.subscriber.url)

    def test_should_have_requested_move_with_correct_parameters(self):
        expected_params = {'ws.op': 'move', 'list_link': self.list.self_link}
        self.assertEqual(self.move_req['data'], expected_params)

    def test_should_make_two_requests(self):
        self.assertEqual(len(self.aweber.adapter.requests), 2)

    def test_should_refresh_subscriber_resource(self):
        self.assertEqual(self.get_req['method'], 'GET')
        self.assertEqual(self.get_req['url'] ,
            '/accounts/1/lists/505454/subscribers/3')

    def test_should_reset_diff(self):
        self.assertEqual(self.subscriber._diff, {})

    def test_should_accept_last_followup_message_number_sent(self):
        self.move_subscriber(last_followup_message_number_sent=999)
        expected_params = {'ws.op': 'move', 'list_link': self.list.self_link,
                           'last_followup_message_number_sent': 999}

        self.assertEqual(self.move_req['data'], expected_params)
Ejemplo n.º 6
0
class TestCreateMethod(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        url = '/accounts/1/lists/303449/any_collection'
        self.any_collection = self.aweber.load_from_url(url)

        self.aweber.adapter.requests = []
        self.resp = self.any_collection.create(
            a_string='Bob', a_dict={'Color': 'blue'}, a_list=['apple'])
        self.create_req = self.aweber.adapter.requests[0]
        self.get_req = self.aweber.adapter.requests[1]

    def test_should_make_request_with_correct_parameters(self):
        expected_params = {'ws.op': 'create', 'a_string': 'Bob',
                           'a_dict': json.dumps({'Color': 'blue'}),
                           'a_list': json.dumps(['apple'])}

        self.assertEqual(self.create_req['data'], expected_params)

    def test_should_make_two_requests(self):
        self.assertEqual(len(self.aweber.adapter.requests), 2)

    def test_should_have_requested_create_on_cf(self):
        self.assertEqual(self.create_req['url'] , self.any_collection.url)

    def test_should_have_requested_create_with_post(self):
        self.assertEqual(self.create_req['method'], 'POST')

    def test_should_refresh_created_resource(self):
        self.assertEqual(self.get_req['method'], 'GET')
        self.assertEqual(self.get_req['url'] ,
            '/accounts/1/lists/303449/any_collection/1')
class TestAWeberCollection(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.lists = self.aweber.load_from_url('/accounts/1/lists')

    def test_should_be_a_collection(self):
        self.assertTrue(type(self.lists), AWeberCollection)

    def test_should_have_24_lists(self):
        self.assertTrue(len(self.lists), 24)

    def test_should_be_able_get_each_via_offset(self):
        for i in range(0, 23):
            list = self.lists[i]
            self.assertEqual(type(list), AWeberEntry)
            self.assertEqual(list.type, 'list')

    def test_should_be_able_to_iterate_on_collection(self):
        list_number = 0
        for list in self.lists:
            self.assertEqual(type(list), AWeberEntry)
            self.assertEqual(list.type, 'list')
            list_number += 1
        self.assertEqual(list_number, 24)

    def test_should_support_get_by_id(self):
        list = self.lists.get_by_id(303449)
        self.assertEqual(type(list), AWeberEntry)
        self.assertEqual(list.type, 'list')
        self.assertEqual(list.id, 303449)
class TestCreatingCustomFields(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        cf_url = '/accounts/1/lists/303449/custom_fields'
        self.cf = self.aweber.load_from_url(cf_url)

        self.aweber.adapter.requests = []
        self.resp = self.cf.create(name='Wedding Song')
        self.create_req = self.aweber.adapter.requests[0]
        self.get_req = self.aweber.adapter.requests[1]

    def test_returned_true(self):
        self.assertTrue(self.resp)

    def test_should_have_requested_create_with_post(self):
        self.assertEqual(self.create_req['method'], 'POST')

    def test_should_have_requested_create_on_cf(self):
        self.assertEqual(self.create_req['url'], self.cf.url)

    def test_should_have_requested_move_with_correct_parameters(self):
        expected_params = {'ws.op': 'create', 'name': 'Wedding Song'}
        self.assertEqual(self.create_req['data'], expected_params)

    def test_should_make_two_requests(self):
        self.assertEqual(len(self.aweber.adapter.requests), 2)

    def test_should_refresh_cf_resource(self):
        self.assertEqual(self.get_req['method'], 'GET')
        self.assertEqual(self.get_req['url'],
                         '/accounts/1/lists/303449/custom_fields/2')
class SubscriberTestCase(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        sub_url = '/accounts/1/lists/303449/subscribers/1'
        self.subscriber = self.aweber.load_from_url(sub_url)
class TestMovingSubscribers(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI("1", "2")
        self.aweber.adapter = MockAdapter()
        subscriber_url = "/accounts/1/lists/303449/subscribers/1"
        new_list_url = "/accounts/1/lists/505454"
        self.subscriber = self.aweber.load_from_url(subscriber_url)
        self.subscriber._diff["name"] = "Joe Schmoe"
        self.list = self.aweber.load_from_url(new_list_url)
        self.move_subscriber()

    def move_subscriber(self, **kwargs):
        self.aweber.adapter.requests = []
        self.resp = self.subscriber.move(self.list, **kwargs)
        self.move_req = self.aweber.adapter.requests[0]
        self.get_req = self.aweber.adapter.requests[1]

    def test_returned_true(self):
        self.assertTrue(self.resp)

    def test_should_have_requested_move_with_post(self):
        self.assertEqual(self.move_req["method"], "POST")

    def test_should_have_requested_move_on_subscriber(self):
        self.assertEqual(self.move_req["url"], self.subscriber.url)

    def test_should_have_requested_move_with_correct_parameters(self):
        expected_params = {"ws.op": "move", "list_link": self.list.self_link}
        self.assertEqual(self.move_req["data"], expected_params)

    def test_should_make_two_requests(self):
        self.assertEqual(len(self.aweber.adapter.requests), 2)

    def test_should_refresh_subscriber_resource(self):
        self.assertEqual(self.get_req["method"], "GET")
        self.assertEqual(self.get_req["url"], "/accounts/1/lists/505454/subscribers/3")

    def test_should_reset_diff(self):
        self.assertEqual(self.subscriber._diff, {})

    def test_should_accept_last_followup_message_number_sent(self):
        self.move_subscriber(last_followup_message_number_sent=999)
        expected_params = {"ws.op": "move", "list_link": self.list.self_link, "last_followup_message_number_sent": 999}

        self.assertEqual(self.move_req["data"], expected_params)
class TestFailedSubscriberDelete(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        sub_url = '/accounts/1/lists/303449/subscribers/2'
        self.subscriber = self.aweber.load_from_url(sub_url)

    def test_should_raise_exception_when_failing(self):
        self.assertRaises(APIException, self.subscriber.delete)
class TestFailedSubscriberDelete(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI("1", "2")
        self.aweber.adapter = MockAdapter()
        sub_url = "/accounts/1/lists/303449/subscribers/2"
        self.subscriber = self.aweber.load_from_url(sub_url)

    def test_should_raise_exception_when_failing(self):
        self.assertRaises(APIException, self.subscriber.delete)
class TestSavingInvalidSubscriberData(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI("1", "2")
        self.aweber.adapter = MockAdapter()
        sub_url = "/accounts/1/lists/303449/subscribers/2"
        self.subscriber = self.aweber.load_from_url(sub_url)
        self.subscriber.name = "Gary Oldman"
        self.subscriber.custom_fields["New Custom Field"] = "Cookies"

    def test_save_failed(self):
        self.assertRaises(APIException, self.subscriber.save)
class TestSavingInvalidSubscriberData(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        sub_url = '/accounts/1/lists/303449/subscribers/2'
        self.subscriber = self.aweber.load_from_url(sub_url)
        self.subscriber.name = 'Gary Oldman'
        self.subscriber.custom_fields['New Custom Field'] = 'Cookies'

    def test_save_failed(self):
        self.assertRaises(APIException, self.subscriber.save)
Ejemplo n.º 15
0
class TestWhenCreatingCustomFieldsFails(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        cf_url = '/accounts/1/lists/505454/custom_fields'
        self.cf = self.aweber.load_from_url(cf_url)
        self.aweber.adapter.requests = []

    def test_should_raise_exception(self):
        self.assertRaises(APIException, self.cf.create, name='Duplicate Name')
class TestSavingInvalidSubscriberData(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        sub_url = '/accounts/1/lists/303449/subscribers/2'
        self.subscriber = self.aweber.load_from_url(sub_url)
        self.subscriber.name = 'Gary Oldman'
        self.subscriber.custom_fields['New Custom Field'] = 'Cookies'

    def test_save_failed(self):
        self.assertRaises(APIException, self.subscriber.save)
class TestFailedSubscriberDelete(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        sub_url = '/accounts/1/lists/303449/subscribers/2'
        self.subscriber = self.aweber.load_from_url(sub_url)
        self.aweber.adapter.requests = []
        self.response = self.subscriber.delete()
        self.req = self.aweber.adapter.requests[0]

    def test_should_have_failed(self):
        self.assertFalse(self.response)
class TestAWeberAccountEntry(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.account = self.aweber.load_from_url('/accounts/1')

    def test_should_be_an_entry(self):
        self.assertEqual(type(self.account), AWeberEntry)
        self.assertEqual(self.account.type, 'account')

    def test_should_be_able_get_web_forms(self):
        forms = self.account.get_web_forms()
class TestAWeberEntry(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.list = self.aweber.load_from_url('/accounts/1/lists/303449')

    def test_should_be_an_entry(self):
        self.assertEqual(type(self.list), AWeberEntry)
        self.assertEqual(self.list.type, 'list')

    def test_should_have_id(self):
        self.assertEqual(self.list.id, 303449)

    def test_should_have_other_properties(self):
        self.assertEqual(self.list.name, 'default303449')

    def test_should_have_child_collections(self):
        campaigns = self.list.campaigns
        self.assertEqual(type(campaigns), AWeberCollection)

    def test_findSubscribers_should_handle_errors(self):
        account = self.aweber.load_from_url('/accounts/1')
        self.assertRaises(APIException, account.findSubscribers, name='bob')
class TestAWeberEntry(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI("1", "2")
        self.aweber.adapter = MockAdapter()
        self.list = self.aweber.load_from_url("/accounts/1/lists/303449")

    def test_should_be_an_entry(self):
        self.assertEqual(type(self.list), AWeberEntry)
        self.assertEqual(self.list.type, "list")

    def test_should_have_id(self):
        self.assertEqual(self.list.id, 303449)

    def test_should_have_other_properties(self):
        self.assertEqual(self.list.name, "default303449")

    def test_should_have_child_collections(self):
        campaigns = self.list.campaigns
        self.assertEqual(type(campaigns), AWeberCollection)

    def test_findSubscribers_should_handle_errors(self):
        account = self.aweber.load_from_url("/accounts/1")
        self.assertRaises(APIException, account.findSubscribers, name="bob")
Ejemplo n.º 21
0
class TestCreatingCustomFields(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        cf_url = '/accounts/1/lists/303449/custom_fields'
        self.cf = self.aweber.load_from_url(cf_url)

        self.aweber.adapter.requests = []
        self.resp = self.cf.create(name='Wedding Song')
        self.create_req = self.aweber.adapter.requests[0]
        self.get_req = self.aweber.adapter.requests[1]

    def test_should_return_new_resource_entry_object(self):
        assert isinstance(self.resp, AWeberEntry)
        assert self.resp.name == u'COLOR'
        assert self.resp.is_subscriber_updateable == True
        assert self.resp.id == 2
        assert self.resp.url == '/accounts/1/lists/303449/custom_fields/2'
class TestAWeberEntry(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.list = self.aweber.load_from_url('/accounts/1/lists/303449')

    def test_should_be_an_entry(self):
        self.assertEqual(type(self.list), AWeberEntry)
        self.assertEqual(self.list.type, 'list')

    def test_should_have_id(self):
        self.assertEqual(self.list.id, 303449)

    def test_should_have_other_properties(self):
        self.assertEqual(self.list.name, 'default303449')

    def test_should_have_child_collections(self):
        campaigns = self.list.campaigns
        self.assertEqual(type(campaigns), AWeberCollection)
Ejemplo n.º 23
0
def notify():
    message = loads(request.data)
    algorithm = sha1()
    algorithm.update(CLICKBANK)
    dictionary = loads(''.join([
        character for character in AES.new(algorithm.hexdigest(
        )[:32], AES.MODE_CBC, message['iv'].decode('base64')).decrypt(
            message['notification'].decode('base64')).strip()
        if ord(character) >= 32
    ]))
    billing = {}
    try:
        billing = dictionary['customer']['billing']
    except KeyError:
        pass
    email = billing.get('email', '')
    if not email:
        abort(500)
    name = billing.get('fullName', '')
    customer = g.mysql.query(
        models.customer).filter(models.customer.user_email == email).first()
    if not customer:
        customer = models.customer(
            **{
                'display_name': name,
                'user_activation_key': '',
                'user_email': email,
                'user_login': email,
                'user_nicename': name,
                'user_pass': '',
                'user_registered': datetime.now(),
                'user_status': 1,
                'user_url': '',
            })
        aweber = AWeberAPI(
            AWEBER['consumer_key'],
            AWEBER['consumer_secret'],
        ).get_account(
            AWEBER['access_key'],
            AWEBER['access_secret'],
        )
        try:
            aweber.load_from_url('/accounts/%(account_id)s/lists/%(list_id)s' %
                                 {
                                     'account_id': AWEBER['account_id'],
                                     'list_id': AWEBER['list_id'],
                                 }).subscribers.create(**{
                                     'email': email,
                                     'name': name,
                                 })
        except Exception:
            report_exc_info()
            pass
    type = dictionary.get('transactionType', '')
    if type == 'SALE':
        customer.user_status = 1
    if type == 'RFND':
        customer.user_status = 0
    if type == 'CGBK':
        customer.user_status = 0
    if type == 'FEE':
        customer.user_status = 1
    if type == 'BILL':
        customer.user_status = 1
    if type == 'TEST_SALE':
        customer.user_status = 1
    if type == 'TEST_BILL':
        customer.user_status = 1
    if type == 'TEST_RFND':
        customer.user_status = 0
    if type == 'TEST_FEE':
        customer.user_status = 1
    g.mysql.add(customer)
    g.mysql.commit()
    g.mysql.refresh(customer)
    order = models.order(
        **{
            'affiliate': dictionary.get('affiliate', ''),
            'amounts_account': dictionary.get('totalAccountAmount', 0.00),
            'amounts_order': dictionary.get('totalOrderAmount', 0.00),
            'amounts_shipping': dictionary.get('totalShippingAmount', 0.00),
            'amounts_tax': dictionary.get('totalTaxAmount', 0.00),
            'currency': dictionary.get('currency', ''),
            'customer_id': customer.ID,
            'language': dictionary.get('orderLanguage', ''),
            'payment_method': dictionary.get('paymentMethod', ''),
            'receipt': dictionary.get('receipt', ''),
            'role': dictionary.get('role', ''),
            'timestamp': dictionary.get('transactionTime', ''),
            'tracking_codes': dictionary.get('trackingCodes', []),
            'type': type,
            'vendor': dictionary.get('vendor', ''),
            'vendor_variables': dictionary.get('vendorVariables', {}),
        })
    g.mysql.add(order)
    for item in dictionary.get('lineItems', []):
        g.mysql.add(
            models.order_product(
                **{
                    'amount': item.get('accountAmount', 0.00),
                    'item_number': item.get('itemNo', ''),
                    'order': order,
                    'recurring': item.get('recurring', ''),
                    'shippable': item.get('shippable', ''),
                    'title': item.get('productTitle', ''),
                    'url': item.get('downloadUrl', ''),
                }))
    g.mysql.commit()
    return ('', 204)
class AccountTestCase(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.account = self.aweber.load_from_url('/accounts/1')
class AccountTestCase(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.account = self.aweber.load_from_url('/accounts/1')
class SubscriberTestCase(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        sub_url = '/accounts/1/lists/303449/subscribers/1'
        self.subscriber = self.aweber.load_from_url(sub_url)
class AccountTestCase(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI("1", "2")
        self.aweber.adapter = MockAdapter()
        self.account = self.aweber.load_from_url("/accounts/1")
class ListTestCase(TestCase):

    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.list_ = self.aweber.load_from_url('/accounts/1/lists/303449')
class ListTestCase(TestCase):
    def setUp(self):
        self.aweber = AWeberAPI('1', '2')
        self.aweber.adapter = MockAdapter()
        self.list_ = self.aweber.load_from_url('/accounts/1/lists/303449')