This commit is contained in:
code liturgy 2022-11-13 21:40:47 +00:00
parent aa222550c1
commit 96cb8df66f
4 changed files with 45 additions and 34 deletions

View File

@ -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();
@ -12,21 +17,21 @@ public class AugeasTests
.Select(s => s[random.Next(s.Length)]).ToArray()); .Select(s => s[random.Next(s.Length)]).ToArray());
} }
[SetUp] [SetUp]
public void Setup() public void Setup()
{ {
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,40 +39,34 @@ 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);
var retrieveVal = _augeas.GetNode(nodePath); var retrieveVal = _augeas.GetNode(nodePath);
Assert.That(retrieveVal == newValue); Assert.That(retrieveVal == newValue);
} }
[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);
@ -79,36 +78,43 @@ public class AugeasTests
var retrieveVal = _augeas.GetNode(nodePath); var retrieveVal = _augeas.GetNode(nodePath);
Assert.That(retrieveVal == newValue); Assert.That(retrieveVal == newValue);
} }
[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);
Assert.Pass(); Assert.Pass();
} }
[Test] [Test]
public void MatchReturnsTwoSites() public void MatchReturnsTwoSites()
{ {
var sites = _augeas.Match("/files/etc/apache2/sites-available/*"); var sites = _augeas.Match("/files/etc/apache2/sites-available/*");
Assert.That(sites.Length == 2); Assert.That(sites.Length == 2);
} }
[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);
} }
} }

View File

@ -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>

View File

@ -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;
} }

View File

@ -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;