RenameResourceTests.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. using Tests.EndToEnd.Infra;
  2. using Xunit.Abstractions;
  3. namespace Tests.EndToEnd.ConnectionTests;
  4. [Collection("Yaml CLI tests")]
  5. public class RenameResourceTests(TempYamlCliFixture fs, ITestOutputHelper outputHelper)
  6. : IClassFixture<TempYamlCliFixture> {
  7. private async Task<(string output, string yaml)> ExecuteAsync(params string[] args) {
  8. outputHelper.WriteLine($"rpk {string.Join(" ", args)}");
  9. var output = await YamlCliTestHost.RunAsync(
  10. args,
  11. fs.Root,
  12. outputHelper,
  13. "config.yaml");
  14. outputHelper.WriteLine(output);
  15. var yaml = await File.ReadAllTextAsync(Path.Combine(fs.Root, "config.yaml"));
  16. return (output, yaml);
  17. }
  18. [Fact]
  19. public async Task rename_server_with_single_connection_preserves_connection() {
  20. await ExecuteAsync("servers", "add", "srv01");
  21. await ExecuteAsync("servers", "add", "srv02");
  22. await ExecuteAsync("servers", "nic", "add", "srv01",
  23. "--type", "RJ45", "--speed", "10", "--ports", "2");
  24. await ExecuteAsync("servers", "nic", "add", "srv02",
  25. "--type", "RJ45", "--speed", "10", "--ports", "2");
  26. await ExecuteAsync("connections", "add",
  27. "srv01", "0", "0",
  28. "srv02", "0", "0",
  29. "--label", "uplink-test");
  30. await ExecuteAsync("servers", "rename", "srv01", "srv01-renamed");
  31. (_, var yaml) = await ExecuteAsync("servers", "get", "srv01-renamed");
  32. Assert.Contains("name: srv01-renamed", yaml);
  33. Assert.Contains("srv01-renamed", yaml);
  34. Assert.Contains("srv02", yaml);
  35. Assert.Contains("uplink-test", yaml);
  36. }
  37. [Fact]
  38. public async Task rename_server_with_multiple_connections_preserves_all() {
  39. await ExecuteAsync("servers", "add", "srv01");
  40. await ExecuteAsync("servers", "add", "srv02");
  41. await ExecuteAsync("servers", "add", "srv03");
  42. await ExecuteAsync("servers", "add", "srv04");
  43. foreach (var s in new[] { "srv01", "srv02", "srv03", "srv04" }) {
  44. await ExecuteAsync("servers", "nic", "add", s,
  45. "--type", "RJ45", "--speed", "10", "--ports", "2");
  46. }
  47. await ExecuteAsync("connections", "add",
  48. "srv01", "0", "0",
  49. "srv02", "0", "0",
  50. "--label", "conn-to-srv02");
  51. await ExecuteAsync("connections", "add",
  52. "srv01", "0", "1",
  53. "srv03", "0", "0",
  54. "--label", "conn-to-srv03");
  55. await ExecuteAsync("connections", "add",
  56. "srv02", "0", "1", // changed
  57. "srv04", "0", "1",
  58. "--label", "conn-to-srv04");
  59. await ExecuteAsync("servers", "rename", "srv01", "srv01-updated");
  60. var yaml = await File.ReadAllTextAsync(Path.Combine(fs.Root, "config.yaml"));
  61. Assert.Contains("name: srv01-updated", yaml);
  62. Assert.Contains("srv01-updated", yaml);
  63. Assert.Contains("srv02", yaml);
  64. Assert.Contains("srv03", yaml);
  65. Assert.Contains("srv04", yaml);
  66. Assert.Contains("conn-to-srv02", yaml);
  67. Assert.Contains("conn-to-srv03", yaml);
  68. Assert.Contains("conn-to-srv04", yaml);
  69. }
  70. [Fact]
  71. public async Task rename_both_connection_endpoints_preserves_connection() {
  72. await ExecuteAsync("servers", "add", "srv01");
  73. await ExecuteAsync("servers", "add", "srv02");
  74. await ExecuteAsync("servers", "nic", "add", "srv01",
  75. "--type", "RJ45", "--speed", "10", "--ports", "2");
  76. await ExecuteAsync("servers", "nic", "add", "srv02",
  77. "--type", "RJ45", "--speed", "10", "--ports", "2");
  78. await ExecuteAsync("connections", "add",
  79. "srv01", "0", "0",
  80. "srv02", "0", "0",
  81. "--label", "bi-directional-link");
  82. await ExecuteAsync("servers", "rename", "srv01", "new-srv01");
  83. await ExecuteAsync("servers", "rename", "srv02", "new-srv02");
  84. (_, var yaml) = await ExecuteAsync("servers", "get", "new-srv01");
  85. Assert.Contains("name: new-srv01", yaml);
  86. Assert.Contains("new-srv01", yaml);
  87. Assert.Contains("new-srv02", yaml);
  88. Assert.Contains("bi-directional-link", yaml);
  89. }
  90. [Fact]
  91. public async Task rename_switch_with_connections_preserves_connections() {
  92. await ExecuteAsync("switches", "add", "sw01");
  93. await ExecuteAsync("switches", "add", "sw02");
  94. await ExecuteAsync("switches", "port", "add", "sw01",
  95. "--type", "SFP+", "--speed", "25", "--count", "2");
  96. await ExecuteAsync("switches", "port", "add", "sw02",
  97. "--type", "SFP+", "--speed", "25", "--count", "2");
  98. await ExecuteAsync("connections", "add",
  99. "sw01", "0", "0",
  100. "sw02", "0", "0",
  101. "--label", "switch-uplink");
  102. await ExecuteAsync("switches", "rename", "sw01", "sw01-core");
  103. (_, var yaml) = await ExecuteAsync("switches", "get", "sw01-core");
  104. Assert.Contains("name: sw01-core", yaml);
  105. Assert.Contains("sw01-core", yaml);
  106. Assert.Contains("sw02", yaml);
  107. Assert.Contains("switch-uplink", yaml);
  108. }
  109. [Fact]
  110. public async Task rename_with_special_naming_preserves_connections() {
  111. await ExecuteAsync("servers", "add", "srv-prod-web-01");
  112. await ExecuteAsync("servers", "add", "srv-prod-app-01");
  113. await ExecuteAsync("servers", "nic", "add", "srv-prod-web-01",
  114. "--type", "RJ45", "--speed", "10", "--ports", "2");
  115. await ExecuteAsync("servers", "nic", "add", "srv-prod-app-01",
  116. "--type", "RJ45", "--speed", "10", "--ports", "2");
  117. await ExecuteAsync("connections", "add",
  118. "srv-prod-web-01", "0", "0",
  119. "srv-prod-app-01", "0", "0",
  120. "--label", "app-backend-link");
  121. await ExecuteAsync("servers", "rename", "srv-prod-web-01", "srv_prod_web_01");
  122. (_, var yaml) = await ExecuteAsync("servers", "get", "srv_prod_web_01");
  123. Assert.Contains("name: srv_prod_web_01", yaml);
  124. Assert.Contains("srv_prod_web_01", yaml);
  125. Assert.Contains("srv-prod-app-01", yaml);
  126. Assert.Contains("app-backend-link", yaml);
  127. }
  128. }