2
0

object_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package grapher_test
  2. import (
  3. "io/ioutil"
  4. "testing"
  5. "github.com/porter-dev/porter/internal/helm/grapher"
  6. )
  7. // Expected objects for helm Cassandra chart
  8. var c1 = grapher.Object{
  9. Kind: "Secret",
  10. Name: "my-release-cassandra",
  11. }
  12. var c2 = grapher.Object{
  13. Kind: "Service",
  14. Name: "my-release-cassandra-headless",
  15. Relations: grapher.Relations{
  16. LabelRels: []grapher.LabelRel{
  17. {
  18. Relation: grapher.Relation{
  19. Source: 1,
  20. Target: 4,
  21. },
  22. },
  23. {
  24. Relation: grapher.Relation{
  25. Source: 1,
  26. Target: 5,
  27. },
  28. },
  29. },
  30. },
  31. }
  32. var c3 = grapher.Object{
  33. Kind: "Service",
  34. Name: "my-release-cassandra",
  35. Relations: grapher.Relations{
  36. LabelRels: []grapher.LabelRel{
  37. {
  38. Relation: grapher.Relation{
  39. Source: 2,
  40. Target: 4,
  41. },
  42. },
  43. {
  44. Relation: grapher.Relation{
  45. Source: 2,
  46. Target: 5,
  47. },
  48. },
  49. },
  50. },
  51. }
  52. var c4 = grapher.Object{
  53. Kind: "StatefulSet",
  54. Name: "my-release-cassandra",
  55. }
  56. // Expected objects for helm Cassandra chart
  57. var k1 = grapher.Object{
  58. Kind: "ServiceAccount",
  59. Name: "my-release-kafka",
  60. }
  61. var k2 = grapher.Object{
  62. Kind: "ConfigMap",
  63. Name: "my-release-kafka-scripts",
  64. }
  65. var k3 = grapher.Object{
  66. Kind: "Service",
  67. Name: "my-release-zookeeper-headless",
  68. }
  69. var k4 = grapher.Object{
  70. Kind: "Service",
  71. Name: "my-release-zookeeper",
  72. }
  73. var k5 = grapher.Object{
  74. Kind: "Service",
  75. Name: "my-release-kafka-headless",
  76. }
  77. var k6 = grapher.Object{
  78. Kind: "Service",
  79. Name: "my-release-kafka",
  80. }
  81. var k7 = grapher.Object{
  82. Kind: "StatefulSet",
  83. Name: "my-release-zookeeper",
  84. }
  85. var k8 = grapher.Object{
  86. Kind: "StatefulSet",
  87. Name: "my-release-kafka",
  88. }
  89. var expObjs1 = []grapher.Object{
  90. c1, c2, c3, c4,
  91. }
  92. var expObjs2 = []grapher.Object{
  93. k1, k2, k3, k4,
  94. k5, k6, k7, k8,
  95. }
  96. type k8sObj struct {
  97. Expected []grapher.Object
  98. FilePath string
  99. }
  100. func TestParseObj(t *testing.T) {
  101. k8sObjs := []k8sObj{
  102. {
  103. Expected: expObjs1,
  104. FilePath: "./test_yaml/cassandra.yaml",
  105. },
  106. {
  107. Expected: expObjs2,
  108. FilePath: "./test_yaml/kafka.yaml",
  109. },
  110. }
  111. for _, k8sObj := range k8sObjs {
  112. // Load in yaml from test files
  113. file, err := ioutil.ReadFile(k8sObj.FilePath)
  114. if err != nil {
  115. t.Errorf("Error reading file %s", k8sObj.FilePath)
  116. }
  117. yamlArr := grapher.ImportMultiDocYAML(file)
  118. objects := grapher.ParseObjs(yamlArr, "default")
  119. for i, o := range objects {
  120. if k8sObj.Expected[i].Kind != o.Kind {
  121. t.Errorf("Object Kinds are different at position %d. Expected %s, Got %s\n", i, k8sObj.Expected[i].Kind, o.Kind)
  122. }
  123. if k8sObj.Expected[i].Name != o.Name {
  124. t.Errorf("Object names are different at position %d. Expected %s, Got %s\n", i, k8sObj.Expected[i].Name, o.Name)
  125. }
  126. }
  127. }
  128. }