public void TokenizeRequestPathTests() { AssertAreDeepEqual(HttpParsingHelper.TokenizeRequestPath("a/bb/ccc/dddd"), "a", "bb", "ccc", "dddd"); AssertAreDeepEqual(HttpParsingHelper.TokenizeRequestPath("/a/bb/ccc/dddd"), "a", "bb", "ccc", "dddd"); AssertAreDeepEqual(HttpParsingHelper.TokenizeRequestPath("/a/bb/ccc/dddd/"), "a", "bb", "ccc", "dddd", string.Empty); AssertAreDeepEqual(HttpParsingHelper.TokenizeRequestPath("/a/bb/ccc/dddd?ee"), "a", "bb", "ccc", "dddd"); AssertAreDeepEqual(HttpParsingHelper.TokenizeRequestPath("/a/bb/ccc/dddd/?ee"), "a", "bb", "ccc", "dddd", string.Empty); AssertAreDeepEqual(HttpParsingHelper.TokenizeRequestPath("/a/bb/ccc/dddd#ee"), "a", "bb", "ccc", "dddd"); AssertAreDeepEqual(HttpParsingHelper.TokenizeRequestPath("/a/bb/ccc/dddd?ee/ff"), "a", "bb", "ccc", "dddd"); }
public void ParseResourcePathTests() { AssertRequestPathIsValid(HttpParsingHelper.ParseResourcePath("a/bb/ccc"), "a", "bb", "ccc", null); AssertRequestPathIsValid(HttpParsingHelper.ParseResourcePath("a/bb/ccc/"), "a", "bb", "ccc", string.Empty); AssertRequestPathIsValid(HttpParsingHelper.ParseResourcePath("/a/bb/ccc/dddd"), "a", "bb", "ccc", "dddd"); AssertRequestPathIsValid(HttpParsingHelper.ParseResourcePath("/a/bb/ccc/dddd/"), "a", "bb", "ccc", "dddd"); AssertRequestPathIsValid(HttpParsingHelper.ParseResourcePath("/a/bb/a/dddd"), "a", "bb", "a", "dddd"); AssertRequestPathIsValid(HttpParsingHelper.ParseResourcePath("/a/bb/ccc/dddd?ee"), "a", "bb", "ccc", "dddd"); AssertRequestPathIsValid(HttpParsingHelper.ParseResourcePath("/a/bb/ccc#ee/ff"), "a", "bb", "ccc", null); AssertRequestPathIsValid(HttpParsingHelper.ParseResourcePath("/a/bb/ccc/?ee/ff"), "a", "bb", "ccc", string.Empty); }
public void ExtractQuryParametersTests() { Assert.IsNull(HttpParsingHelper.ExtractQuryParameters("a/bb/ccc/dddd")); Assert.IsNull(HttpParsingHelper.ExtractQuryParameters("a/bb/ccc/dddd?")); Assert.IsNull(HttpParsingHelper.ExtractQuryParameters("a/bb/ccc/dddd?#x=y")); AssertQueryParametersAreValid(HttpParsingHelper.ExtractQuryParameters("a/bb/ccc/dddd?x"), "x", null); AssertQueryParametersAreValid(HttpParsingHelper.ExtractQuryParameters("a/bb/ccc/dddd?x#y=z"), "x", null); AssertQueryParametersAreValid(HttpParsingHelper.ExtractQuryParameters("/a/bb/ccc/dddd?x=&w=z"), "x", string.Empty, "w", "z"); AssertQueryParametersAreValid(HttpParsingHelper.ExtractQuryParameters("/a/bb/ccc/dddd?x=y&w=z"), "x", "y", "w", "z"); AssertQueryParametersAreValid(HttpParsingHelper.ExtractQuryParameters("/a/bb/ccc/dddd?x=y&w=z#0=1"), "x", "y", "w", "z"); AssertQueryParametersAreValid(HttpParsingHelper.ExtractQuryParameters("/a/bb/ccc/dddd/?x=y&w=z#0=1"), "x", "y", "w", "z"); }
public void SplitTests() { var delimiters = new char[] { '/' }; AssertAreDeepEqual(HttpParsingHelper.Split("a/bb/ccc/dddd", delimiters, 0, -1), "a", "bb", "ccc", "dddd"); AssertAreDeepEqual(HttpParsingHelper.Split("/a/bb/ccc/dddd", delimiters, 0, -1), string.Empty, "a", "bb", "ccc", "dddd"); AssertAreDeepEqual(HttpParsingHelper.Split("/a/bb/ccc/dddd", delimiters, 1, -1), "a", "bb", "ccc", "dddd"); AssertAreDeepEqual(HttpParsingHelper.Split("/a/bb/ccc/dddd/", delimiters, 1, -1), "a", "bb", "ccc", "dddd", string.Empty); AssertAreDeepEqual(HttpParsingHelper.Split("/a/bb/ccc/dddd?ee", delimiters, 1, 14), "a", "bb", "ccc", "dddd"); AssertAreDeepEqual(HttpParsingHelper.Split("/a/bb/ccc/dddd", delimiters, 3, 8), "bb", "cc"); AssertAreDeepEqual(HttpParsingHelper.Split("/a//bb//ccc//dddd/", delimiters, 1, -1), "a", string.Empty, "bb", string.Empty, "ccc", string.Empty, "dddd", string.Empty); }
private void DocumentDbHttpParserConvertsValidDependencies( string operation, string verb, string url, Dictionary <string, string> properties, string resultCode) { Uri parsedUrl = new Uri(url); // Parse with verb var d = new DependencyTelemetry( dependencyTypeName: RemoteDependencyConstants.HTTP, target: parsedUrl.Host, dependencyName: verb + " " + parsedUrl.AbsolutePath, data: parsedUrl.OriginalString) { ResultCode = resultCode ?? "200" }; bool success = DocumentDbHttpParser.TryParse(ref d); Assert.IsTrue(success, operation); Assert.AreEqual(RemoteDependencyConstants.AzureDocumentDb, d.Type, operation); Assert.AreEqual(parsedUrl.Host, d.Target, operation); Assert.AreEqual(operation, d.Name, operation); if (properties != null) { foreach (var property in properties) { string value = null; Assert.IsTrue(d.Properties.TryGetValue(property.Key, out value), operation); Assert.AreEqual(property.Value, value, operation); } } // Parse without verb d = new DependencyTelemetry( dependencyTypeName: RemoteDependencyConstants.HTTP, target: parsedUrl.Host, dependencyName: parsedUrl.AbsolutePath, data: parsedUrl.OriginalString) { ResultCode = resultCode ?? "200" }; success = DocumentDbHttpParser.TryParse(ref d); Assert.IsTrue(success, operation); Assert.AreEqual(RemoteDependencyConstants.AzureDocumentDb, d.Type, operation); Assert.AreEqual(parsedUrl.Host, d.Target, operation); string moniker = HttpParsingHelper.BuildOperationMoniker(null, HttpParsingHelper.ParseResourcePath(parsedUrl.AbsolutePath)); Assert.AreEqual(moniker, d.Name, operation); if (properties != null) { foreach (var property in properties) { string value = null; Assert.IsTrue(d.Properties.TryGetValue(property.Key, out value), operation); Assert.AreEqual(property.Value, value, operation); } } }
private static void ValidateBuildOperationMoniker(string verb, string url, string expectedMoniker) { var resourcePath = HttpParsingHelper.ParseResourcePath(url); Assert.AreEqual(expectedMoniker, HttpParsingHelper.BuildOperationMoniker(verb, resourcePath)); }