1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
try:
import urlparse as parse
except ImportError:
from urllib import parse
import mock
import pytest
import requests
from cloudprint.cloudprint import (
CloudPrintProxy,
PRINT_CLOUD_URL,
)
@pytest.fixture(params=('', 'prefix'))
def proxy(request):
auth = mock.Mock(session=requests)
proxy = CloudPrintProxy(auth)
proxy.site = request.param
return proxy
@pytest.fixture
def add_site(proxy):
def add_site(name):
if not proxy.site:
return name
else:
return '{0}-{1}'.format(proxy.site, name)
return add_site
@pytest.fixture
def remove_site(proxy):
def remove_site(name):
if not proxy.site:
return name
else:
return name.replace(proxy.site + '-', '')
return remove_site
def test_get_printers(proxy, requests, remove_site):
requests.post(
PRINT_CLOUD_URL + 'list',
json={
'printers': [
{
'id': '1',
'name': 'printer 1',
},
{
'id': '2',
'name': 'printer 2',
},
]
},
)
printers = proxy.get_printers()
assert printers[0].id == '1'
assert remove_site(printers[0].name) == 'printer 1'
assert printers[1].id == '2'
assert remove_site(printers[1].name) == 'printer 2'
def test_delete_printer(proxy, requests):
requests.post(
PRINT_CLOUD_URL + 'delete',
status_code=200,
)
proxy.delete_printer('1')
data = parse.parse_qs(requests.request_history[0].text)
assert data['printerid'][0] == '1'
def test_add_printer(proxy, requests, add_site):
requests.post(
PRINT_CLOUD_URL + 'register',
status_code=200,
)
proxy.add_printer(
name='printer_name',
description='printer_description',
ppd='printer_ppd',
)
data = parse.parse_qs(requests.request_history[0].text)
assert data['printer'][0] == add_site('printer_name')
assert data['description'][0] == 'printer_description'
assert data['capabilities'][0] == 'printer_ppd'
assert data['defaults'][0] == 'printer_ppd'
def test_update_printer(proxy, requests, add_site):
requests.post(
PRINT_CLOUD_URL + 'update',
status_code=200,
)
proxy.update_printer(
printer_id='1',
name='printer_name',
description='printer_description',
ppd='printer_ppd',
)
data = parse.parse_qs(requests.request_history[0].text)
assert data['printerid'][0] == '1'
assert data['printer'][0] == add_site('printer_name')
assert data['description'][0] == 'printer_description'
assert data['capabilities'][0] == 'printer_ppd'
assert data['defaults'][0] == 'printer_ppd'
def test_get_jobs(proxy, requests):
requests.post(
PRINT_CLOUD_URL + 'fetch',
json={
'jobs': [
'job1',
'job2',
]
}
)
jobs = proxy.get_jobs(
printer_id='1',
)
data = parse.parse_qs(requests.request_history[0].text)
assert data['printerid'][0] == '1'
assert jobs == ['job1', 'job2']
def test_finish_job(proxy, requests):
requests.post(
PRINT_CLOUD_URL + 'control',
json={},
)
proxy.finish_job(
job_id='1',
)
data = parse.parse_qs(requests.request_history[0].text)
assert data['jobid'][0] == '1'
assert data['status'][0] == 'DONE'
def test_fail_job(proxy, requests):
requests.post(
PRINT_CLOUD_URL + 'control',
json={},
)
proxy.fail_job(
job_id='1',
)
data = parse.parse_qs(requests.request_history[0].text)
assert data['jobid'][0] == '1'
assert data['status'][0] == 'ERROR'
|