Tree wip
This commit is contained in:
parent
aa222550c1
commit
96cb8df66f
|
@ -1,9 +1,14 @@
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
namespace Sharp.Augeas.Test;
|
namespace Sharp.Augeas.Test;
|
||||||
|
|
||||||
public class AugeasTests
|
public class AugeasTests
|
||||||
{
|
{
|
||||||
private Augeas _augeas;
|
private Augeas _augeas;
|
||||||
|
|
||||||
|
private const string EXAMPLE_CONF_1 = "/etc/apache2/sites-available/example.com.conf";
|
||||||
|
private const string EXAMPLE_CONF_2 = "/etc/apache2/sites-available/example2.com.conf";
|
||||||
|
|
||||||
public static string RandomString(int length)
|
public static string RandomString(int length)
|
||||||
{
|
{
|
||||||
var random = new Random();
|
var random = new Random();
|
||||||
|
@ -19,14 +24,14 @@ public class AugeasTests
|
||||||
var rootDir = Environment.CurrentDirectory + "/root";
|
var rootDir = Environment.CurrentDirectory + "/root";
|
||||||
var lensDir = Environment.CurrentDirectory + "/lens";
|
var lensDir = Environment.CurrentDirectory + "/lens";
|
||||||
_augeas = new Augeas(new AugSettings(rootDir, lensDir));
|
_augeas = new Augeas(new AugSettings(rootDir, lensDir));
|
||||||
_augeas.LoadFile("/etc/apache2/sites-available/example.com.conf");
|
_augeas.LoadFile(EXAMPLE_CONF_1);
|
||||||
_augeas.LoadFile("/etc/apache2/sites-available/example2.com.conf");
|
_augeas.LoadFile(EXAMPLE_CONF_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void NoExceptionThrownWhenPrintingVirtualhostTree()
|
public void NoExceptionThrownWhenPrintingVirtualhostTree()
|
||||||
{
|
{
|
||||||
var virtualHostConfig = "/etc/apache2/sites-available/example.com.conf";
|
var virtualHostConfig = EXAMPLE_CONF_1;
|
||||||
_augeas.PrintVirtualHostTree(virtualHostConfig);
|
_augeas.PrintVirtualHostTree(virtualHostConfig);
|
||||||
Assert.Pass();
|
Assert.Pass();
|
||||||
}
|
}
|
||||||
|
@ -34,27 +39,23 @@ public class AugeasTests
|
||||||
[Test]
|
[Test]
|
||||||
public void NoExceptionThrownWhenPrintingPreview()
|
public void NoExceptionThrownWhenPrintingPreview()
|
||||||
{
|
{
|
||||||
var virtualHostConfig = "/etc/apache2/sites-available/example.com.conf";
|
var virtualHostConfig = EXAMPLE_CONF_1;
|
||||||
_augeas.PrintPreview(virtualHostConfig);
|
_augeas.PrintPreview(virtualHostConfig);
|
||||||
Assert.Pass();
|
Assert.Pass();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void GetPreviewReturnsValid()
|
public void GetPreviewReturnsValid()
|
||||||
{
|
{
|
||||||
|
var preview = _augeas.GetPreview("/files/etc/apache2/sites-available/example.com.conf");
|
||||||
var preview = _augeas.GetPreview("/files/etc/apache2/sites-available/example.com.conf");
|
var stringInvalid = string.IsNullOrEmpty(preview);
|
||||||
var stringInvalid = string.IsNullOrEmpty(preview);
|
Assert.That(!stringInvalid);
|
||||||
Assert.That(!stringInvalid);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void AfterSettingNodeGetNodeReturnsNewValue()
|
public void AfterSettingNodeGetNodeReturnsNewValue()
|
||||||
{
|
{
|
||||||
|
|
||||||
var nodePath = $"/files/etc/apache2/sites-available/example.com.conf/VirtualHost/directive[1]/arg";
|
var nodePath = $"/files/etc/apache2/sites-available/example.com.conf/VirtualHost/directive[1]/arg";
|
||||||
var newValue = "example.com";
|
var newValue = "example.com";
|
||||||
_augeas.SetNode(nodePath, newValue);
|
_augeas.SetNode(nodePath, newValue);
|
||||||
|
@ -63,11 +64,9 @@ public class AugeasTests
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void SettingNodeAndSave()
|
public void SettingNodeAndSave()
|
||||||
{
|
{
|
||||||
|
|
||||||
var nodePath = $"/files/etc/apache2/sites-available/example.com.conf/VirtualHost/directive[1]/arg";
|
var nodePath = $"/files/etc/apache2/sites-available/example.com.conf/VirtualHost/directive[1]/arg";
|
||||||
var newValue = RandomString(10);
|
var newValue = RandomString(10);
|
||||||
_augeas.SetNode(nodePath, newValue);
|
_augeas.SetNode(nodePath, newValue);
|
||||||
|
@ -84,7 +83,6 @@ public class AugeasTests
|
||||||
[Test]
|
[Test]
|
||||||
public void InsertNode()
|
public void InsertNode()
|
||||||
{
|
{
|
||||||
|
|
||||||
var nodePath = $"/files/etc/apache2/sites-available/example.com.conf/VirtualHost/directive[3]";
|
var nodePath = $"/files/etc/apache2/sites-available/example.com.conf/VirtualHost/directive[3]";
|
||||||
_augeas.InsertNode(nodePath, "Test");
|
_augeas.InsertNode(nodePath, "Test");
|
||||||
var node = _augeas.GetNode(nodePath);
|
var node = _augeas.GetNode(nodePath);
|
||||||
|
@ -93,7 +91,6 @@ public class AugeasTests
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void MatchReturnsTwoSites()
|
public void MatchReturnsTwoSites()
|
||||||
{
|
{
|
||||||
|
@ -103,12 +100,21 @@ public class AugeasTests
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MatchCanReturnMultipleDirectives()
|
||||||
|
{
|
||||||
|
var nodePath = $"/files/etc/apache2/sites-available/example.com.conf/VirtualHost/directive[7]/*";
|
||||||
|
var sites = _augeas.Match(nodePath);
|
||||||
|
Assert.That(sites.Length > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void GetTreeVirtualHostReturnsDictionaryWithKeys()
|
public void GetTreeVirtualHostReturnsDictionaryWithKeys()
|
||||||
{
|
{
|
||||||
var path = "/etc/apache2/sites-available/example.com.conf";
|
var path = EXAMPLE_CONF_1;
|
||||||
var tree = _augeas.GetVirtualHostTree(path);
|
var tree = _augeas.GetVirtualHostTree(path);
|
||||||
Assert.That(tree.Count > 0);
|
Assert.That(tree.Count > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -15,4 +15,9 @@
|
||||||
<TargetPath>root\%(RecursiveDir)\%(Filename)%(Extension)</TargetPath>
|
<TargetPath>root\%(RecursiveDir)\%(Filename)%(Extension)</TargetPath>
|
||||||
</ContentWithTargetPath>
|
</ContentWithTargetPath>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup >
|
||||||
|
<Content Include="./Platform/Linux/libclAugeas.so">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
namespace Sharp.Augeas;
|
namespace Sharp.Augeas;
|
||||||
|
|
||||||
public class Directive<T> : Node where T: Node
|
public class Directive : Node
|
||||||
{
|
{
|
||||||
public string Value;
|
public string Value;
|
||||||
public List<Argument<Directive<T>>> Arguments;
|
public List<Argument> Arguments;
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
namespace Sharp.Augeas
|
namespace Sharp.Augeas
|
||||||
{
|
{
|
||||||
public class VirtualHost
|
public class VirtualHost : Node
|
||||||
{
|
{
|
||||||
public List<Directive<Proxy>> Directives;
|
public List<Directive<Proxy>> Directives;
|
||||||
public List<Argument<Proxy>> Arguments;
|
public List<Argument<Proxy>> Arguments;
|
||||||
|
|
Loading…
Reference in New Issue