summary_test.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. var App = require('app');
  19. require('controllers/main/service/info/summary');
  20. describe('App.MainServiceInfoSummaryController', function () {
  21. var controller;
  22. beforeEach(function () {
  23. controller = App.MainServiceInfoSummaryController.create();
  24. });
  25. describe('#setRangerPlugins', function () {
  26. var cases = [
  27. {
  28. isLoaded: true,
  29. isRangerPluginsArraySet: false,
  30. expectedIsRangerPluginsArraySet: true,
  31. title: 'cluster loaded, ranger plugins array not set'
  32. },
  33. {
  34. isLoaded: false,
  35. isRangerPluginsArraySet: false,
  36. expectedIsRangerPluginsArraySet: false,
  37. title: 'cluster not loaded, ranger plugins array not set'
  38. },
  39. {
  40. isLoaded: false,
  41. isRangerPluginsArraySet: true,
  42. expectedIsRangerPluginsArraySet: true,
  43. title: 'cluster not loaded, ranger plugins array set'
  44. },
  45. {
  46. isLoaded: true,
  47. isRangerPluginsArraySet: true,
  48. expectedIsRangerPluginsArraySet: true,
  49. title: 'cluster loaded, ranger plugins array set'
  50. }
  51. ];
  52. beforeEach(function () {
  53. sinon.stub(App.Service, 'find').returns([
  54. Em.Object.create({
  55. serviceName: 'HDFS'
  56. }),
  57. Em.Object.create({
  58. serviceName: 'HIVE'
  59. })
  60. ]);
  61. sinon.stub(App.StackService, 'find').returns([
  62. Em.Object.create({
  63. serviceName: 'HDFS',
  64. displayNName: 'HDFS'
  65. }),
  66. Em.Object.create({
  67. serviceName: 'HIVE',
  68. displayNName: 'Hive'
  69. }),
  70. Em.Object.create({
  71. serviceName: 'HBASE',
  72. displayNName: 'HBase'
  73. }),
  74. Em.Object.create({
  75. serviceName: 'KNOX',
  76. displayNName: 'Knox'
  77. }),
  78. Em.Object.create({
  79. serviceName: 'STORM',
  80. displayNName: 'Storm'
  81. })
  82. ]);
  83. });
  84. afterEach(function () {
  85. App.Service.find.restore();
  86. App.StackService.find.restore();
  87. });
  88. cases.forEach(function (item) {
  89. it(item.title, function () {
  90. controller.set('isRangerPluginsArraySet', item.isRangerPluginsArraySet);
  91. App.set('router.clusterController.isLoaded', item.isLoaded);
  92. expect(controller.get('isRangerPluginsArraySet')).to.equal(item.expectedIsRangerPluginsArraySet);
  93. expect(controller.get('rangerPlugins').filterProperty('isDisplayed').mapProperty('serviceName').sort()).to.eql(['HDFS', 'HIVE']);
  94. });
  95. });
  96. });
  97. describe('#getRangerPluginsStatus', function () {
  98. var data = {
  99. 'Clusters': {
  100. 'desired_configs': {
  101. 'ranger-hdfs-plugin-properties': {
  102. 'tag': 'version1'
  103. },
  104. 'ranger-hive-plugin-properties': {
  105. 'tag': 'version2'
  106. },
  107. 'ranger-hbase-plugin-properties': {
  108. 'tag': 'version3'
  109. }
  110. }
  111. }
  112. },
  113. cases = [
  114. {
  115. isPreviousRangerConfigsCallFailed: false,
  116. ajaxRequestSent: true,
  117. title: 'initial case'
  118. },
  119. {
  120. isPreviousRangerConfigsCallFailed: true,
  121. hdfsTag: 'version1',
  122. hiveTag: 'version2',
  123. hbaseTag: 'version3',
  124. ajaxRequestSent: true,
  125. title: 'previous call failed'
  126. },
  127. {
  128. isPreviousRangerConfigsCallFailed: false,
  129. hdfsTag: 'version2',
  130. hiveTag: 'version2',
  131. hbaseTag: 'version3',
  132. ajaxRequestSent: true,
  133. title: 'configs changed'
  134. },
  135. {
  136. isPreviousRangerConfigsCallFailed: false,
  137. hdfsTag: 'version1',
  138. hiveTag: 'version2',
  139. hbaseTag: 'version3',
  140. ajaxRequestSent: false,
  141. title: 'configs unchanged'
  142. }
  143. ];
  144. beforeEach(function () {
  145. sinon.stub(App.ajax, 'send', Em.K);
  146. sinon.stub(App.Service, 'find').returns([
  147. Em.Object.create({
  148. serviceName: 'HDFS'
  149. }),
  150. Em.Object.create({
  151. serviceName: 'HIVE'
  152. }),
  153. Em.Object.create({
  154. serviceName: 'HBASE'
  155. })
  156. ]);
  157. });
  158. afterEach(function () {
  159. App.ajax.send.restore();
  160. App.Service.find.restore();
  161. });
  162. cases.forEach(function (item) {
  163. it(item.title, function () {
  164. controller.set('isPreviousRangerConfigsCallFailed', item.isPreviousRangerConfigsCallFailed);
  165. controller.get('rangerPlugins').findProperty('serviceName', 'HDFS').tag = item.hdfsTag;
  166. controller.get('rangerPlugins').findProperty('serviceName', 'HIVE').tag = item.hiveTag;
  167. controller.get('rangerPlugins').findProperty('serviceName', 'HBASE').tag = item.hbaseTag;
  168. controller.getRangerPluginsStatus(data);
  169. expect(App.ajax.send.calledOnce).to.equal(item.ajaxRequestSent);
  170. });
  171. });
  172. });
  173. describe('#getRangerPluginsStatusSuccess', function () {
  174. it('relevant plugin statuses are set', function () {
  175. controller.getRangerPluginsStatusSuccess({
  176. 'items': [
  177. {
  178. 'type': 'ranger-hdfs-plugin-properties',
  179. 'properties': {
  180. 'ranger-hdfs-plugin-enabled': 'Yes'
  181. }
  182. },
  183. {
  184. 'type': 'ranger-hive-plugin-properties',
  185. 'properties': {
  186. 'ranger-hive-plugin-enabled': 'No'
  187. }
  188. },
  189. {
  190. 'type': 'ranger-hbase-plugin-properties',
  191. 'properties': {
  192. 'ranger-hbase-plugin-enabled': ''
  193. }
  194. }
  195. ]
  196. });
  197. expect(controller.get('isPreviousRangerConfigsCallFailed')).to.be.false;
  198. expect(controller.get('rangerPlugins').findProperty('serviceName', 'HDFS').status).to.equal(Em.I18n.t('alerts.table.state.enabled'));
  199. expect(controller.get('rangerPlugins').findProperty('serviceName', 'HIVE').status).to.equal(Em.I18n.t('alerts.table.state.disabled'));
  200. expect(controller.get('rangerPlugins').findProperty('serviceName', 'HBASE').status).to.equal(Em.I18n.t('common.unknown'));
  201. });
  202. });
  203. describe('#getRangerPluginsStatusError', function () {
  204. it('should set isPreviousRangerConfigsCallFailed to true', function () {
  205. controller.getRangerPluginsStatusError();
  206. expect(controller.get('isPreviousRangerConfigsCallFailed')).to.be.true;
  207. });
  208. });
  209. });