Owen Rudge : wsdapi/tests: Expand ProbeHandler tests.
Alexandre Julliard
julliard at winehq.org
Wed May 30 15:30:50 CDT 2018
Module: wine
Branch: master
Commit: e207300b4443f551ea1dd368b0d51d579749275a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=e207300b4443f551ea1dd368b0d51d579749275a
Author: Owen Rudge <orudge at codeweavers.com>
Date: Tue May 29 23:14:51 2018 +0100
wsdapi/tests: Expand ProbeHandler tests.
Signed-off-by: Owen Rudge <orudge at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wsdapi/tests/discovery.c | 113 ++++++++++++++++++++++++++++++++++++++----
1 file changed, 102 insertions(+), 11 deletions(-)
diff --git a/dlls/wsdapi/tests/discovery.c b/dlls/wsdapi/tests/discovery.c
index e73ee77..cfdd41f 100644
--- a/dlls/wsdapi/tests/discovery.c
+++ b/dlls/wsdapi/tests/discovery.c
@@ -47,8 +47,27 @@ static const char testProbeMessage[] = "<?xml version=\"1.0\" encoding=\"utf-8\"
"xmlns:wsd=\"http://schemas.xmlsoap.org/ws/2005/04/discovery\" "
"xmlns:grog=\"http://more.tests/\"><soap:Header><wsa:To>urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:To>"
"<wsa:Action>http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</wsa:Action>"
- "<wsa:MessageID>urn:uuid:%s</wsa:MessageID></soap:Header>"
- "<soap:Body><wsd:Probe><wsd:Types>grog:Cider</wsd:Types></wsd:Probe></soap:Body></soap:Envelope>";
+ "<wsa:MessageID>urn:uuid:%s</wsa:MessageID>"
+ "<grog:Perry>ExtraInfo</grog:Perry></soap:Header>"
+ "<soap:Body><wsd:Probe><wsd:Types>grog:Cider</wsd:Types><grog:Lager>MoreInfo</grog:Lager></wsd:Probe></soap:Body></soap:Envelope>";
+
+static const WCHAR discoveryTo[] = {
+ 'u','r','n',':',
+ 's','c','h','e','m','a','s','-','x','m','l','s','o','a','p','-','o','r','g',':',
+ 'w','s',':','2','0','0','5',':','0','4',':',
+ 'd','i','s','c','o','v','e','r','y', 0 };
+
+static const WCHAR actionProbe[] = {
+ 'h','t','t','p',':','/','/',
+ 's','c','h','e','m','a','s','.','x','m','l','s','o','a','p','.','o','r','g','/',
+ 'w','s','/','2','0','0','5','/','0','4','/',
+ 'd','i','s','c','o','v','e','r','y','/',
+ 'P','r','o','b','e', 0 };
+
+static const WCHAR uri_more_tests[] = { 'h','t','t','p',':','/','/','m','o','r','e','.','t','e','s','t','s','/', 0 };
+static const WCHAR uri_more_tests_no_slash[] = { 'h','t','t','p',':','/','/','m','o','r','e','.','t','e','s','t','s', 0 };
+static const WCHAR prefix_grog[] = { 'g','r','o','g', 0 };
+static const WCHAR name_cider[] = { 'C','i','d','e','r', 0 };
static HANDLE probe_event = NULL;
static UUID probe_message_id;
@@ -449,6 +468,53 @@ static ULONG WINAPI IWSDiscoveryPublisherNotifyImpl_Release(IWSDiscoveryPublishe
return ref;
}
+static void verify_wsdxml_name(const char *debug_prefix, WSDXML_NAME *name, LPCWSTR uri, LPCWSTR prefix,
+ LPCWSTR local_name)
+{
+ ok(name != NULL, "%s: name == NULL\n", debug_prefix);
+ if (name == NULL) return;
+
+ ok(name->LocalName != NULL && lstrcmpW(name->LocalName, local_name) == 0,
+ "%s: Local name = '%s'\n", debug_prefix, wine_dbgstr_w(name->LocalName));
+
+ ok(name->Space != NULL, "%s: Space == NULL\n", debug_prefix);
+ if (name->Space == NULL) return;
+
+ ok(name->Space->Uri != NULL && lstrcmpW(name->Space->Uri, uri) == 0,
+ "%s: URI == '%s'\n", debug_prefix, wine_dbgstr_w(name->Space->Uri));
+ ok(name->Space->PreferredPrefix != NULL && lstrcmpW(name->Space->PreferredPrefix, prefix) == 0,
+ "%s: Prefix = '%s'\n", debug_prefix, wine_dbgstr_w(name->Space->PreferredPrefix));
+}
+
+static void verify_wsdxml_any_text(const char *debug_prefix, WSDXML_ELEMENT *any, LPCWSTR uri, LPCWSTR prefix,
+ LPCWSTR local_name, LPCWSTR value)
+{
+ WSDXML_TEXT *child;
+
+ ok(any != NULL, "%s: any == NULL\n", debug_prefix);
+ if (any == NULL) return;
+
+ child = (WSDXML_TEXT *) any->FirstChild;
+
+ ok(any->Node.Type == ElementType, "%s: Node type == %d\n", debug_prefix, any->Node.Type);
+ ok(any->Node.Parent == NULL, "%s: Parent == %p\n", debug_prefix, any->Node.Parent);
+ ok(any->Node.Next == NULL, "%s: Next == %p\n", debug_prefix, any->Node.Next);
+ verify_wsdxml_name(debug_prefix, any->Name, uri, prefix, local_name);
+
+ ok(child != NULL, "%s: First child == NULL\n", debug_prefix);
+
+ if (child != NULL)
+ {
+ ok(child->Node.Type == TextType, "%s: Node type == %d\n", debug_prefix, child->Node.Type);
+ ok(child->Node.Parent == any, "%s: Parent == %p\n", debug_prefix, child->Node.Parent);
+ ok(child->Node.Next == NULL, "%s: Next == %p\n", debug_prefix, child->Node.Next);
+
+ if (child->Node.Type == TextType)
+ ok(child->Text != NULL && lstrcmpW(child->Text, value) == 0,
+ "%s: Text == '%s'\n", debug_prefix, wine_dbgstr_w(child->Text));
+ }
+}
+
static HRESULT WINAPI IWSDiscoveryPublisherNotifyImpl_ProbeHandler(IWSDiscoveryPublisherNotify *This, const WSD_SOAP_MESSAGE *pSoap, IWSDMessageParameters *pMessageParameters)
{
trace("IWSDiscoveryPublisherNotifyImpl_ProbeHandler called (%p, %p, %p)\n", This, pSoap, pMessageParameters);
@@ -464,8 +530,15 @@ static HRESULT WINAPI IWSDiscoveryPublisherNotifyImpl_ProbeHandler(IWSDiscoveryP
if (pSoap != NULL)
{
+ static const WCHAR perry[] = {'P','e','r','r','y',0};
+ static const WCHAR extra_info[] = {'E','x','t','r','a','I','n','f','o',0};
+ WSD_PROBE *probe_msg = (WSD_PROBE *) pSoap->Body;
+
ok(pSoap->Body != NULL, "pSoap->Body == NULL\n");
- ok(pSoap->Header.To != NULL, "pSoap->Header.To == NULL\n");
+ ok(pSoap->Header.To != NULL && lstrcmpW(pSoap->Header.To, discoveryTo) == 0,
+ "pSoap->Header.To == '%s'\n", wine_dbgstr_w(pSoap->Header.To));
+ ok(pSoap->Header.Action != NULL && lstrcmpW(pSoap->Header.Action, actionProbe) == 0,
+ "pSoap->Header.Action == '%s'\n", wine_dbgstr_w(pSoap->Header.Action));
ok(pSoap->Header.MessageID != NULL, "pSoap->Header.MessageID == NULL");
@@ -482,6 +555,27 @@ static HRESULT WINAPI IWSDiscoveryPublisherNotifyImpl_ProbeHandler(IWSDiscoveryP
ignore it and wait for another message. */
if ((ret != RPC_S_OK) || (UuidEqual(&uuid, &probe_message_id, &ret) == FALSE)) return S_OK;
}
+
+ verify_wsdxml_any_text("pSoap->Header.AnyHeaders", pSoap->Header.AnyHeaders, uri_more_tests_no_slash,
+ prefix_grog, perry, extra_info);
+
+ if (probe_msg != NULL)
+ {
+ static const WCHAR lager[] = {'L','a','g','e','r',0};
+ static const WCHAR more_info[] = {'M','o','r','e','I','n','f','o',0};
+
+ ok(probe_msg->Types != NULL, "Probe message Types == NULL\n");
+
+ if (probe_msg->Types != NULL)
+ {
+ verify_wsdxml_name("probe_msg->Types->Element", probe_msg->Types->Element, uri_more_tests_no_slash,
+ prefix_grog, name_cider);
+ ok(probe_msg->Types->Next == NULL, "probe_msg->Types->Next == %p\n", probe_msg->Types->Next);
+ }
+
+ ok(probe_msg->Scopes == NULL, "Probe message Scopes != NULL\n");
+ verify_wsdxml_any_text("probe_msg->Any", probe_msg->Any, uri_more_tests_no_slash, prefix_grog, lager, more_info);
+ }
}
SetEvent(probe_event);
@@ -628,15 +722,12 @@ static void Publish_tests(void)
WSDXML_NAME header_any_name, another_name;
WSDXML_NAMESPACE ns, ns2;
WCHAR header_any_name_text[] = {'B','e','e','r',0};
- WCHAR another_name_text[] = {'C','i','d','e','r',0};
static const WCHAR header_any_text[] = {'P','u','b','l','i','s','h','T','e','s','t',0};
static const WCHAR body_any_text[] = {'B','o','d','y','T','e','s','t',0};
static const WCHAR endpoint_any_text[] = {'E','n','d','P','T','e','s','t',0};
static const WCHAR ref_param_any_text[] = {'R','e','f','P','T','e','s','t',0};
static const WCHAR uri[] = {'h','t','t','p',':','/','/','w','i','n','e','.','t','e','s','t','/',0};
static const WCHAR prefix[] = {'w','i','n','e',0};
- static const WCHAR uri2[] = {'h','t','t','p',':','/','/','m','o','r','e','.','t','e','s','t','s','/',0};
- static const WCHAR prefix2[] = {'g','r','o','g',0};
static const WCHAR uri3[] = {'h','t','t','p',':','/','/','t','h','i','r','d','.','u','r','l','/',0};
WSD_NAME_LIST types_list;
WSD_URI_LIST scopes_list, xaddrs_list;
@@ -722,10 +813,10 @@ static void Publish_tests(void)
ok(rc == S_OK, "WSDXMLBuildAnyForSingleElement failed with %08x\n", rc);
/* Create types list */
- ns2.Uri = uri2;
- ns2.PreferredPrefix = prefix2;
+ ns2.Uri = uri_more_tests;
+ ns2.PreferredPrefix = prefix_grog;
- another_name.LocalName = another_name_text;
+ another_name.LocalName = (WCHAR *) name_cider;
another_name.Space = &ns2;
types_list.Next = malloc(sizeof(WSD_NAME_LIST));
@@ -739,10 +830,10 @@ static void Publish_tests(void)
scopes_list.Element = uri;
scopes_list.Next->Next = NULL;
- scopes_list.Next->Element = uri2;
+ scopes_list.Next->Element = uri_more_tests;
xaddrs_list.Next = malloc(sizeof(WSD_URI_LIST));
- xaddrs_list.Element = uri2;
+ xaddrs_list.Element = uri_more_tests;
xaddrs_list.Next->Next = NULL;
xaddrs_list.Next->Element = uri3;
More information about the wine-cvs
mailing list