mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[MOV] delivery_stamps: from hibou-suite-enterprise:12.0
This commit is contained in:
149
delivery_stamps/models/api/tests.py
Executable file
149
delivery_stamps/models/api/tests.py
Executable file
@@ -0,0 +1,149 @@
|
||||
# -*- 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
|
||||
Reference in New Issue
Block a user