ServiceDeserializationTests.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using RackPeek.Domain.Resources.Services;
  2. using RackPeek.Yaml;
  3. namespace Tests.Yaml;
  4. public class ServiceDeserializationTests
  5. {
  6. public static IServiceRepository CreateSut(string yaml)
  7. {
  8. var tempDir = Path.Combine(
  9. Path.GetTempPath(),
  10. "RackPeekTests",
  11. Guid.NewGuid().ToString("N"));
  12. Directory.CreateDirectory(tempDir);
  13. var filePath = Path.Combine(tempDir, "config.yaml");
  14. File.WriteAllText(filePath, yaml);
  15. var yamlResourceCollection = new YamlResourceCollection(filePath);
  16. return new YamlServiceRepository(yamlResourceCollection);
  17. }
  18. [Fact]
  19. public async Task deserialize_yaml_kind_Service()
  20. {
  21. // Given
  22. var yaml = @"
  23. resources:
  24. - kind: Service
  25. name: immich
  26. network:
  27. ip: 192.168.0.4
  28. port: 8080
  29. protocol: TCP
  30. url: http://immich.lan:8080
  31. runsOn: proxmox-host
  32. ";
  33. var sut = CreateSut(yaml);
  34. // When
  35. var resources = await sut.GetAllAsync();
  36. // Then
  37. var resource = Assert.Single(resources);
  38. var service = Assert.IsType<Service>(resource);
  39. Assert.Equal("immich", service.Name);
  40. Assert.Equal("Service", service.Kind);
  41. Assert.Equal("proxmox-host", service.RunsOn);
  42. Assert.NotNull(service.Network);
  43. Assert.Equal("192.168.0.4", service.Network.Ip);
  44. Assert.Equal(8080, service.Network.Port);
  45. Assert.Equal("TCP", service.Network.Protocol);
  46. Assert.Equal("http://immich.lan:8080", service.Network.Url);
  47. }
  48. }