public async void LongestMountWins() { using (var client = new VaultClient(TestVaultAddress)) { client.VaultToken = TestRootToken; var mounts = await client.ListMountedBackendsAsync(); Assert.DoesNotContain("a/", mounts.Data.Keys); Assert.DoesNotContain("a/b/", mounts.Data.Keys); Assert.DoesNotContain("a/b/c/", mounts.Data.Keys); Assert.DoesNotContain("a/b/c/d/", mounts.Data.Keys); Assert.DoesNotContain("a/b/c/d/e/", mounts.Data.Keys); Assert.DoesNotContain("a/b/c/d/e/f/", mounts.Data.Keys); try { await client.MountBackendAsync("a/b/c/d/", "generic"); mounts = await client.ListMountedBackendsAsync(); Assert.Contains("a/b/c/d/", mounts.Data.Keys); await client.WriteAsync("a/b/c/d/e/f", new TestClass1 { Key1 = "val1" }); var read = await client.ReadAsync <ReadResponse <TestClass1> >("a/b/c/d/e/f"); Assert.Equal("val1", read.Data.Key1); await client.MountBackendAsync("a/b", "generic"); mounts = await client.ListMountedBackendsAsync(); Assert.Contains("a/b/", mounts.Data.Keys); await client.WriteAsync("a/b/c/d/e/f", new TestClass1 { Key1 = "val1" }); read = await client.ReadAsync <ReadResponse <TestClass1> >("a/b/c/d/e/f"); Assert.Equal("val1", read.Data.Key1); await client.UnmountBackendAsync("a/b/c/d"); mounts = await client.ListMountedBackendsAsync(); Assert.DoesNotContain("a/b/c/d/", mounts.Data.Keys); var ex = await Assert.ThrowsAsync <VaultClientException>(async() => read = await client.ReadAsync <ReadResponse <TestClass1> >("a/b/c/d/e/f")); Assert.Equal(HttpStatusCode.NotFound, ex.StatusCode); await client.WriteAsync("a/b/c/d/e/f", new TestClass1 { Key1 = "VAL2" }); read = await client.ReadAsync <ReadResponse <TestClass1> >("a/b/c/d/e/f"); Assert.Equal("VAL2", read.Data.Key1); } finally { await client.UnmountBackendAsync("a/b/c/d"); await client.UnmountBackendAsync("a/b"); } mounts = await client.ListMountedBackendsAsync(); Assert.DoesNotContain("a/b/c/d/", mounts.Data.Keys); Assert.DoesNotContain("a/b/", mounts.Data.Keys); } }