manage_config_groups_controller_test.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  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. var c;
  20. describe('App.ManageConfigGroupsController', function() {
  21. var controller = App.ManageConfigGroupsController.create({});
  22. beforeEach(function() {
  23. c = App.ManageConfigGroupsController.create({});
  24. });
  25. var manageConfigGroupsController = App.ManageConfigGroupsController.create({});
  26. describe('#addConfigGroup', function() {
  27. beforeEach(function() {
  28. manageConfigGroupsController.addConfigGroup();
  29. });
  30. describe("#validate", function() {
  31. it("should display no warning if user inputs valid characters into group name", function() {
  32. manageConfigGroupsController.addGroupPopup.set('configGroupName', 'hello');
  33. expect(manageConfigGroupsController.addGroupPopup.warningMessage).to.be.empty;
  34. });
  35. it("should display warning if user inputs invalid characters into group name", function() {
  36. manageConfigGroupsController.addGroupPopup.set('configGroupName', '/{"!@#$%');
  37. expect(manageConfigGroupsController.addGroupPopup.warningMessage).to.equal('Invalid Group Name. Only alphanumerics, hyphens, spaces and underscores are allowed.');
  38. });
  39. });
  40. });
  41. describe('#renameConfigGroup', function() {
  42. beforeEach(function() {
  43. var configGroup = Ember.Object.create ({
  44. name: 'name',
  45. description: 'description'
  46. });
  47. manageConfigGroupsController.set('selectedConfigGroup', configGroup);
  48. manageConfigGroupsController.renameConfigGroup();
  49. });
  50. describe("#validate", function() {
  51. it("should display no warning if user inputs valid characters into group name", function() {
  52. manageConfigGroupsController.renameGroupPopup.set('configGroupName', 'hello');
  53. expect(manageConfigGroupsController.renameGroupPopup.warningMessage).to.be.empty;
  54. });
  55. it("should display warning if user inputs invalid characters into group name", function() {
  56. manageConfigGroupsController.renameGroupPopup.set('configGroupName', '/{"!@#$%');
  57. expect(manageConfigGroupsController.renameGroupPopup.warningMessage).to.equal('Invalid Group Name. Only alphanumerics, hyphens, spaces and underscores are allowed.');
  58. });
  59. });
  60. });
  61. describe('Host Name converting', function() {
  62. describe('#convertHostNames', function() {
  63. var hosts = [
  64. Em.Object.create({
  65. hostName: 'internal-1.com',
  66. publicHostName: 'external-1.com'
  67. }),
  68. Em.Object.create({
  69. hostName: 'internal-2.com',
  70. publicHostName: 'external-2.com'
  71. }),
  72. Em.Object.create({
  73. hostName: 'internal-3.com',
  74. publicHostName: 'external-3.com'
  75. })
  76. ];
  77. describe('#hostsToPublic', function() {
  78. beforeEach(function() {
  79. manageConfigGroupsController = App.ManageConfigGroupsController.create({
  80. clusterHosts: Em.A(hosts)
  81. });
  82. });
  83. var tests = [
  84. {
  85. hostsList: ['internal-1.com', 'internal-2.com', 'internal-3.com'],
  86. e: ['external-1.com', 'external-2.com', 'external-3.com']
  87. },
  88. {
  89. hostsList: 'internal-2.com',
  90. e: 'external-2.com'
  91. }
  92. ];
  93. var message = 'should convert internal host names `{0}` to external host names `{1}`';
  94. tests.forEach(function(test) {
  95. it(message.format(test.hostsList, test.e), function() {
  96. expect(manageConfigGroupsController.hostsToPublic(test.hostsList)).to.eql(test.e);
  97. });
  98. });
  99. });
  100. describe('#publicToHostName', function() {
  101. beforeEach(function() {
  102. manageConfigGroupsController = App.ManageConfigGroupsController.create({
  103. clusterHosts: Em.A(hosts)
  104. });
  105. });
  106. var tests = [
  107. {
  108. hostsList: ['external-1.com', 'external-2.com', 'external-3.com'],
  109. e: ['internal-1.com', 'internal-2.com', 'internal-3.com']
  110. },
  111. {
  112. hostsList: 'external-2.com',
  113. e: 'internal-2.com'
  114. }
  115. ];
  116. var message = 'should convert internal host names `{0}` to external host names `{1}`';
  117. tests.forEach(function(test) {
  118. it(message.format(test.hostsList, test.e), function() {
  119. expect(manageConfigGroupsController.publicToHostName(test.hostsList)).to.eql(test.e);
  120. });
  121. });
  122. });
  123. });
  124. });
  125. describe('#deleteHosts', function() {
  126. var hosts = [
  127. Em.Object.create({
  128. hostName: 'internal-1.com',
  129. publicHostName: 'external-1.com'
  130. }),
  131. Em.Object.create({
  132. hostName: 'internal-2.com',
  133. publicHostName: 'external-2.com'
  134. }),
  135. Em.Object.create({
  136. hostName: 'internal-3.com',
  137. publicHostName: 'external-3.com'
  138. })
  139. ];
  140. beforeEach(function() {
  141. manageConfigGroupsController = App.ManageConfigGroupsController.create({
  142. clusterHosts: hosts
  143. });
  144. });
  145. var createConfigGroupWithParentMock = function(groupHosts, groupPublicHosts, allHosts) {
  146. var parentCGHosts = allHosts.filter(function(host) {
  147. return !groupHosts.contains(host.get('hostName'));
  148. });
  149. return Em.Object.create({
  150. parentConfigGroup: {
  151. hosts: parentCGHosts.mapProperty('hostName'),
  152. publicHosts: parentCGHosts.mapProperty('publicHostName')
  153. },
  154. hosts: groupHosts,
  155. publicHosts: groupPublicHosts
  156. });
  157. };
  158. var tests = [
  159. {
  160. selectedHosts: ['external-1.com', 'external-2.com'],
  161. selectedConfigGroup: createConfigGroupWithParentMock(
  162. ['internal-1.com', 'internal-2.com'],
  163. ['external-1.com', 'external-2.com'], hosts),
  164. e: []
  165. },
  166. {
  167. selectedHosts: ['external-1.com'],
  168. selectedConfigGroup: createConfigGroupWithParentMock(
  169. ['internal-1.com', 'internal-2.com'],
  170. ['external-1.com', 'external-2.com'], hosts),
  171. e: ['external-2.com']
  172. }
  173. ];
  174. tests.forEach(function(test) {
  175. it('should remove {0}'.format(test.selectedHosts.slice(0)), function() {
  176. manageConfigGroupsController.reopen({
  177. selectedHosts: test.selectedHosts,
  178. selectedConfigGroup: test.selectedConfigGroup
  179. });
  180. manageConfigGroupsController.deleteHosts();
  181. expect(manageConfigGroupsController.get('selectedConfigGroup.publicHosts').toArray()).to.eql(test.e);
  182. });
  183. });
  184. });
  185. describe('#addHostsCallback', function() {
  186. beforeEach(function() {
  187. c.reopen({
  188. selectedConfigGroup: Em.Object.create({
  189. hosts: ['h1'],
  190. publicHosts: ['p_h1'],
  191. parentConfigGroup: Em.Object.create({
  192. hosts: ['h2', 'h3'],
  193. publicHosts: ['p_h2', 'p_h3']
  194. })
  195. })
  196. });
  197. sinon.stub(c, 'hostsToPublic', function(s) {return 'p_' + s;});
  198. });
  199. afterEach(function() {
  200. c.hostsToPublic.restore();
  201. });
  202. it('should set hosts to selectedConfigGroup and remove them form default group', function () {
  203. c.addHostsCallback(['h2', 'h3']);
  204. expect(c.get('selectedConfigGroup.hosts')).to.include.members(['h1','h2','h3']);
  205. expect(c.get('selectedConfigGroup.publicHosts')).to.include.members(['p_h1','p_h2','p_h3']);
  206. expect(c.get('selectedConfigGroup.parentConfigGroup.hosts').toArray()).to.be.empty;
  207. expect(c.get('selectedConfigGroup.parentConfigGroup.publicHosts').toArray()).to.be.empty;
  208. });
  209. });
  210. });