mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
150 lines
4.6 KiB
Python
Executable File
150 lines
4.6 KiB
Python
Executable File
# -*- coding: utf-8 -*-
|
|
"""
|
|
stamps.tests
|
|
~~~~~~~~~~~~
|
|
|
|
Stamps.com API tests.
|
|
|
|
:copyright: 2014 by Jonathan Zempel.
|
|
:license: BSD, see LICENSE for more details.
|
|
"""
|
|
|
|
from .config import StampsConfiguration
|
|
from .services import StampsService
|
|
from datetime import date, datetime
|
|
from time import sleep
|
|
from unittest import TestCase
|
|
import logging
|
|
import os
|
|
|
|
|
|
logging.basicConfig()
|
|
logging.getLogger("suds.client").setLevel(logging.DEBUG)
|
|
file_path = os.path.abspath(__file__)
|
|
directory_path = os.path.dirname(file_path)
|
|
file_name = os.path.join(directory_path, "tests.cfg")
|
|
CONFIGURATION = StampsConfiguration(wsdl="testing", file_name=file_name)
|
|
|
|
|
|
def get_rate(service):
|
|
"""Get a test rate.
|
|
|
|
:param service: Instance of the stamps service.
|
|
"""
|
|
ret_val = service.create_shipping()
|
|
ret_val.ShipDate = date.today().isoformat()
|
|
ret_val.FromZIPCode = "94107"
|
|
ret_val.ToZIPCode = "20500"
|
|
ret_val.PackageType = "Package"
|
|
rate = service.get_rates(ret_val)[0]
|
|
ret_val.Amount = rate.Amount
|
|
ret_val.ServiceType = rate.ServiceType
|
|
ret_val.DeliverDays = rate.DeliverDays
|
|
ret_val.DimWeighting = rate.DimWeighting
|
|
ret_val.Zone = rate.Zone
|
|
ret_val.RateCategory = rate.RateCategory
|
|
ret_val.ToState = rate.ToState
|
|
add_on = service.create_add_on()
|
|
add_on.AddOnType = "US-A-DC"
|
|
ret_val.AddOns.AddOnV15.append(add_on)
|
|
|
|
return ret_val
|
|
|
|
|
|
def get_from_address(service):
|
|
"""Get a test 'from' address.
|
|
|
|
:param service: Instance of the stamps service.
|
|
"""
|
|
address = service.create_address()
|
|
address.FullName = "Pickwick & Weller"
|
|
address.Address1 = "300 Brannan St."
|
|
address.Address2 = "Suite 405"
|
|
address.City = "San Francisco"
|
|
address.State = "CA"
|
|
|
|
return service.get_address(address).Address
|
|
|
|
|
|
def get_to_address(service):
|
|
"""Get a test 'to' address.
|
|
|
|
:param service: Instance of the stamps service.
|
|
"""
|
|
address = service.create_address()
|
|
address.FullName = "POTUS"
|
|
address.Address1 = "1600 Pennsylvania Avenue NW"
|
|
address.City = "Washington"
|
|
address.State = "DC"
|
|
|
|
return service.get_address(address).Address
|
|
|
|
|
|
class StampsTestCase(TestCase):
|
|
|
|
initialized = False
|
|
|
|
def setUp(self):
|
|
if not StampsTestCase.initialized:
|
|
self.service = StampsService(CONFIGURATION)
|
|
StampsTestCase.initalized = True
|
|
|
|
def _test_0(self):
|
|
"""Test account registration.
|
|
"""
|
|
registration = self.service.create_registration()
|
|
type = self.service.create("CodewordType")
|
|
registration.Codeword1Type = type.Last4SocialSecurityNumber
|
|
registration.Codeword1 = 1234
|
|
registration.Codeword2Type = type.Last4DriversLicense
|
|
registration.Codeword2 = 1234
|
|
registration.PhysicalAddress = get_from_address(self.service)
|
|
registration.MachineInfo.IPAddress = "127.0.0.1"
|
|
registration.Email = "sws-support@stamps.com"
|
|
type = self.service.create("AccountType")
|
|
registration.AccountType = type.OfficeBasedBusiness
|
|
result = self.service.register_account(registration)
|
|
print result
|
|
|
|
def _test_1(self):
|
|
"""Test postage purchase.
|
|
"""
|
|
transaction_id = datetime.now().isoformat()
|
|
result = self.service.add_postage(10, transaction_id=transaction_id)
|
|
transaction_id = result.TransactionID
|
|
status = self.service.create_purchase_status()
|
|
seconds = 4
|
|
|
|
while result.PurchaseStatus in (status.Pending, status.Processing):
|
|
seconds = 32 if seconds * 2 >= 32 else seconds * 2
|
|
print "Waiting {0:d} seconds to get status...".format(seconds)
|
|
sleep(seconds)
|
|
result = self.service.get_postage_status(transaction_id)
|
|
|
|
print result
|
|
|
|
def test_2(self):
|
|
"""Test label generation.
|
|
"""
|
|
self.service = StampsService(CONFIGURATION)
|
|
rate = get_rate(self.service)
|
|
from_address = get_from_address(self.service)
|
|
to_address = get_to_address(self.service)
|
|
transaction_id = datetime.now().isoformat()
|
|
label = self.service.get_label(from_address, to_address, rate,
|
|
transaction_id=transaction_id)
|
|
self.service.get_tracking(label.StampsTxID)
|
|
self.service.get_tracking(label.TrackingNumber)
|
|
self.service.remove_label(label.StampsTxID)
|
|
print label
|
|
|
|
def test_3(self):
|
|
"""Test authentication retry.
|
|
"""
|
|
self.service.get_account()
|
|
authenticator = self.service.plugin.authenticator
|
|
self.service.get_account()
|
|
self.service.plugin.authenticator = authenticator
|
|
result = self.service.get_account()
|
|
print result
|