ServiceDeserializationTests.cs 1.7 KB

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