7792d12018-02-27Karl Gustav Sterneberg inherit "etc/test/tests/pike_test_common.pike"; // Necessary for stuff in testsuite.h to work... #include <testsuite.h>
45f40f2018-04-13Martin Karlgren #ifdef DAV_DEBUG #define DAV_WERROR(X...) werror(X) #else /* !DAV_DEBUG */ #define DAV_WERROR(X...) #endif /* DAV_DEBUG */
7792d12018-02-27Karl Gustav Sterneberg array(Standards.URI) get_test_urls(Configuration conf, string webdav_mount_point, string|void username, string|void password) { array(Standards.URI) uris = ({}); // Run the suite once with every http protocol modules in the conf. // This allows for testing such things as sub-path mounted sites etc. foreach(conf->registered_urls, string full_url) { mapping(string:string|Configuration|array(Protocol)) port_info = roxen.urls[full_url];
b3f65e2018-06-13Henrik Grubbström (Grubba)  DAV_WERROR("full url: %O\n" "port_info: %O\n", full_url, port_info);
7792d12018-02-27Karl Gustav Sterneberg  if (!test_true(mappingp, port_info)) continue; array(Protocol) ports = port_info->ports; if (!test_true(arrayp, ports)) continue; foreach(ports, Protocol prot) { if (!test_true(stringp, prot->prot_name)) continue; if (prot->prot_name != "http") continue; if (prot->bound != 1) continue; if (!test_true(mappingp, prot->urls)) continue;
b3f65e2018-06-13Henrik Grubbström (Grubba)  DAV_WERROR("prot: %O\n" "prot->urls: %O\n", prot, prot->urls);
7792d12018-02-27Karl Gustav Sterneberg  // Strip the fragment from the full_url. string url = (full_url/"#")[0]; mapping(string:mixed) url_data = prot->urls[url]; if (!test_true(mappingp, url_data)) continue;
b3f65e2018-06-13Henrik Grubbström (Grubba)  // NB: url_data is typically the same mapping as port_info.
45f40f2018-04-13Martin Karlgren  DAV_WERROR("url data: %O\n", url_data);
7792d12018-02-27Karl Gustav Sterneberg  test_true(`==, url_data->conf, conf); test_true(stringp, url_data->hostname); test_true(stringp, url_data->path || "/"); Standards.URI url_uri = Standards.URI(url, "http://*/"); Standards.URI base_uri = Standards.URI( Stdio.append_path(url_data->path || "/", webdav_mount_point), url_uri); base_uri->port = prot->port;
c418212018-06-14Henrik Grubbström (Grubba)  base_uri->host = prot->ip || "0.0.0.0";
7792d12018-02-27Karl Gustav Sterneberg  if (username) { base_uri->user = username; base_uri->password = password; } uris += ({base_uri}); } } return uris; }