DiscoverNetworkValidationTests.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Tests.EndToEnd.Infra;
  2. using Xunit.Abstractions;
  3. namespace Tests.EndToEnd.DiscoveryTests;
  4. /// <summary>
  5. /// `rpk discover network` argument validation. Every case here fails before any
  6. /// probing starts, so these tests never send a packet anywhere.
  7. /// </summary>
  8. [Collection("Yaml CLI tests")]
  9. public class DiscoverNetworkValidationTests(TempYamlCliFixture fs, ITestOutputHelper outputHelper)
  10. : IClassFixture<TempYamlCliFixture> {
  11. private async Task<string> ExecuteAsync(params string[] args) =>
  12. await YamlCliTestHost.RunAsync(args, fs.Root, outputHelper, "config.yaml");
  13. [Theory]
  14. [InlineData("not-a-cidr")]
  15. [InlineData("192.168.1.0")] // no prefix
  16. [InlineData("192.168.1.0/24/7")]
  17. [InlineData("192.168.1.0/notanumber")]
  18. public async Task a_malformed_cidr_is_refused_with_an_example_of_the_right_shape(string cidr) {
  19. var output = await ExecuteAsync("discover", "network", "--cidr", cidr);
  20. Assert.Contains("not a usable CIDR block", output);
  21. Assert.Contains("192.168.1.0/24", output);
  22. }
  23. [Theory]
  24. [InlineData("10.0.0.0/8")]
  25. [InlineData("0.0.0.0/0")]
  26. public async Task a_sweep_wider_than_a_16_is_refused(string cidr) {
  27. var output = await ExecuteAsync("discover", "network", "--cidr", cidr);
  28. Assert.Contains("65,534 hosts", output);
  29. Assert.Contains("/16", output);
  30. }
  31. [Theory]
  32. [InlineData("eighty")]
  33. [InlineData("0")] // port zero is not a port
  34. [InlineData("65536")]
  35. [InlineData("22;80")]
  36. [InlineData(",")]
  37. public async Task a_malformed_port_list_is_refused(string ports) {
  38. var output = await ExecuteAsync(
  39. "discover", "network", "--cidr", "192.168.1.0/24", "--ports", ports);
  40. Assert.Contains("not a usable port list", output);
  41. }
  42. [Theory]
  43. [InlineData("--timeout", "0", "--timeout must be between")]
  44. [InlineData("--timeout", "999999", "--timeout must be between")]
  45. [InlineData("--parallel", "0", "--parallel must be between")]
  46. [InlineData("--parallel", "4096", "--parallel must be between")]
  47. public async Task out_of_range_tuning_flags_are_refused(string flag, string value, string expected) {
  48. var output = await ExecuteAsync("discover", "network", "--cidr", "192.168.1.0/24", flag, value);
  49. Assert.Contains(expected, output);
  50. }
  51. }