ServerErrorTests.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using Tests.EndToEnd.Infra;
  2. using Xunit.Abstractions;
  3. namespace Tests.EndToEnd.ServerTests;
  4. [Collection("Yaml CLI tests")]
  5. public class ServerErrorTests(TempYamlCliFixture fs, ITestOutputHelper outputHelper)
  6. : IClassFixture<TempYamlCliFixture> {
  7. private async Task<(string output, string yaml)> ExecuteAsync(params string[] args) {
  8. var output = await YamlCliTestHost.RunAsync(
  9. args,
  10. fs.Root,
  11. outputHelper,
  12. "config.yaml");
  13. var yaml = await File.ReadAllTextAsync(Path.Combine(fs.Root, "config.yaml"));
  14. return (output, yaml);
  15. }
  16. [Fact]
  17. public async Task adding_duplicate_server_returns_error() {
  18. await ExecuteAsync("servers", "add", "srv01");
  19. (var output, var _) = await ExecuteAsync("servers", "add", "srv01");
  20. Assert.Contains("already exists", output, StringComparison.OrdinalIgnoreCase);
  21. }
  22. [Fact]
  23. public async Task get_missing_server_returns_error() {
  24. (var output, var _) = await ExecuteAsync("servers", "get", "ghost");
  25. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  26. }
  27. [Fact]
  28. public async Task set_missing_server_returns_error() {
  29. (var output, var _) = await ExecuteAsync("servers", "set", "ghost", "--ram", "64");
  30. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  31. }
  32. [Fact]
  33. public async Task delete_missing_server_returns_error() {
  34. (var output, var _) = await ExecuteAsync("servers", "del", "ghost");
  35. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  36. }
  37. // CPU errors
  38. [Fact]
  39. public async Task cpu_add_missing_server_returns_error() {
  40. (var output, var _) = await ExecuteAsync(
  41. "servers", "cpu", "add", "ghost",
  42. "--model", "Xeon",
  43. "--cores", "8",
  44. "--threads", "16"
  45. );
  46. Assert.Contains("not found", output, StringComparison.OrdinalIgnoreCase);
  47. }
  48. [Fact]
  49. public async Task cpu_set_invalid_index_returns_error() {
  50. await ExecuteAsync("servers", "add", "srv01");
  51. (var output, var _) = await ExecuteAsync(
  52. "servers", "cpu", "set", "srv01",
  53. "--index", "5",
  54. "--model", "Xeon"
  55. );
  56. Assert.Contains("Not found", output, StringComparison.OrdinalIgnoreCase);
  57. }
  58. // Drive errors
  59. [Fact]
  60. public async Task drive_set_invalid_index_returns_error() {
  61. await ExecuteAsync("servers", "add", "srv01");
  62. (var output, var _) = await ExecuteAsync(
  63. "servers", "drive", "set", "srv01",
  64. "--index", "3",
  65. "--type", "ssd"
  66. );
  67. Assert.Contains("Not found", output, StringComparison.OrdinalIgnoreCase);
  68. }
  69. // GPU errors
  70. [Fact]
  71. public async Task gpu_set_invalid_index_returns_error() {
  72. await ExecuteAsync("servers", "add", "srv01");
  73. (var output, var _) = await ExecuteAsync(
  74. "servers", "gpu", "set", "srv01",
  75. "--index", "2",
  76. "--model", "A2000"
  77. );
  78. Assert.Contains("Not found", output, StringComparison.OrdinalIgnoreCase);
  79. }
  80. // NIC errors
  81. [Fact]
  82. public async Task nic_set_invalid_index_returns_error() {
  83. await ExecuteAsync("servers", "add", "srv01");
  84. (var output, var _) = await ExecuteAsync(
  85. "servers", "nic", "set", "srv01",
  86. "--index", "4",
  87. "--type", "ethernet"
  88. );
  89. Assert.Contains("Validation error", output, StringComparison.OrdinalIgnoreCase);
  90. }
  91. }