@@ -1313,3 +1313,122 @@ def test_import_no_location():
1313
1313
document = wsdl .Document (
1314
1314
wsdl_content , transport , "https://tests.python-zeep.org/content.wsdl"
1315
1315
)
1316
+
1317
+
1318
+ BASE_WSDL = """
1319
+ <?xml version="1.0"?>
1320
+ <wsdl:definitions
1321
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
1322
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
1323
+ xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
1324
+ xmlns:tns="http://tests.python-zeep.org/xsd-main"
1325
+ xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
1326
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
1327
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
1328
+ targetNamespace="http://tests.python-zeep.org/xsd-main">
1329
+
1330
+ {policy}
1331
+
1332
+ <wsdl:types>
1333
+ <xsd:schema
1334
+ targetNamespace="http://tests.python-zeep.org/xsd-main"
1335
+ xmlns:tns="http://tests.python-zeep.org/xsd-main">
1336
+ <xsd:element name="input" type="xsd:string"/>
1337
+ </xsd:schema>
1338
+ </wsdl:types>
1339
+
1340
+ <wsdl:message name="message-1">
1341
+ <wsdl:part name="response" element="tns:input"/>
1342
+ </wsdl:message>
1343
+
1344
+ <wsdl:portType name="TestPortType">
1345
+ <wsdl:operation name="TestOperation1">
1346
+ <wsdl:input message="message-1"/>
1347
+ </wsdl:operation>
1348
+ </wsdl:portType>
1349
+
1350
+ <wsdl:binding name="TestBinding" type="tns:TestPortType">
1351
+ <wsp:PolicyReference URI="#TestBinding"/>
1352
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
1353
+ <wsdl:operation name="TestOperation1">
1354
+ <soap:operation soapAction=""/>
1355
+ </wsdl:operation>
1356
+ </wsdl:binding>
1357
+
1358
+ <wsdl:service name="TestService">
1359
+ <wsdl:documentation>Test service</wsdl:documentation>
1360
+ <wsdl:port name="TestPortType" binding="tns:TestBinding">
1361
+ <soap:address location="https://tests.python-zeep.org/tests"/>
1362
+ </wsdl:port>
1363
+ </wsdl:service>
1364
+ </wsdl:definitions>
1365
+ """
1366
+
1367
+
1368
+ def test_parse_bindings_signed_unknown ():
1369
+ policy = """
1370
+ <wsp:Policy wsu:Id="TestBinding_policy">
1371
+ <sp:SignedParts>
1372
+ <sp:Other/>
1373
+ </sp:SignedParts>
1374
+ </wsp:Policy>
1375
+ """
1376
+ content = StringIO (BASE_WSDL .format (policy = policy ).strip ())
1377
+ document = wsdl .Document (content , None )
1378
+ assert document .bindings [
1379
+ "{http://tests.python-zeep.org/xsd-main}TestBinding"
1380
+ ].signatures == {"body" : False , "everything" : False , "header" : []}
1381
+
1382
+ def test_parse_bindings_signed_body ():
1383
+ policy = """
1384
+ <wsp:Policy wsu:Id="TestBinding_policy">
1385
+ <sp:SignedParts>
1386
+ <sp:Body/>
1387
+ </sp:SignedParts>
1388
+ </wsp:Policy>
1389
+ """
1390
+ content = StringIO (BASE_WSDL .format (policy = policy ).strip ())
1391
+ document = wsdl .Document (content , None )
1392
+ assert document .bindings [
1393
+ "{http://tests.python-zeep.org/xsd-main}TestBinding"
1394
+ ].signatures == {"body" : True , "everything" : False , "header" : []}
1395
+
1396
+
1397
+ def test_parse_bindings_signed_everything ():
1398
+ policy = """
1399
+ <wsp:Policy wsu:Id="TestBinding_policy">
1400
+ <sp:SignedParts/>
1401
+ </wsp:Policy>
1402
+ """
1403
+ content = StringIO (BASE_WSDL .format (policy = policy ).strip ())
1404
+ document = wsdl .Document (content , None )
1405
+ assert document .bindings [
1406
+ "{http://tests.python-zeep.org/xsd-main}TestBinding"
1407
+ ].signatures == {"body" : True , "everything" : True , "header" : []}
1408
+
1409
+
1410
+ def test_parse_bindings_signed_headers ():
1411
+ policy = """
1412
+ <wsp:Policy wsu:Id="TestBinding_policy">
1413
+ <sp:SignedParts>
1414
+ <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/>
1415
+ </sp:SignedParts>
1416
+ </wsp:Policy>
1417
+ """
1418
+ content = StringIO (BASE_WSDL .format (policy = policy ).strip ())
1419
+ document = wsdl .Document (content , None )
1420
+ assert document .bindings [
1421
+ "{http://tests.python-zeep.org/xsd-main}TestBinding"
1422
+ ].signatures == {
1423
+ "body" : False ,
1424
+ "everything" : False ,
1425
+ "header" : [{"Name" : "To" , "Namespace" : "http://www.w3.org/2005/08/addressing" }],
1426
+ }
1427
+
1428
+
1429
+ def test_parse_bindings_signed_nothing ():
1430
+ content = StringIO (BASE_WSDL .format (policy = "" ).strip ())
1431
+ document = wsdl .Document (content , None )
1432
+ assert document .bindings [
1433
+ "{http://tests.python-zeep.org/xsd-main}TestBinding"
1434
+ ].signatures == {"body" : False , "everything" : False , "header" : []}
0 commit comments