manage_config_groups_controller_test.js 6.9 KB

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