ServiceDeserializationTests.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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 = new YamlResourceCollection(filePath, new PhysicalTextFileStore(), new ResourceCollection());
  17. await yamlResourceCollection.LoadAsync();
  18. return yamlResourceCollection;
  19. }
  20. [Fact]
  21. public async Task deserialize_yaml_kind_Service()
  22. {
  23. // Given
  24. var yaml = @"
  25. resources:
  26. - kind: Service
  27. name: immich
  28. network:
  29. ip: 192.168.0.4
  30. port: 8080
  31. protocol: TCP
  32. url: http://immich.lan:8080
  33. runsOn: proxmox-host
  34. ";
  35. var sut = await CreateSut(yaml);
  36. // When
  37. var resources = await sut.GetAllOfTypeAsync<Service>();
  38. // Then
  39. var resource = Assert.Single(resources);
  40. var service = Assert.IsType<Service>(resource);
  41. Assert.Equal("immich", service.Name);
  42. Assert.Equal("Service", service.Kind);
  43. Assert.Equal("proxmox-host", service.RunsOn);
  44. Assert.NotNull(service.Network);
  45. Assert.Equal("192.168.0.4", service.Network.Ip);
  46. Assert.Equal(8080, service.Network.Port);
  47. Assert.Equal("TCP", service.Network.Protocol);
  48. Assert.Equal("http://immich.lan:8080", service.Network.Url);
  49. }
  50. }