Пример #1
0
def test_call():
    """Calling a command should result in an http request."""

    s = SoapMessage(
        endpoint='http://endpoint.example.com',
        method='getData',
        parameters=[('one', '1')],
        http_headers={'user-agent': 'sonos'},
        soap_action='ACTION',
        soap_header="<a_header>data</a_header>",
        namespace="http://namespace.com",
        other_arg=4)

    response = mock.MagicMock()
    response.headers = {}
    response.status_code = 200
    response.content = DUMMY_VALID_RESPONSE
    with mock.patch('requests.post', return_value=response) as fake_post:
        result = s.call()
        assert XML.tostring(result)
        fake_post.assert_called_once_with(
            'http://endpoint.example.com',
            headers={'SOAPACTION': '"ACTION"',
                     'Content-Type': 'text/xml; charset="utf-8"', 'user-agent':
                         'sonos'},
            data=mock.ANY, other_arg=4)
Пример #2
0
def test_call():
    """Calling a command should result in an http request."""

    s = SoapMessage(
        endpoint="http://endpoint.example.com",
        method="getData",
        parameters=[("one", "1")],
        http_headers={"user-agent": "sonos"},
        soap_action="ACTION",
        soap_header="<a_header>data</a_header>",
        namespace="http://namespace.com",
        other_arg=4,
    )

    response = mock.MagicMock()
    response.headers = {}
    response.status_code = 200
    response.content = DUMMY_VALID_RESPONSE
    with mock.patch("requests.post", return_value=response) as fake_post:
        result = s.call()
        assert XML.tostring(result)
        fake_post.assert_called_once_with(
            "http://endpoint.example.com",
            headers={
                "SOAPACTION": '"ACTION"',
                "Content-Type": 'text/xml; charset="utf-8"',
                "user-agent": "sonos",
            },
            data=mock.ANY,
            other_arg=4,
        )
Пример #3
0
def test_prepare_headers():
    """Check http_headers are correctly prepared."""
    s = SoapMessage('endpoint', 'method')
    h = s.prepare_headers({'test1': 'one', 'test2': 'two'}, None)
    assert h == {'Content-Type': 'text/xml; charset="utf-8"',
                 'test2': 'two', 'test1': 'one'}
    h = s.prepare_headers(http_headers={'test1': 'one', 'test2': 'two'},
                          soap_action='soapaction')
    assert h == {'Content-Type': 'text/xml; charset="utf-8"',
                 'test2': 'two', 'test1': 'one',
                 'SOAPACTION': '"soapaction"'}
Пример #4
0
def test_prepare():
    """Test preparation of whole SOAP message."""
    s = SoapMessage(
        endpoint='endpoint',
        method='getData',
        parameters=[('one', '1')],
        http_headers={'timeout': '3'},
        soap_action='ACTION',
        soap_header="<a_header>data</a_header>",
        namespace="http://namespace.com")
    headers, data = s.prepare()
    assert data == '<?xml version="1.0"?><s:Envelope ' \
                   'xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" ' \
                   's:encodingStyle="http://schemas.xmlsoap.org/soap' \
                   '/encoding/"><s:Header><a_header>data</a_header></s' \
                   ':Header><s:Body><getData ' \
                   'xmlns="http://namespace.com"><one>1</one></getData></s' \
                   ':Body></s:Envelope>'
Пример #5
0
def test_prepare():
    """Test preparation of whole SOAP message."""
    s = SoapMessage(
        endpoint="endpoint",
        method="getData",
        parameters=[("one", "1")],
        http_headers={"timeout": "3"},
        soap_action="ACTION",
        soap_header="<a_header>data</a_header>",
        namespace="http://namespace.com",
    )
    headers, data = s.prepare()
    assert (data == '<?xml version="1.0"?><s:Envelope '
            'xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" '
            's:encodingStyle="http://schemas.xmlsoap.org/soap'
            '/encoding/"><s:Header><a_header>data</a_header></s'
            ":Header><s:Body><getData "
            'xmlns="http://namespace.com"><one>1</one></getData></s'
            ":Body></s:Envelope>")
Пример #6
0
def test_init():
    """Tests for initialisation of classes."""
    s = SoapMessage('http://endpoint_url', 'a_method')
    assert s.endpoint == "http://endpoint_url"
    assert s.method == 'a_method'
    assert s.parameters == []
    assert s.soap_action is None
    assert s.http_headers is None
    assert s.soap_header is None
    assert s.namespace is None
    assert s.request_args == {}
Пример #7
0
def test_prepare_headers():
    """Check http_headers are correctly prepared."""
    s = SoapMessage("endpoint", "method")
    h = s.prepare_headers({"test1": "one", "test2": "two"}, None)
    assert h == {
        "Content-Type": 'text/xml; charset="utf-8"',
        "test2": "two",
        "test1": "one",
    }
    h = s.prepare_headers(http_headers={
        "test1": "one",
        "test2": "two"
    },
                          soap_action="soapaction")
    assert h == {
        "Content-Type": 'text/xml; charset="utf-8"',
        "test2": "two",
        "test1": "one",
        "SOAPACTION": '"soapaction"',
    }
Пример #8
0
def test_prepare_soap_header():
    """Check that the SOAP header is correctly wrapped."""
    s = SoapMessage('endpoint', 'method')
    h = s.prepare_soap_header('<a><b></b></a>')
    assert h == "<s:Header><a><b></b></a></s:Header>"
    s = SoapMessage('endpoint', 'method', http_headers={
        'test1': 'one', 'test2': 'two'})
    h = s.prepare_soap_header(None)
    assert h == ''
Пример #9
0
def test_prepare_soap_header():
    """Check that the SOAP header is correctly wrapped."""
    s = SoapMessage("endpoint", "method")
    h = s.prepare_soap_header("<a><b></b></a>")
    assert h == "<s:Header><a><b></b></a></s:Header>"
    s = SoapMessage("endpoint",
                    "method",
                    http_headers={
                        "test1": "one",
                        "test2": "two"
                    })
    h = s.prepare_soap_header(None)
    assert h == ""
Пример #10
0
def test_prepare_soap_body():
    """Check that the SOAP body is correctly prepared."""
    # No params
    s = SoapMessage("endpoint", "method")
    b = s.prepare_soap_body("a_method", [], None)
    assert b == "<a_method></a_method>"
    # One param
    b = s.prepare_soap_body("a_method", [("one", "1")], None)
    assert b == "<a_method><one>1</one></a_method>"
    # Two params
    b = s.prepare_soap_body("a_method", [("one", "1"), ("two", "2")], None)
    assert b == "<a_method><one>1</one><two>2</two></a_method>"

    # And with a namespace

    b = s.prepare_soap_body("a_method", [("one", "1"), ("two", "2")],
                            "http://a_namespace")
    assert (b == "<a_method "
            'xmlns="http://a_namespace"><one>1</one><two>2</two'
            "></a_method>")
Пример #11
0
def test_prepare_soap_body():
    """Check that the SOAP body is correctly prepared."""
    # No params
    s = SoapMessage('endpoint', 'method')
    b = s.prepare_soap_body('a_method', [], None)
    assert b == "<a_method></a_method>"
    # One param
    b = s.prepare_soap_body('a_method', [('one', '1')], None)
    assert b == "<a_method><one>1</one></a_method>"
    # Two params
    b = s.prepare_soap_body('a_method', [
        ('one', '1'), ('two', '2')
    ], None)
    assert b == "<a_method><one>1</one><two>2</two></a_method>"

    # And with a namespace

    b = s.prepare_soap_body('a_method', [('one', '1'),
                                         ('two', '2')], "http://a_namespace")
    assert b == "<a_method " \
                'xmlns="http://a_namespace"><one>1</one><two>2</two' \
                '></a_method>'