ServerErrorTests.cs 3.5 KB

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