GraphTopologyCliTests.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using Tests.EndToEnd.Infra;
  2. using Xunit.Abstractions;
  3. namespace Tests.EndToEnd.Graph;
  4. [Collection("Yaml CLI tests")]
  5. public class GraphTopologyCliTests(TempYamlCliFixture fs, ITestOutputHelper outputHelper)
  6. : IClassFixture<TempYamlCliFixture> {
  7. private async Task<string> ExecuteAsync(params string[] args) {
  8. outputHelper.WriteLine($"rpk {string.Join(" ", args)}");
  9. var output = await YamlCliTestHost.RunAsync(args, fs.Root, outputHelper, "config.yaml");
  10. outputHelper.WriteLine(output);
  11. return output;
  12. }
  13. [Fact]
  14. public async Task Topology_Includes_All_Hardware_And_Connection() {
  15. await File.WriteAllTextAsync(Path.Combine(fs.Root, "config.yaml"), "");
  16. await ExecuteAsync("firewalls", "add", "fw-01");
  17. await ExecuteAsync("switches", "add", "sw-01");
  18. await ExecuteAsync("servers", "add", "srv-01");
  19. // Give each resource at least one port group so connections have something to attach to.
  20. await ExecuteAsync("firewalls", "port", "add", "fw-01", "--type", "RJ45", "--speed", "1", "--count", "4");
  21. await ExecuteAsync("switches", "port", "add", "sw-01", "--type", "RJ45", "--speed", "1", "--count", "24");
  22. await ExecuteAsync("servers", "nic", "add", "srv-01", "--type", "RJ45", "--speed", "1", "--ports", "2");
  23. await ExecuteAsync("connections", "add", "fw-01", "0", "0", "sw-01", "0", "0");
  24. var output = await ExecuteAsync("graph", "topology");
  25. Assert.Contains("flowchart TD", output);
  26. Assert.Contains("fw-01", output);
  27. Assert.Contains("sw-01", output);
  28. Assert.Contains("srv-01", output);
  29. // All nodes share the rpknode class with a kind subtitle.
  30. Assert.Contains(":::rpknode", output);
  31. Assert.Contains("fw-01<br/>firewall", output);
  32. Assert.Contains("sw-01<br/>switch", output);
  33. Assert.Contains("srv-01<br/>server", output);
  34. Assert.Contains("n_fw_01 ---", output);
  35. Assert.Contains("n_sw_01", output);
  36. }
  37. [Fact]
  38. public async Task Topology_With_No_Hardware_Renders_Header_Only() {
  39. await File.WriteAllTextAsync(Path.Combine(fs.Root, "config.yaml"), "");
  40. var output = await ExecuteAsync("graph", "topology");
  41. Assert.Contains("flowchart TD", output);
  42. Assert.Contains("classDef rpknode", output);
  43. // No actual node entries.
  44. Assert.DoesNotContain("[\"", output);
  45. }
  46. }