resource_config_test.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /*
  2. Copyright 2015 The Kubernetes Authors.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. */
  13. package genericapiserver
  14. import (
  15. "testing"
  16. "k8s.io/kubernetes/pkg/api/unversioned"
  17. )
  18. func TestDisabledVersion(t *testing.T) {
  19. g1v1 := unversioned.GroupVersion{Group: "group1", Version: "version1"}
  20. g1v2 := unversioned.GroupVersion{Group: "group1", Version: "version2"}
  21. g2v1 := unversioned.GroupVersion{Group: "group2", Version: "version1"}
  22. g3v1 := unversioned.GroupVersion{Group: "group3", Version: "version1"}
  23. resourceType := "the-resource"
  24. disabledResourceType := "the-disabled-resource"
  25. config := NewResourceConfig()
  26. config.DisableVersions(g1v1)
  27. config.EnableVersions(g1v2, g3v1)
  28. config.EnableResources(g1v1.WithResource(resourceType), g2v1.WithResource(resourceType))
  29. config.DisableResources(g1v2.WithResource(disabledResourceType))
  30. expectedEnabledResources := []unversioned.GroupVersionResource{
  31. g1v2.WithResource(resourceType),
  32. g2v1.WithResource(resourceType),
  33. }
  34. expectedDisabledResources := []unversioned.GroupVersionResource{
  35. g1v1.WithResource(resourceType), g1v1.WithResource(disabledResourceType),
  36. g1v2.WithResource(disabledResourceType),
  37. g2v1.WithResource(disabledResourceType),
  38. }
  39. for _, expectedResource := range expectedEnabledResources {
  40. if !config.ResourceEnabled(expectedResource) {
  41. t.Errorf("expected enabled for %v, from %v", expectedResource, config)
  42. }
  43. }
  44. for _, expectedResource := range expectedDisabledResources {
  45. if config.ResourceEnabled(expectedResource) {
  46. t.Errorf("expected disabled for %v, from %v", expectedResource, config)
  47. }
  48. }
  49. if e, a := false, config.AnyResourcesForVersionEnabled(g1v1); e != a {
  50. t.Errorf("expected %v, got %v", e, a)
  51. }
  52. if e, a := false, config.AllResourcesForVersionEnabled(g1v1); e != a {
  53. t.Errorf("expected %v, got %v", e, a)
  54. }
  55. if e, a := true, config.AnyResourcesForVersionEnabled(g1v2); e != a {
  56. t.Errorf("expected %v, got %v", e, a)
  57. }
  58. if e, a := false, config.AllResourcesForVersionEnabled(g1v2); e != a {
  59. t.Errorf("expected %v, got %v", e, a)
  60. }
  61. if e, a := true, config.AnyResourcesForVersionEnabled(g3v1); e != a {
  62. t.Errorf("expected %v, got %v", e, a)
  63. }
  64. if e, a := true, config.AllResourcesForVersionEnabled(g3v1); e != a {
  65. t.Errorf("expected %v, got %v", e, a)
  66. }
  67. expectedEnabledAnyVersionResources := []unversioned.GroupResource{
  68. {Group: "group1", Resource: resourceType},
  69. }
  70. expectedDisabledAnyResources := []unversioned.GroupResource{
  71. {Group: "group1", Resource: disabledResourceType},
  72. }
  73. for _, expectedResource := range expectedEnabledAnyVersionResources {
  74. if !config.AnyVersionOfResourceEnabled(expectedResource) {
  75. t.Errorf("expected enabled for %v, from %v", expectedResource, config)
  76. }
  77. }
  78. for _, expectedResource := range expectedDisabledAnyResources {
  79. if config.AnyVersionOfResourceEnabled(expectedResource) {
  80. t.Errorf("expected disabled for %v, from %v", expectedResource, config)
  81. }
  82. }
  83. }
  84. func TestAnyResourcesForGroupEnabled(t *testing.T) {
  85. tests := []struct {
  86. name string
  87. creator func() APIResourceConfigSource
  88. testGroup string
  89. expectedResult bool
  90. }{
  91. {
  92. name: "empty",
  93. creator: func() APIResourceConfigSource {
  94. return NewResourceConfig()
  95. },
  96. testGroup: "one",
  97. expectedResult: false,
  98. },
  99. {
  100. name: "present, but disabled",
  101. creator: func() APIResourceConfigSource {
  102. ret := NewResourceConfig()
  103. ret.DisableVersions(unversioned.GroupVersion{Group: "one", Version: "version1"})
  104. return ret
  105. },
  106. testGroup: "one",
  107. expectedResult: false,
  108. },
  109. {
  110. name: "present, and one version enabled",
  111. creator: func() APIResourceConfigSource {
  112. ret := NewResourceConfig()
  113. ret.DisableVersions(unversioned.GroupVersion{Group: "one", Version: "version1"})
  114. ret.EnableVersions(unversioned.GroupVersion{Group: "one", Version: "version2"})
  115. return ret
  116. },
  117. testGroup: "one",
  118. expectedResult: true,
  119. },
  120. {
  121. name: "present, and one resource",
  122. creator: func() APIResourceConfigSource {
  123. ret := NewResourceConfig()
  124. ret.DisableVersions(unversioned.GroupVersion{Group: "one", Version: "version1"})
  125. ret.EnableResources(unversioned.GroupVersionResource{Group: "one", Version: "version2", Resource: "foo"})
  126. return ret
  127. },
  128. testGroup: "one",
  129. expectedResult: true,
  130. },
  131. }
  132. for _, tc := range tests {
  133. if e, a := tc.expectedResult, tc.creator().AnyResourcesForGroupEnabled(tc.testGroup); e != a {
  134. t.Errorf("%s: expected %v, got %v", tc.name, e, a)
  135. }
  136. }
  137. }