71 lines
1.8 KiB
Python
71 lines
1.8 KiB
Python
# encoding=utf8
|
|
|
|
import unittest
|
|
|
|
from wsme import WSRoot
|
|
from wsme.protocol import getprotocol, CallContext, Protocol
|
|
import wsme.protocol
|
|
|
|
|
|
class DummyProtocol(Protocol):
|
|
name = 'dummy'
|
|
content_types = ['', None]
|
|
|
|
def __init__(self):
|
|
self.hits = 0
|
|
|
|
def accept(self, req):
|
|
return True
|
|
|
|
def iter_calls(self, req):
|
|
yield CallContext(req)
|
|
|
|
def extract_path(self, context):
|
|
return ['touch']
|
|
|
|
def read_arguments(self, context):
|
|
self.lastreq = context.request
|
|
self.hits += 1
|
|
return {}
|
|
|
|
def encode_result(self, context, result):
|
|
return str(result)
|
|
|
|
def encode_error(self, context, infos):
|
|
return str(infos)
|
|
|
|
|
|
def test_getprotocol():
|
|
try:
|
|
getprotocol('invalid')
|
|
assert False, "ValueError was not raised"
|
|
except ValueError:
|
|
pass
|
|
|
|
|
|
class TestProtocols(unittest.TestCase):
|
|
def test_register_protocol(self):
|
|
wsme.protocol.register_protocol(DummyProtocol)
|
|
assert wsme.protocol.registered_protocols['dummy'] == DummyProtocol
|
|
|
|
r = WSRoot()
|
|
assert len(r.protocols) == 0
|
|
|
|
r.addprotocol('dummy')
|
|
assert len(r.protocols) == 1
|
|
assert r.protocols[0].__class__ == DummyProtocol
|
|
|
|
r = WSRoot(['dummy'])
|
|
assert len(r.protocols) == 1
|
|
assert r.protocols[0].__class__ == DummyProtocol
|
|
|
|
def test_Protocol(self):
|
|
p = wsme.protocol.Protocol()
|
|
assert p.iter_calls(None) is None
|
|
assert p.extract_path(None) is None
|
|
assert p.read_arguments(None) is None
|
|
assert p.encode_result(None, None) is None
|
|
assert p.encode_sample_value(None, None) == ('none', 'N/A')
|
|
assert p.encode_sample_params(None) == ('none', 'N/A')
|
|
assert p.encode_sample_result(None, None) == ('none', 'N/A')
|