step2_test.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666
  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/admin/security/add/step2');
  20. require('models/service');
  21. describe('App.MainAdminSecurityAddStep2Controller', function () {
  22. var controller = App.MainAdminSecurityAddStep2Controller.create({
  23. content: {}
  24. });
  25. describe('#clearStep()', function () {
  26. it('Info is empty', function () {
  27. controller.set('stepConfigs', []);
  28. controller.set('securityUsers', []);
  29. controller.clearStep();
  30. expect(controller.get('stepConfigs')).to.be.empty;
  31. expect(controller.get('securityUsers')).to.be.empty;
  32. });
  33. it('Info filled', function () {
  34. controller.set('stepConfigs', [1]);
  35. controller.set('securityUsers', [1]);
  36. controller.clearStep();
  37. expect(controller.get('stepConfigs')).to.be.empty;
  38. expect(controller.get('securityUsers')).to.be.empty;
  39. });
  40. });
  41. describe('#isSubmitDisabled', function () {
  42. var tests = [
  43. {
  44. config: [
  45. {
  46. showConfig: true,
  47. errorCount: 0
  48. }
  49. ],
  50. m: 'All show configs, nothing with errors',
  51. e: false
  52. },
  53. {
  54. config: [
  55. {
  56. showConfig: true,
  57. errorCount: 0
  58. },
  59. {
  60. showConfig: true,
  61. errorCount: 1
  62. }
  63. ],
  64. m: 'All show configs, 1 with errors',
  65. e: true
  66. },
  67. {
  68. config: [
  69. {
  70. showConfig: true,
  71. errorCount: 0
  72. },
  73. {
  74. showConfig: false,
  75. errorCount: 1
  76. }
  77. ],
  78. m: '1 has errors but not visible',
  79. e: false
  80. },
  81. {
  82. config: [
  83. {
  84. showConfig: false,
  85. errorCount: 0
  86. },
  87. {
  88. showConfig: false,
  89. errorCount: 1
  90. }
  91. ],
  92. m: '1 has errors, all not visible',
  93. e: false
  94. },
  95. {
  96. config: [
  97. {
  98. showConfig: true,
  99. errorCount: 1
  100. },
  101. {
  102. showConfig: true,
  103. errorCount: 1
  104. }
  105. ],
  106. m: 'All has errors, all not visible',
  107. e: true
  108. }
  109. ];
  110. tests.forEach(function (test) {
  111. it(test.m, function () {
  112. controller.set('stepConfigs', test.config);
  113. expect(controller.get('isSubmitDisabled')).to.equal(test.e);
  114. });
  115. });
  116. });
  117. describe('#loadStep()', function () {
  118. it('load step', function () {
  119. controller.set('stepConfigs', [
  120. {}
  121. ]);
  122. controller.set('securityUsers', ['user1']);
  123. controller.set('content.services', ['service1']);
  124. controller.set('content.serviceConfigProperties', ['config1']);
  125. sinon.stub(controller, 'clearStep', Em.K);
  126. sinon.stub(controller, 'loadUsers', Em.K);
  127. sinon.stub(controller, 'addUserPrincipals', Em.K);
  128. sinon.stub(controller, 'addMasterHostToGlobals', Em.K);
  129. sinon.stub(controller, 'addSlaveHostToGlobals', Em.K);
  130. sinon.stub(controller, 'renderServiceConfigs', Em.K);
  131. sinon.stub(controller, 'changeCategoryOnHa', Em.K);
  132. sinon.stub(controller, 'setStoredConfigsValue', Em.K);
  133. sinon.stub(controller, 'addHostPrincipals', Em.K);
  134. sinon.stub(App.Service, 'find', function () {
  135. return [
  136. {serviceName: 'HDFS'}
  137. ];
  138. });
  139. controller.loadStep();
  140. expect(controller.get('installedServices')).to.eql(['HDFS']);
  141. expect(controller.clearStep.calledOnce).to.be.true;
  142. expect(controller.loadUsers.calledOnce).to.be.true;
  143. expect(controller.addUserPrincipals.calledWith(['service1'], ['user1'])).to.be.true;
  144. expect(controller.addMasterHostToGlobals.calledOnce).to.be.true;
  145. expect(controller.addSlaveHostToGlobals.calledOnce).to.be.true;
  146. expect(controller.addHostPrincipals.calledOnce).to.be.true;
  147. expect(controller.renderServiceConfigs.calledWith(['service1'])).to.be.true;
  148. expect(controller.changeCategoryOnHa.calledWith(['service1'], [{}])).to.be.true;
  149. expect(controller.setStoredConfigsValue.calledWith(['config1'])).to.be.true;
  150. controller.clearStep.restore();
  151. controller.loadUsers.restore();
  152. controller.addUserPrincipals.restore();
  153. controller.addMasterHostToGlobals.restore();
  154. controller.addSlaveHostToGlobals.restore();
  155. controller.renderServiceConfigs.restore();
  156. controller.changeCategoryOnHa.restore();
  157. controller.setStoredConfigsValue.restore();
  158. controller.addHostPrincipals.restore();
  159. App.Service.find.restore();
  160. });
  161. });
  162. describe('#setStoredConfigsValue()', function () {
  163. it('storedConfigProperties is null', function () {
  164. expect(controller.setStoredConfigsValue(null)).to.be.false;
  165. });
  166. it('stepConfigs is empty', function () {
  167. controller.set('stepConfigs', []);
  168. expect(controller.setStoredConfigsValue([])).to.be.true;
  169. expect(controller.get('stepConfigs')).to.be.empty;
  170. });
  171. it('stepConfig has no configs', function () {
  172. controller.set('stepConfigs', [Em.Object.create({
  173. configs: []
  174. })]);
  175. expect(controller.setStoredConfigsValue([])).to.be.true;
  176. expect(controller.get('stepConfigs')[0].get('configs')).to.be.empty;
  177. });
  178. it('stepConfig has no stored configs', function () {
  179. controller.set('stepConfigs', [Em.Object.create({
  180. configs: [Em.Object.create({
  181. name: 'config1',
  182. value: 'value1'
  183. })]
  184. })]);
  185. var storedConfigProperties = [
  186. {
  187. name: 'config2',
  188. value: "value2"
  189. }
  190. ];
  191. expect(controller.setStoredConfigsValue(storedConfigProperties)).to.be.true;
  192. expect(controller.get('stepConfigs')[0].get('configs').findProperty('name', 'config1').get('value')).to.equal('value1');
  193. });
  194. it('stepConfig has stored configs', function () {
  195. controller.set('stepConfigs', [Em.Object.create({
  196. configs: [Em.Object.create({
  197. name: 'config2',
  198. value: 'value1'
  199. })]
  200. })]);
  201. var storedConfigProperties = [
  202. {
  203. name: 'config2',
  204. value: "value2"
  205. }
  206. ];
  207. expect(controller.setStoredConfigsValue(storedConfigProperties)).to.be.true;
  208. expect(controller.get('stepConfigs')[0].get('configs').findProperty('name', 'config2').get('value')).to.equal('value2');
  209. });
  210. });
  211. describe('#renderServiceConfigs()', function () {
  212. it('serviceConfigs and stepConfigs are empty', function () {
  213. controller.set('stepConfigs', []);
  214. controller.renderServiceConfigs([]);
  215. expect(controller.get('selectedService')).to.be.undefined;
  216. });
  217. it('serviceConfigs is empty', function () {
  218. controller.set('stepConfigs', [
  219. {showConfig: true}
  220. ]);
  221. controller.renderServiceConfigs([]);
  222. expect(controller.get('selectedService')).to.eql({showConfig: true});
  223. });
  224. it('serviceConfigs has service', function () {
  225. var serviceConfigs = [
  226. {
  227. serviceName: 'HDFS',
  228. configs: []
  229. }
  230. ];
  231. sinon.stub(controller, 'wrapConfigProperties', function () {
  232. return [];
  233. });
  234. controller.set('stepConfigs', []);
  235. controller.renderServiceConfigs(serviceConfigs);
  236. expect(controller.get('selectedService').get('serviceName')).to.equal('HDFS');
  237. expect(controller.get('selectedService').get('showConfig')).to.be.true;
  238. expect(controller.get('selectedService').get('configs')).to.be.empty;
  239. expect(controller.wrapConfigProperties.calledWith({
  240. serviceName: 'HDFS',
  241. configs: []
  242. })).to.be.true;
  243. controller.wrapConfigProperties.restore();
  244. });
  245. });
  246. describe('#wrapConfigProperties()', function () {
  247. it('_componentConfig is empty', function () {
  248. expect(controller.wrapConfigProperties({configs: []})).to.be.empty;
  249. });
  250. it('serviceConfigs has service', function () {
  251. var mock = Em.Object.create({
  252. validate: Em.K,
  253. isReconfigurable: true,
  254. isEditable: false
  255. });
  256. var _componentConfig = {configs: [
  257. {name: 'config1'}
  258. ]};
  259. sinon.stub(App.ServiceConfigProperty, 'create', function () {
  260. return mock;
  261. });
  262. sinon.spy(mock, 'validate');
  263. expect(controller.wrapConfigProperties(_componentConfig)[0].get('isEditable')).to.be.true;
  264. expect(App.ServiceConfigProperty.create.calledWith({name: 'config1'})).to.be.true;
  265. expect(mock.validate.calledOnce).to.be.true;
  266. mock.validate.restore();
  267. App.ServiceConfigProperty.create.restore();
  268. });
  269. });
  270. describe('#setHostsToConfig()', function () {
  271. it('service is null', function () {
  272. expect(controller.setHostsToConfig(null)).to.be.false;
  273. });
  274. it('service.configs is empty', function () {
  275. controller.set('content.services', [
  276. {
  277. serviceName: 'HDFS',
  278. configs: []
  279. }
  280. ]);
  281. expect(controller.setHostsToConfig('HDFS')).to.be.false;
  282. });
  283. it('No such config name in service.configs', function () {
  284. controller.set('content.services', [
  285. {
  286. serviceName: 'HDFS',
  287. configs: [
  288. {
  289. name: 'config1'
  290. }
  291. ]
  292. }
  293. ]);
  294. expect(controller.setHostsToConfig('HDFS', 'config2')).to.be.false;
  295. });
  296. it('Correct config in service.configs', function () {
  297. sinon.stub(App.Service, 'find', function () {
  298. return Em.Object.create({
  299. hostComponents: [
  300. Em.Object.create({
  301. componentName: 'comp1',
  302. hostName: 'host1'
  303. })
  304. ]
  305. });
  306. });
  307. expect(controller.setHostsToConfig('HDFS', 'config1', ['comp1'])).to.be.true;
  308. expect(controller.get('content.services')[0].configs[0].defaultValue).to.eql(['host1']);
  309. App.Service.find.restore();
  310. });
  311. });
  312. describe('#setHostToPrincipal()', function () {
  313. it('service is null', function () {
  314. expect(controller.setHostToPrincipal(null)).to.be.false;
  315. });
  316. it('service.configs is empty', function () {
  317. controller.set('content.services', [
  318. {
  319. serviceName: 'HDFS',
  320. configs: []
  321. }
  322. ]);
  323. expect(controller.setHostToPrincipal('HDFS')).to.be.false;
  324. });
  325. it('No such hostConfigName name in service.configs', function () {
  326. controller.set('content.services', [
  327. {
  328. serviceName: 'HDFS',
  329. configs: [
  330. {
  331. name: 'config1'
  332. }
  333. ]
  334. }
  335. ]);
  336. expect(controller.setHostToPrincipal('HDFS', 'config2', 'config1')).to.be.false;
  337. });
  338. it('No such principalConfigName name in service.configs', function () {
  339. expect(controller.setHostToPrincipal('HDFS', 'config1', 'config2')).to.be.false;
  340. });
  341. it('Correct config in service.configs', function () {
  342. controller.set('content.services', [
  343. {
  344. serviceName: 'HDFS',
  345. configs: [
  346. {
  347. name: 'config1',
  348. defaultValue: 'value1'
  349. },
  350. {
  351. name: 'principal1'
  352. }
  353. ]
  354. }
  355. ]);
  356. expect(controller.setHostToPrincipal('HDFS', 'config1', 'principal1', 'name1')).to.be.true;
  357. expect(controller.get('content.services')[0].configs[0].defaultValue).to.equal('value1');
  358. expect(controller.get('content.services')[0].configs[1].defaultValue).to.equal('name1value1');
  359. });
  360. it('Correct config in service.configs, defaultValue is array', function () {
  361. controller.set('content.services', [
  362. {
  363. serviceName: 'HDFS',
  364. configs: [
  365. {
  366. name: 'config1',
  367. defaultValue: ['Value1']
  368. },
  369. {
  370. name: 'principal1'
  371. }
  372. ]
  373. }
  374. ]);
  375. expect(controller.setHostToPrincipal('HDFS', 'config1', 'principal1', 'name1')).to.be.true;
  376. expect(controller.get('content.services')[0].configs[0].defaultValue).to.equal('Value1');
  377. expect(controller.get('content.services')[0].configs[1].defaultValue).to.equal('name1value1');
  378. });
  379. });
  380. describe('#loadUsers()', function () {
  381. afterEach(function () {
  382. App.router.get.restore();
  383. });
  384. it('serviceUsers is correct', function () {
  385. sinon.stub(App.router, 'get', function () {
  386. return Em.Object.create({serviceUsers: [
  387. {}
  388. ]})
  389. });
  390. controller.loadUsers();
  391. expect(controller.get('securityUsers')).to.eql([
  392. {}
  393. ]);
  394. });
  395. it('serviceUsers is null, testMode = true', function () {
  396. sinon.stub(App.router, 'get', function () {
  397. return Em.Object.create({serviceUsers: null})
  398. });
  399. App.testMode = true;
  400. controller.loadUsers();
  401. expect(controller.get('securityUsers').mapProperty('name')).to.eql(["hdfs_user",
  402. "mapred_user",
  403. "hbase_user",
  404. "hive_user",
  405. "smokeuser"
  406. ]);
  407. });
  408. it('serviceUsers is empty, testMode = true', function () {
  409. sinon.stub(App.router, 'get', function () {
  410. return Em.Object.create({serviceUsers: []})
  411. });
  412. App.testMode = true;
  413. controller.loadUsers();
  414. expect(controller.get('securityUsers').mapProperty('name')).to.eql(["hdfs_user",
  415. "mapred_user",
  416. "hbase_user",
  417. "hive_user",
  418. "smokeuser"
  419. ]);
  420. });
  421. it('serviceUsers is null, testMode = false', function () {
  422. sinon.stub(App.router, 'get', function () {
  423. return Em.Object.create({serviceUsers: null})
  424. });
  425. sinon.stub(App.db, 'getSecureUserInfo', function () {
  426. return [
  427. {}
  428. ];
  429. });
  430. App.testMode = false;
  431. controller.loadUsers();
  432. expect(controller.get('securityUsers')).to.eql([
  433. {}
  434. ]);
  435. expect(App.db.getSecureUserInfo.calledOnce).to.be.true;
  436. App.db.getSecureUserInfo.restore();
  437. });
  438. it('serviceUsers is empty, testMode = false', function () {
  439. sinon.stub(App.router, 'get', function () {
  440. return Em.Object.create({serviceUsers: []})
  441. });
  442. sinon.stub(App.db, 'getSecureUserInfo', function () {
  443. return [
  444. {}
  445. ];
  446. });
  447. App.testMode = false;
  448. controller.loadUsers();
  449. expect(controller.get('securityUsers')).to.eql([
  450. {}
  451. ]);
  452. expect(App.db.getSecureUserInfo.calledOnce).to.be.true;
  453. App.db.getSecureUserInfo.restore();
  454. });
  455. });
  456. describe('#addUserPrincipals()', function () {
  457. afterEach(function () {
  458. controller.setUserPrincipalValue.restore();
  459. });
  460. var serviceConfigs = [
  461. {
  462. serviceName: 'GENERAL',
  463. configs: [
  464. {name: 'hbase_principal_name'},
  465. {name: 'hbase_user_keytab'}
  466. ]
  467. }
  468. ];
  469. var securityUsers = [];
  470. it('HBASE service is not installed', function () {
  471. sinon.stub(controller, 'setUserPrincipalValue', Em.K);
  472. controller.addUserPrincipals(serviceConfigs, securityUsers);
  473. expect(controller.setUserPrincipalValue.calledTwice).to.be.true;
  474. });
  475. it('HBASE service is installed, setUserPrincipalValue return false', function () {
  476. sinon.stub(controller, 'setUserPrincipalValue', function () {
  477. return false;
  478. });
  479. serviceConfigs.push({serviceName: 'HBASE'});
  480. controller.addUserPrincipals(serviceConfigs, securityUsers);
  481. expect(controller.setUserPrincipalValue.calledThrice).to.be.true;
  482. });
  483. it('HBASE service is installed, setUserPrincipalValue return true', function () {
  484. sinon.stub(controller, 'setUserPrincipalValue', function () {
  485. return true;
  486. });
  487. controller.addUserPrincipals(serviceConfigs, securityUsers);
  488. expect(controller.setUserPrincipalValue.calledThrice).to.be.true;
  489. expect(serviceConfigs[0].configs.findProperty('name', 'hbase_principal_name').isVisible).to.be.true;
  490. expect(serviceConfigs[0].configs.findProperty('name', 'hbase_user_keytab').isVisible).to.be.true;
  491. });
  492. });
  493. describe('#setUserPrincipalValue()', function () {
  494. it('user and userPrincipal are null', function () {
  495. expect(controller.setUserPrincipalValue(null, null)).to.be.false;
  496. });
  497. it('user is null', function () {
  498. expect(controller.setUserPrincipalValue(null, {})).to.be.false;
  499. });
  500. it('userPrincipal is null', function () {
  501. expect(controller.setUserPrincipalValue({}, null)).to.be.false;
  502. });
  503. it('user and userPrincipal are correct', function () {
  504. var user = {value: 'value1'};
  505. var userPrincipal = {};
  506. expect(controller.setUserPrincipalValue(user, userPrincipal)).to.be.true;
  507. expect(userPrincipal.defaultValue).to.equal('value1');
  508. });
  509. });
  510. describe('#addSlaveHostToGlobals()', function () {
  511. it('slaveComponentMap is empty', function () {
  512. sinon.stub(controller, 'setHostsToConfig', Em.K);
  513. controller.set('slaveComponentMap', []);
  514. controller.addSlaveHostToGlobals();
  515. expect(controller.setHostsToConfig.called).to.be.false;
  516. controller.setHostsToConfig.restore();
  517. });
  518. it('Correct data', function () {
  519. sinon.stub(controller, 'setHostsToConfig', Em.K);
  520. controller.set('slaveComponentMap', [
  521. {
  522. serviceName: 'HDFS',
  523. configName: 'datanode_hosts',
  524. component: 'DATANODE'
  525. }
  526. ]);
  527. controller.addSlaveHostToGlobals();
  528. expect(controller.setHostsToConfig.calledWith('HDFS', 'datanode_hosts', ['DATANODE'])).to.be.true;
  529. controller.setHostsToConfig.restore();
  530. });
  531. });
  532. describe('#addMasterHostToGlobals()', function () {
  533. it('masterComponentMap is empty', function () {
  534. sinon.stub(controller, 'setHostsToConfig', Em.K);
  535. controller.set('masterComponentMap', []);
  536. controller.addMasterHostToGlobals();
  537. expect(controller.setHostsToConfig.called).to.be.false;
  538. controller.setHostsToConfig.restore();
  539. });
  540. it('Correct data', function () {
  541. sinon.stub(controller, 'setHostsToConfig', Em.K);
  542. controller.set('masterComponentMap', [
  543. {
  544. serviceName: 'HDFS',
  545. configName: 'datanode_hosts',
  546. components: ['DATANODE']
  547. }
  548. ]);
  549. controller.addMasterHostToGlobals();
  550. expect(controller.setHostsToConfig.calledWith('HDFS', 'datanode_hosts', ['DATANODE'])).to.be.true;
  551. controller.setHostsToConfig.restore();
  552. });
  553. });
  554. describe('#addHostPrincipals()', function () {
  555. it('hostToPrincipalMap is empty', function () {
  556. sinon.stub(controller, 'setHostToPrincipal', Em.K);
  557. controller.set('hostToPrincipalMap', []);
  558. controller.addHostPrincipals();
  559. expect(controller.setHostToPrincipal.called).to.be.false;
  560. controller.setHostToPrincipal.restore();
  561. });
  562. it('Correct data', function () {
  563. sinon.stub(controller, 'setHostToPrincipal', Em.K);
  564. controller.set('hostToPrincipalMap', [
  565. {
  566. serviceName: 'HDFS',
  567. configName: 'datanode_hosts',
  568. principalName: 'principal1',
  569. primaryName: 'name1'
  570. }
  571. ]);
  572. controller.addHostPrincipals();
  573. expect(controller.setHostToPrincipal.calledWith('HDFS', 'datanode_hosts', 'principal1', 'name1')).to.be.true;
  574. controller.setHostToPrincipal.restore();
  575. });
  576. });
  577. describe('#changeCategoryOnHa()', function () {
  578. beforeEach(function () {
  579. sinon.stub(controller, 'removeConfigCategory', Em.K);
  580. });
  581. afterEach(function () {
  582. controller.removeConfigCategory.restore();
  583. });
  584. var serviceConfigs = [{
  585. serviceName: 'HDFS',
  586. configCategories: []
  587. }];
  588. var stepConfigs = [Em.Object.create({
  589. serviceName: 'HDFS',
  590. configs: []
  591. })];
  592. it('HDFS service is absent', function () {
  593. expect(controller.changeCategoryOnHa([], [])).to.be.false;
  594. });
  595. it('HDFS service installed, App.testMode and App.testNameNodeHA - true', function () {
  596. App.testMode = true;
  597. App.testNameNodeHA = true;
  598. expect(controller.changeCategoryOnHa(serviceConfigs, stepConfigs)).to.be.true;
  599. expect(controller.removeConfigCategory.calledWith([], [], 'SNameNode')).to.be.true;
  600. App.testMode = false;
  601. App.testNameNodeHA = false;
  602. });
  603. it('HDFS service installed, content.isNnHa = true', function () {
  604. controller.set('content.isNnHa', 'true');
  605. expect(controller.changeCategoryOnHa(serviceConfigs, stepConfigs)).to.be.true;
  606. expect(controller.removeConfigCategory.calledWith([], [], 'SNameNode')).to.be.true;
  607. });
  608. it('HDFS service installed, HA disabled', function () {
  609. controller.set('content.isNnHa', 'false');
  610. expect(controller.changeCategoryOnHa(serviceConfigs, stepConfigs)).to.be.true;
  611. expect(controller.removeConfigCategory.calledWith([], [], 'JournalNode')).to.be.true;
  612. });
  613. });
  614. describe('#removeConfigCategory()', function () {
  615. it('properties should be hidden', function () {
  616. var properties = [
  617. Em.Object.create({
  618. category: 'comp1',
  619. isVisible: true
  620. })
  621. ];
  622. controller.removeConfigCategory(properties, [], 'comp1');
  623. expect(properties[0].isVisible).to.be.false;
  624. });
  625. it('category should be removed', function () {
  626. var configCategories = [
  627. Em.Object.create({
  628. name: 'comp1'
  629. })
  630. ];
  631. controller.removeConfigCategory([], configCategories, 'comp1');
  632. expect(configCategories).to.be.empty;
  633. });
  634. });
  635. });