@eclipse-che/che-e2e 7.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (565) hide show
  1. package/README.md +86 -0
  2. package/TestConstants.ts +263 -0
  3. package/TimeoutConstants.ts +220 -0
  4. package/dist/TestConstants.d.ts +206 -0
  5. package/dist/TestConstants.d.ts.map +1 -0
  6. package/dist/TestConstants.js +216 -0
  7. package/dist/TestConstants.js.map +1 -0
  8. package/dist/TimeoutConstants.d.ts +164 -0
  9. package/dist/TimeoutConstants.d.ts.map +1 -0
  10. package/dist/TimeoutConstants.js +175 -0
  11. package/dist/TimeoutConstants.js.map +1 -0
  12. package/dist/driver/CheReporter.d.ts +18 -0
  13. package/dist/driver/CheReporter.d.ts.map +1 -0
  14. package/dist/driver/CheReporter.js +180 -0
  15. package/dist/driver/CheReporter.js.map +1 -0
  16. package/dist/driver/ChromeDriver.d.ts +21 -0
  17. package/dist/driver/ChromeDriver.d.ts.map +1 -0
  18. package/dist/driver/ChromeDriver.js +75 -0
  19. package/dist/driver/ChromeDriver.js.map +1 -0
  20. package/dist/driver/IDriver.d.ts +14 -0
  21. package/dist/driver/IDriver.d.ts.map +1 -0
  22. package/dist/driver/IDriver.js +3 -0
  23. package/dist/driver/IDriver.js.map +1 -0
  24. package/dist/index.d.ts +67 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +92 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/inversify.config.d.ts +13 -0
  29. package/dist/inversify.config.d.ts.map +1 -0
  30. package/dist/inversify.config.js +126 -0
  31. package/dist/inversify.config.js.map +1 -0
  32. package/dist/inversify.types.d.ts +68 -0
  33. package/dist/inversify.types.d.ts.map +1 -0
  34. package/dist/inversify.types.js +72 -0
  35. package/dist/inversify.types.js.map +1 -0
  36. package/dist/pageobjects/dashboard/CreateWorkspace.d.ts +20 -0
  37. package/dist/pageobjects/dashboard/CreateWorkspace.d.ts.map +1 -0
  38. package/dist/pageobjects/dashboard/CreateWorkspace.js +65 -0
  39. package/dist/pageobjects/dashboard/CreateWorkspace.js.map +1 -0
  40. package/dist/pageobjects/dashboard/Dashboard.d.ts +24 -0
  41. package/dist/pageobjects/dashboard/Dashboard.d.ts.map +1 -0
  42. package/dist/pageobjects/dashboard/Dashboard.js +111 -0
  43. package/dist/pageobjects/dashboard/Dashboard.js.map +1 -0
  44. package/dist/pageobjects/dashboard/Workspaces.d.ts +44 -0
  45. package/dist/pageobjects/dashboard/Workspaces.d.ts.map +1 -0
  46. package/dist/pageobjects/dashboard/Workspaces.js +157 -0
  47. package/dist/pageobjects/dashboard/Workspaces.js.map +1 -0
  48. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.d.ts +42 -0
  49. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.d.ts.map +1 -0
  50. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js +138 -0
  51. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetails.js.map +1 -0
  52. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins.d.ts +29 -0
  53. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins.d.ts.map +1 -0
  54. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins.js +97 -0
  55. package/dist/pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins.js.map +1 -0
  56. package/dist/pageobjects/ide/ContextMenu.d.ts +22 -0
  57. package/dist/pageobjects/ide/ContextMenu.d.ts.map +1 -0
  58. package/dist/pageobjects/ide/ContextMenu.js +66 -0
  59. package/dist/pageobjects/ide/ContextMenu.js.map +1 -0
  60. package/dist/pageobjects/ide/DebugView.d.ts +32 -0
  61. package/dist/pageobjects/ide/DebugView.d.ts.map +1 -0
  62. package/dist/pageobjects/ide/DebugView.js +98 -0
  63. package/dist/pageobjects/ide/DebugView.js.map +1 -0
  64. package/dist/pageobjects/ide/DialogWindow.d.ts +28 -0
  65. package/dist/pageobjects/ide/DialogWindow.d.ts.map +1 -0
  66. package/dist/pageobjects/ide/DialogWindow.js +102 -0
  67. package/dist/pageobjects/ide/DialogWindow.js.map +1 -0
  68. package/dist/pageobjects/ide/Editor.d.ts +78 -0
  69. package/dist/pageobjects/ide/Editor.d.ts.map +1 -0
  70. package/dist/pageobjects/ide/Editor.js +463 -0
  71. package/dist/pageobjects/ide/Editor.js.map +1 -0
  72. package/dist/pageobjects/ide/Ide.d.ts +61 -0
  73. package/dist/pageobjects/ide/Ide.d.ts.map +1 -0
  74. package/dist/pageobjects/ide/Ide.js +312 -0
  75. package/dist/pageobjects/ide/Ide.js.map +1 -0
  76. package/dist/pageobjects/ide/LeftToolBar.d.ts +23 -0
  77. package/dist/pageobjects/ide/LeftToolBar.d.ts.map +1 -0
  78. package/dist/pageobjects/ide/LeftToolBar.js +81 -0
  79. package/dist/pageobjects/ide/LeftToolBar.js.map +1 -0
  80. package/dist/pageobjects/ide/NavigationBar.d.ts +9 -0
  81. package/dist/pageobjects/ide/NavigationBar.d.ts.map +1 -0
  82. package/dist/pageobjects/ide/NavigationBar.js +57 -0
  83. package/dist/pageobjects/ide/NavigationBar.js.map +1 -0
  84. package/dist/pageobjects/ide/NotificationCenter.d.ts +22 -0
  85. package/dist/pageobjects/ide/NotificationCenter.d.ts.map +1 -0
  86. package/dist/pageobjects/ide/NotificationCenter.js +76 -0
  87. package/dist/pageobjects/ide/NotificationCenter.js.map +1 -0
  88. package/dist/pageobjects/ide/OpenDialogWidget.d.ts +36 -0
  89. package/dist/pageobjects/ide/OpenDialogWidget.d.ts.map +1 -0
  90. package/dist/pageobjects/ide/OpenDialogWidget.js +100 -0
  91. package/dist/pageobjects/ide/OpenDialogWidget.js.map +1 -0
  92. package/dist/pageobjects/ide/OpenWorkspaceWidget.d.ts +17 -0
  93. package/dist/pageobjects/ide/OpenWorkspaceWidget.d.ts.map +1 -0
  94. package/dist/pageobjects/ide/OpenWorkspaceWidget.js +62 -0
  95. package/dist/pageobjects/ide/OpenWorkspaceWidget.js.map +1 -0
  96. package/dist/pageobjects/ide/PreviewWidget.d.ts +35 -0
  97. package/dist/pageobjects/ide/PreviewWidget.d.ts.map +1 -0
  98. package/dist/pageobjects/ide/PreviewWidget.js +127 -0
  99. package/dist/pageobjects/ide/PreviewWidget.js.map +1 -0
  100. package/dist/pageobjects/ide/ProjectTree.d.ts +53 -0
  101. package/dist/pageobjects/ide/ProjectTree.d.ts.map +1 -0
  102. package/dist/pageobjects/ide/ProjectTree.js +275 -0
  103. package/dist/pageobjects/ide/ProjectTree.js.map +1 -0
  104. package/dist/pageobjects/ide/QuickOpenContainer.d.ts +20 -0
  105. package/dist/pageobjects/ide/QuickOpenContainer.d.ts.map +1 -0
  106. package/dist/pageobjects/ide/QuickOpenContainer.js +70 -0
  107. package/dist/pageobjects/ide/QuickOpenContainer.js.map +1 -0
  108. package/dist/pageobjects/ide/RightToolBar.d.ts +8 -0
  109. package/dist/pageobjects/ide/RightToolBar.d.ts.map +1 -0
  110. package/dist/pageobjects/ide/RightToolBar.js +51 -0
  111. package/dist/pageobjects/ide/RightToolBar.js.map +1 -0
  112. package/dist/pageobjects/ide/Terminal.d.ts +36 -0
  113. package/dist/pageobjects/ide/Terminal.d.ts.map +1 -0
  114. package/dist/pageobjects/ide/Terminal.js +204 -0
  115. package/dist/pageobjects/ide/Terminal.js.map +1 -0
  116. package/dist/pageobjects/ide/TopMenu.d.ts +28 -0
  117. package/dist/pageobjects/ide/TopMenu.d.ts.map +1 -0
  118. package/dist/pageobjects/ide/TopMenu.js +109 -0
  119. package/dist/pageobjects/ide/TopMenu.js.map +1 -0
  120. package/dist/pageobjects/ide/plugins/GitHubPullRequestPlugin.d.ts +36 -0
  121. package/dist/pageobjects/ide/plugins/GitHubPullRequestPlugin.d.ts.map +1 -0
  122. package/dist/pageobjects/ide/plugins/GitHubPullRequestPlugin.js +128 -0
  123. package/dist/pageobjects/ide/plugins/GitHubPullRequestPlugin.js.map +1 -0
  124. package/dist/pageobjects/ide/plugins/GitPlugin.d.ts +35 -0
  125. package/dist/pageobjects/ide/plugins/GitPlugin.d.ts.map +1 -0
  126. package/dist/pageobjects/ide/plugins/GitPlugin.js +120 -0
  127. package/dist/pageobjects/ide/plugins/GitPlugin.js.map +1 -0
  128. package/dist/pageobjects/ide/plugins/KubernetesPlugin.d.ts +32 -0
  129. package/dist/pageobjects/ide/plugins/KubernetesPlugin.d.ts.map +1 -0
  130. package/dist/pageobjects/ide/plugins/KubernetesPlugin.js +107 -0
  131. package/dist/pageobjects/ide/plugins/KubernetesPlugin.js.map +1 -0
  132. package/dist/pageobjects/ide/plugins/OpenshiftPlugin.d.ts +38 -0
  133. package/dist/pageobjects/ide/plugins/OpenshiftPlugin.d.ts.map +1 -0
  134. package/dist/pageobjects/ide/plugins/OpenshiftPlugin.js +99 -0
  135. package/dist/pageobjects/ide/plugins/OpenshiftPlugin.js.map +1 -0
  136. package/dist/pageobjects/ide/plugins/PluginsView.d.ts +43 -0
  137. package/dist/pageobjects/ide/plugins/PluginsView.d.ts.map +1 -0
  138. package/dist/pageobjects/ide/plugins/PluginsView.js +166 -0
  139. package/dist/pageobjects/ide/plugins/PluginsView.js.map +1 -0
  140. package/dist/pageobjects/login/ICheLoginPage.d.ts +13 -0
  141. package/dist/pageobjects/login/ICheLoginPage.d.ts.map +1 -0
  142. package/dist/pageobjects/login/ICheLoginPage.js +12 -0
  143. package/dist/pageobjects/login/ICheLoginPage.js.map +1 -0
  144. package/dist/pageobjects/login/IOcpLoginPage.d.ts +13 -0
  145. package/dist/pageobjects/login/IOcpLoginPage.d.ts.map +1 -0
  146. package/dist/pageobjects/login/IOcpLoginPage.js +12 -0
  147. package/dist/pageobjects/login/IOcpLoginPage.js.map +1 -0
  148. package/dist/pageobjects/login/MultiUserLoginPage.d.ts +18 -0
  149. package/dist/pageobjects/login/MultiUserLoginPage.d.ts.map +1 -0
  150. package/dist/pageobjects/login/MultiUserLoginPage.js +49 -0
  151. package/dist/pageobjects/login/MultiUserLoginPage.js.map +1 -0
  152. package/dist/pageobjects/login/OcpUserLoginPage.d.ts +18 -0
  153. package/dist/pageobjects/login/OcpUserLoginPage.d.ts.map +1 -0
  154. package/dist/pageobjects/login/OcpUserLoginPage.js +53 -0
  155. package/dist/pageobjects/login/OcpUserLoginPage.js.map +1 -0
  156. package/dist/pageobjects/login/RegularUserOcpCheLoginPage.d.ts +20 -0
  157. package/dist/pageobjects/login/RegularUserOcpCheLoginPage.d.ts.map +1 -0
  158. package/dist/pageobjects/login/RegularUserOcpCheLoginPage.js +75 -0
  159. package/dist/pageobjects/login/RegularUserOcpCheLoginPage.js.map +1 -0
  160. package/dist/pageobjects/login/UpdateAccountInformationPage.d.ts +24 -0
  161. package/dist/pageobjects/login/UpdateAccountInformationPage.d.ts.map +1 -0
  162. package/dist/pageobjects/login/UpdateAccountInformationPage.js +74 -0
  163. package/dist/pageobjects/login/UpdateAccountInformationPage.js.map +1 -0
  164. package/dist/pageobjects/openshift/CheLoginPage.d.ts +27 -0
  165. package/dist/pageobjects/openshift/CheLoginPage.d.ts.map +1 -0
  166. package/dist/pageobjects/openshift/CheLoginPage.js +88 -0
  167. package/dist/pageobjects/openshift/CheLoginPage.js.map +1 -0
  168. package/dist/pageobjects/openshift/OcpLoginPage.d.ts +30 -0
  169. package/dist/pageobjects/openshift/OcpLoginPage.d.ts.map +1 -0
  170. package/dist/pageobjects/openshift/OcpLoginPage.js +106 -0
  171. package/dist/pageobjects/openshift/OcpLoginPage.js.map +1 -0
  172. package/dist/pageobjects/third-parties/GitLoginPage.d.ts +27 -0
  173. package/dist/pageobjects/third-parties/GitLoginPage.d.ts.map +1 -0
  174. package/dist/pageobjects/third-parties/GitLoginPage.js +85 -0
  175. package/dist/pageobjects/third-parties/GitLoginPage.js.map +1 -0
  176. package/dist/pageobjects/third-parties/GitOauthAppsSettings.d.ts +33 -0
  177. package/dist/pageobjects/third-parties/GitOauthAppsSettings.d.ts.map +1 -0
  178. package/dist/pageobjects/third-parties/GitOauthAppsSettings.js +110 -0
  179. package/dist/pageobjects/third-parties/GitOauthAppsSettings.js.map +1 -0
  180. package/dist/tests/devfiles/CSlashCPlusPlus.spec.d.ts +12 -0
  181. package/dist/tests/devfiles/CSlashCPlusPlus.spec.d.ts.map +1 -0
  182. package/dist/tests/devfiles/CSlashCPlusPlus.spec.js +74 -0
  183. package/dist/tests/devfiles/CSlashCPlusPlus.spec.js.map +1 -0
  184. package/dist/tests/devfiles/DevfileSmoke.spec.d.ts +11 -0
  185. package/dist/tests/devfiles/DevfileSmoke.spec.d.ts.map +1 -0
  186. package/dist/tests/devfiles/DevfileSmoke.spec.js +48 -0
  187. package/dist/tests/devfiles/DevfileSmoke.spec.js.map +1 -0
  188. package/dist/tests/devfiles/DotNetCore.spec.d.ts +12 -0
  189. package/dist/tests/devfiles/DotNetCore.spec.d.ts.map +1 -0
  190. package/dist/tests/devfiles/DotNetCore.spec.js +82 -0
  191. package/dist/tests/devfiles/DotNetCore.spec.js.map +1 -0
  192. package/dist/tests/devfiles/Go.spec.d.ts +2 -0
  193. package/dist/tests/devfiles/Go.spec.d.ts.map +1 -0
  194. package/dist/tests/devfiles/Go.spec.js +73 -0
  195. package/dist/tests/devfiles/Go.spec.js.map +1 -0
  196. package/dist/tests/devfiles/JavaMaven.spec.d.ts +11 -0
  197. package/dist/tests/devfiles/JavaMaven.spec.d.ts.map +1 -0
  198. package/dist/tests/devfiles/JavaMaven.spec.js +61 -0
  199. package/dist/tests/devfiles/JavaMaven.spec.js.map +1 -0
  200. package/dist/tests/devfiles/JavaSpringBoot.spec.d.ts +11 -0
  201. package/dist/tests/devfiles/JavaSpringBoot.spec.d.ts.map +1 -0
  202. package/dist/tests/devfiles/JavaSpringBoot.spec.js +67 -0
  203. package/dist/tests/devfiles/JavaSpringBoot.spec.js.map +1 -0
  204. package/dist/tests/devfiles/JavaVertx.spec.d.ts +11 -0
  205. package/dist/tests/devfiles/JavaVertx.spec.d.ts.map +1 -0
  206. package/dist/tests/devfiles/JavaVertx.spec.js +61 -0
  207. package/dist/tests/devfiles/JavaVertx.spec.js.map +1 -0
  208. package/dist/tests/devfiles/NodeJS.spec.d.ts +2 -0
  209. package/dist/tests/devfiles/NodeJS.spec.d.ts.map +1 -0
  210. package/dist/tests/devfiles/NodeJS.spec.js +65 -0
  211. package/dist/tests/devfiles/NodeJS.spec.js.map +1 -0
  212. package/dist/tests/devfiles/PHPSimple.spec.d.ts +12 -0
  213. package/dist/tests/devfiles/PHPSimple.spec.d.ts.map +1 -0
  214. package/dist/tests/devfiles/PHPSimple.spec.js +75 -0
  215. package/dist/tests/devfiles/PHPSimple.spec.js.map +1 -0
  216. package/dist/tests/devfiles/Python.spec.d.ts +2 -0
  217. package/dist/tests/devfiles/Python.spec.d.ts.map +1 -0
  218. package/dist/tests/devfiles/Python.spec.js +59 -0
  219. package/dist/tests/devfiles/Python.spec.js.map +1 -0
  220. package/dist/tests/devfiles/PythonDjango.spec.d.ts +2 -0
  221. package/dist/tests/devfiles/PythonDjango.spec.d.ts.map +1 -0
  222. package/dist/tests/devfiles/PythonDjango.spec.js +62 -0
  223. package/dist/tests/devfiles/PythonDjango.spec.js.map +1 -0
  224. package/dist/tests/devfiles/Quarkus.spec.d.ts +2 -0
  225. package/dist/tests/devfiles/Quarkus.spec.d.ts.map +1 -0
  226. package/dist/tests/devfiles/Quarkus.spec.js +70 -0
  227. package/dist/tests/devfiles/Quarkus.spec.js.map +1 -0
  228. package/dist/tests/devfiles/Scala.spec.d.ts +11 -0
  229. package/dist/tests/devfiles/Scala.spec.d.ts.map +1 -0
  230. package/dist/tests/devfiles/Scala.spec.js +67 -0
  231. package/dist/tests/devfiles/Scala.spec.js.map +1 -0
  232. package/dist/tests/e2e/FactoryUrl.spec.d.ts +2 -0
  233. package/dist/tests/e2e/FactoryUrl.spec.d.ts.map +1 -0
  234. package/dist/tests/e2e/FactoryUrl.spec.js +45 -0
  235. package/dist/tests/e2e/FactoryUrl.spec.js.map +1 -0
  236. package/dist/tests/e2e/GitPublishBranch.spec.d.ts +11 -0
  237. package/dist/tests/e2e/GitPublishBranch.spec.d.ts.map +1 -0
  238. package/dist/tests/e2e/GitPublishBranch.spec.js +88 -0
  239. package/dist/tests/e2e/GitPublishBranch.spec.js.map +1 -0
  240. package/dist/tests/e2e/GitSelfSignCert.spec.d.ts +11 -0
  241. package/dist/tests/e2e/GitSelfSignCert.spec.d.ts.map +1 -0
  242. package/dist/tests/e2e/GitSelfSignCert.spec.js +83 -0
  243. package/dist/tests/e2e/GitSelfSignCert.spec.js.map +1 -0
  244. package/dist/tests/e2e/GitSsh.spec.d.ts +11 -0
  245. package/dist/tests/e2e/GitSsh.spec.d.ts.map +1 -0
  246. package/dist/tests/e2e/GitSsh.spec.js +118 -0
  247. package/dist/tests/e2e/GitSsh.spec.js.map +1 -0
  248. package/dist/tests/e2e/OpenshiftConnector.spec.d.ts +11 -0
  249. package/dist/tests/e2e/OpenshiftConnector.spec.d.ts.map +1 -0
  250. package/dist/tests/e2e/OpenshiftConnector.spec.js +122 -0
  251. package/dist/tests/e2e/OpenshiftConnector.spec.js.map +1 -0
  252. package/dist/tests/e2e/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.d.ts +2 -0
  253. package/dist/tests/e2e/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.d.ts.map +1 -0
  254. package/dist/tests/e2e/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.js +53 -0
  255. package/dist/tests/e2e/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.js.map +1 -0
  256. package/dist/tests/e2e/factories/DirectUrlFactoryWithRootFolderTest.spec.d.ts +2 -0
  257. package/dist/tests/e2e/factories/DirectUrlFactoryWithRootFolderTest.spec.d.ts.map +1 -0
  258. package/dist/tests/e2e/factories/DirectUrlFactoryWithRootFolderTest.spec.js +51 -0
  259. package/dist/tests/e2e/factories/DirectUrlFactoryWithRootFolderTest.spec.js.map +1 -0
  260. package/dist/tests/e2e/factories/DirectUrlFactoryWithSpecificBranchTest.spec.d.ts +2 -0
  261. package/dist/tests/e2e/factories/DirectUrlFactoryWithSpecificBranchTest.spec.d.ts.map +1 -0
  262. package/dist/tests/e2e/factories/DirectUrlFactoryWithSpecificBranchTest.spec.js +51 -0
  263. package/dist/tests/e2e/factories/DirectUrlFactoryWithSpecificBranchTest.spec.js.map +1 -0
  264. package/dist/tests/e2e_happy_path/DevWorkspaceHappyPath.spec.d.ts +2 -0
  265. package/dist/tests/e2e_happy_path/DevWorkspaceHappyPath.spec.d.ts.map +1 -0
  266. package/dist/tests/e2e_happy_path/DevWorkspaceHappyPath.spec.js +200 -0
  267. package/dist/tests/e2e_happy_path/DevWorkspaceHappyPath.spec.js.map +1 -0
  268. package/dist/tests/e2e_happy_path/HappyPath.spec.d.ts +11 -0
  269. package/dist/tests/e2e_happy_path/HappyPath.spec.d.ts.map +1 -0
  270. package/dist/tests/e2e_happy_path/HappyPath.spec.js +309 -0
  271. package/dist/tests/e2e_happy_path/HappyPath.spec.js.map +1 -0
  272. package/dist/tests/intelij/IntelijOpenWorkspace.spec.d.ts +11 -0
  273. package/dist/tests/intelij/IntelijOpenWorkspace.spec.d.ts.map +1 -0
  274. package/dist/tests/intelij/IntelijOpenWorkspace.spec.js +43 -0
  275. package/dist/tests/intelij/IntelijOpenWorkspace.spec.js.map +1 -0
  276. package/dist/tests/load_test/LoadTest.spec.d.ts +11 -0
  277. package/dist/tests/load_test/LoadTest.spec.d.ts.map +1 -0
  278. package/dist/tests/load_test/LoadTest.spec.js +44 -0
  279. package/dist/tests/load_test/LoadTest.spec.js.map +1 -0
  280. package/dist/tests/login/LinkCheAndOcpUsers.spec.d.ts +11 -0
  281. package/dist/tests/login/LinkCheAndOcpUsers.spec.d.ts.map +1 -0
  282. package/dist/tests/login/LinkCheAndOcpUsers.spec.js +39 -0
  283. package/dist/tests/login/LinkCheAndOcpUsers.spec.js.map +1 -0
  284. package/dist/tests/login/Login.spec.d.ts +11 -0
  285. package/dist/tests/login/Login.spec.d.ts.map +1 -0
  286. package/dist/tests/login/Login.spec.js +26 -0
  287. package/dist/tests/login/Login.spec.js.map +1 -0
  288. package/dist/tests/plugins/GitHubPullRequestPlugin.spec.d.ts +11 -0
  289. package/dist/tests/plugins/GitHubPullRequestPlugin.spec.d.ts.map +1 -0
  290. package/dist/tests/plugins/GitHubPullRequestPlugin.spec.js +122 -0
  291. package/dist/tests/plugins/GitHubPullRequestPlugin.spec.js.map +1 -0
  292. package/dist/tests/plugins/InstallPluginUsingUI.spec.d.ts +11 -0
  293. package/dist/tests/plugins/InstallPluginUsingUI.spec.d.ts.map +1 -0
  294. package/dist/tests/plugins/InstallPluginUsingUI.spec.js +69 -0
  295. package/dist/tests/plugins/InstallPluginUsingUI.spec.js.map +1 -0
  296. package/dist/tests/plugins/JavaPlugin.spec.d.ts +2 -0
  297. package/dist/tests/plugins/JavaPlugin.spec.d.ts.map +1 -0
  298. package/dist/tests/plugins/JavaPlugin.spec.js +82 -0
  299. package/dist/tests/plugins/JavaPlugin.spec.js.map +1 -0
  300. package/dist/tests/plugins/PhpPlugin.spec.d.ts +2 -0
  301. package/dist/tests/plugins/PhpPlugin.spec.d.ts.map +1 -0
  302. package/dist/tests/plugins/PhpPlugin.spec.js +94 -0
  303. package/dist/tests/plugins/PhpPlugin.spec.js.map +1 -0
  304. package/dist/tests/plugins/PythonPlugin.spec.d.ts +11 -0
  305. package/dist/tests/plugins/PythonPlugin.spec.d.ts.map +1 -0
  306. package/dist/tests/plugins/PythonPlugin.spec.js +80 -0
  307. package/dist/tests/plugins/PythonPlugin.spec.js.map +1 -0
  308. package/dist/tests/plugins/TypescriptPlugin.spec.d.ts +11 -0
  309. package/dist/tests/plugins/TypescriptPlugin.spec.d.ts.map +1 -0
  310. package/dist/tests/plugins/TypescriptPlugin.spec.js +147 -0
  311. package/dist/tests/plugins/TypescriptPlugin.spec.js.map +1 -0
  312. package/dist/tests/plugins/VscodeKubernetesPlugin.spec.d.ts +11 -0
  313. package/dist/tests/plugins/VscodeKubernetesPlugin.spec.d.ts.map +1 -0
  314. package/dist/tests/plugins/VscodeKubernetesPlugin.spec.js +76 -0
  315. package/dist/tests/plugins/VscodeKubernetesPlugin.spec.js.map +1 -0
  316. package/dist/tests/plugins/VscodeShellcheckPlugin.spec.d.ts +11 -0
  317. package/dist/tests/plugins/VscodeShellcheckPlugin.spec.d.ts.map +1 -0
  318. package/dist/tests/plugins/VscodeShellcheckPlugin.spec.js +89 -0
  319. package/dist/tests/plugins/VscodeShellcheckPlugin.spec.js.map +1 -0
  320. package/dist/tests/plugins/VscodeValePlugin.spec.d.ts +11 -0
  321. package/dist/tests/plugins/VscodeValePlugin.spec.d.ts.map +1 -0
  322. package/dist/tests/plugins/VscodeValePlugin.spec.js +77 -0
  323. package/dist/tests/plugins/VscodeValePlugin.spec.js.map +1 -0
  324. package/dist/tests/plugins/VscodeXmlPlugin.spec.d.ts +11 -0
  325. package/dist/tests/plugins/VscodeXmlPlugin.spec.d.ts.map +1 -0
  326. package/dist/tests/plugins/VscodeXmlPlugin.spec.js +98 -0
  327. package/dist/tests/plugins/VscodeXmlPlugin.spec.js.map +1 -0
  328. package/dist/tests/plugins/VscodeYamlPlugin.spec.d.ts +11 -0
  329. package/dist/tests/plugins/VscodeYamlPlugin.spec.d.ts.map +1 -0
  330. package/dist/tests/plugins/VscodeYamlPlugin.spec.js +96 -0
  331. package/dist/tests/plugins/VscodeYamlPlugin.spec.js.map +1 -0
  332. package/dist/testsLibrary/CodeExecutionTests.d.ts +49 -0
  333. package/dist/testsLibrary/CodeExecutionTests.d.ts.map +1 -0
  334. package/dist/testsLibrary/CodeExecutionTests.js +222 -0
  335. package/dist/testsLibrary/CodeExecutionTests.js.map +1 -0
  336. package/dist/testsLibrary/LanguageServerTests.d.ts +36 -0
  337. package/dist/testsLibrary/LanguageServerTests.d.ts.map +1 -0
  338. package/dist/testsLibrary/LanguageServerTests.js +237 -0
  339. package/dist/testsLibrary/LanguageServerTests.js.map +1 -0
  340. package/dist/testsLibrary/ProjectAndFileTests.d.ts +28 -0
  341. package/dist/testsLibrary/ProjectAndFileTests.d.ts.map +1 -0
  342. package/dist/testsLibrary/ProjectAndFileTests.js +100 -0
  343. package/dist/testsLibrary/ProjectAndFileTests.js.map +1 -0
  344. package/dist/testsLibrary/WorkspaceHandlingTests.d.ts +29 -0
  345. package/dist/testsLibrary/WorkspaceHandlingTests.d.ts.map +1 -0
  346. package/dist/testsLibrary/WorkspaceHandlingTests.js +87 -0
  347. package/dist/testsLibrary/WorkspaceHandlingTests.js.map +1 -0
  348. package/dist/utils/AnimationChecker.d.ts +16 -0
  349. package/dist/utils/AnimationChecker.d.ts.map +1 -0
  350. package/dist/utils/AnimationChecker.js +45 -0
  351. package/dist/utils/AnimationChecker.js.map +1 -0
  352. package/dist/utils/BrowserTabsUtil.d.ts +28 -0
  353. package/dist/utils/BrowserTabsUtil.d.ts.map +1 -0
  354. package/dist/utils/BrowserTabsUtil.js +115 -0
  355. package/dist/utils/BrowserTabsUtil.js.map +1 -0
  356. package/dist/utils/DriverHelper.d.ts +76 -0
  357. package/dist/utils/DriverHelper.d.ts.map +1 -0
  358. package/dist/utils/DriverHelper.js +616 -0
  359. package/dist/utils/DriverHelper.js.map +1 -0
  360. package/dist/utils/KeycloackUrlHandler.d.ts +15 -0
  361. package/dist/utils/KeycloackUrlHandler.d.ts.map +1 -0
  362. package/dist/utils/KeycloackUrlHandler.js +30 -0
  363. package/dist/utils/KeycloackUrlHandler.js.map +1 -0
  364. package/dist/utils/Logger.d.ts +39 -0
  365. package/dist/utils/Logger.d.ts.map +1 -0
  366. package/dist/utils/Logger.js +84 -0
  367. package/dist/utils/Logger.js.map +1 -0
  368. package/dist/utils/PreferencesHandler.d.ts +52 -0
  369. package/dist/utils/PreferencesHandler.d.ts.map +1 -0
  370. package/dist/utils/PreferencesHandler.js +139 -0
  371. package/dist/utils/PreferencesHandler.js.map +1 -0
  372. package/dist/utils/Sanitizer.d.ts +13 -0
  373. package/dist/utils/Sanitizer.d.ts.map +1 -0
  374. package/dist/utils/Sanitizer.js +29 -0
  375. package/dist/utils/Sanitizer.js.map +1 -0
  376. package/dist/utils/ScreenCatcher.d.ts +12 -0
  377. package/dist/utils/ScreenCatcher.d.ts.map +1 -0
  378. package/dist/utils/ScreenCatcher.js +107 -0
  379. package/dist/utils/ScreenCatcher.js.map +1 -0
  380. package/dist/utils/VCS/CheGitApi.d.ts +8 -0
  381. package/dist/utils/VCS/CheGitApi.d.ts.map +1 -0
  382. package/dist/utils/VCS/CheGitApi.js +42 -0
  383. package/dist/utils/VCS/CheGitApi.js.map +1 -0
  384. package/dist/utils/VCS/github/GitHubUtil.d.ts +15 -0
  385. package/dist/utils/VCS/github/GitHubUtil.d.ts.map +1 -0
  386. package/dist/utils/VCS/github/GitHubUtil.js +106 -0
  387. package/dist/utils/VCS/github/GitHubUtil.js.map +1 -0
  388. package/dist/utils/WorkspaceNameHandler.d.ts +17 -0
  389. package/dist/utils/WorkspaceNameHandler.d.ts.map +1 -0
  390. package/dist/utils/WorkspaceNameHandler.js +60 -0
  391. package/dist/utils/WorkspaceNameHandler.js.map +1 -0
  392. package/dist/utils/requestHandlers/CheApiRequestHandler.d.ts +28 -0
  393. package/dist/utils/requestHandlers/CheApiRequestHandler.d.ts.map +1 -0
  394. package/dist/utils/requestHandlers/CheApiRequestHandler.js +100 -0
  395. package/dist/utils/requestHandlers/CheApiRequestHandler.js.map +1 -0
  396. package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.d.ts +18 -0
  397. package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.d.ts.map +1 -0
  398. package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.js +33 -0
  399. package/dist/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.js.map +1 -0
  400. package/dist/utils/requestHandlers/headers/IAuthorizationHeaderHandler.d.ts +14 -0
  401. package/dist/utils/requestHandlers/headers/IAuthorizationHeaderHandler.d.ts.map +1 -0
  402. package/dist/utils/requestHandlers/headers/IAuthorizationHeaderHandler.js +12 -0
  403. package/dist/utils/requestHandlers/headers/IAuthorizationHeaderHandler.js.map +1 -0
  404. package/dist/utils/requestHandlers/tokens/CheMultiuserTokenHandler.d.ts +5 -0
  405. package/dist/utils/requestHandlers/tokens/CheMultiuserTokenHandler.d.ts.map +1 -0
  406. package/dist/utils/requestHandlers/tokens/CheMultiuserTokenHandler.js +50 -0
  407. package/dist/utils/requestHandlers/tokens/CheMultiuserTokenHandler.js.map +1 -0
  408. package/dist/utils/requestHandlers/tokens/ITokenHandler.d.ts +13 -0
  409. package/dist/utils/requestHandlers/tokens/ITokenHandler.d.ts.map +1 -0
  410. package/dist/utils/requestHandlers/tokens/ITokenHandler.js +12 -0
  411. package/dist/utils/requestHandlers/tokens/ITokenHandler.js.map +1 -0
  412. package/dist/utils/workspace/ITestWorkspaceUtil.d.ts +25 -0
  413. package/dist/utils/workspace/ITestWorkspaceUtil.d.ts.map +1 -0
  414. package/dist/utils/workspace/ITestWorkspaceUtil.js +12 -0
  415. package/dist/utils/workspace/ITestWorkspaceUtil.js.map +1 -0
  416. package/dist/utils/workspace/TestWorkspaceUtil.d.ts +34 -0
  417. package/dist/utils/workspace/TestWorkspaceUtil.d.ts.map +1 -0
  418. package/dist/utils/workspace/TestWorkspaceUtil.js +233 -0
  419. package/dist/utils/workspace/TestWorkspaceUtil.js.map +1 -0
  420. package/dist/utils/workspace/WorkspaceStatus.d.ts +15 -0
  421. package/dist/utils/workspace/WorkspaceStatus.d.ts.map +1 -0
  422. package/dist/utils/workspace/WorkspaceStatus.js +19 -0
  423. package/dist/utils/workspace/WorkspaceStatus.js.map +1 -0
  424. package/driver/CheReporter.ts +202 -0
  425. package/driver/ChromeDriver.ts +71 -0
  426. package/driver/IDriver.ts +14 -0
  427. package/files/devfiles/plugins/GitHubPullRequestPlugin.yaml +11 -0
  428. package/files/devfiles/plugins/InstallPluginUsingUI.yaml +3 -0
  429. package/files/devfiles/plugins/Java11PluginTest.yaml +17 -0
  430. package/files/devfiles/plugins/PhpPluginTest.yaml +47 -0
  431. package/files/devfiles/plugins/PythonPluginTest.yaml +14 -0
  432. package/files/devfiles/plugins/TypescriptNodeDebug2PluginTest.yaml +49 -0
  433. package/files/devfiles/plugins/VscodeKubernetesPlugin.yaml +12 -0
  434. package/files/devfiles/plugins/VscodeShellcheckPlugin.yaml +12 -0
  435. package/files/devfiles/plugins/VscodeValePlugin.yaml +42 -0
  436. package/files/devfiles/plugins/VscodeXmlPlugin.yaml +12 -0
  437. package/files/devfiles/plugins/VscodeYamlPlugin.yaml +12 -0
  438. package/files/happy-path/containers-happy-path.yaml +127 -0
  439. package/files/happy-path/happy-path-workspace.yaml +95 -0
  440. package/files/happy-path/petclinic-classpath.txt +49 -0
  441. package/generateIndex.sh +35 -0
  442. package/index.ts +67 -0
  443. package/initDefaultValues.sh +27 -0
  444. package/initDevfileTests.sh +48 -0
  445. package/initPluginTest.sh +9 -0
  446. package/inversify.config.ts +134 -0
  447. package/inversify.types.ts +71 -0
  448. package/mocha-all-devfiles.opts +8 -0
  449. package/mocha-all-factories.opts +8 -0
  450. package/mocha-all-plugins.opts +7 -0
  451. package/mocha-connector.opts +7 -0
  452. package/mocha-devworkspace-happy-path.opts +7 -0
  453. package/mocha-factory.opts +7 -0
  454. package/mocha-git-publish-branch.opts +7 -0
  455. package/mocha-git-self-sign-cert.opts +7 -0
  456. package/mocha-git-ssh.opts +7 -0
  457. package/mocha-happy-path.opts +8 -0
  458. package/mocha-java-vertx.opts +7 -0
  459. package/mocha-load.opts +7 -0
  460. package/mocha-single-devfile.opts +6 -0
  461. package/mocha-wkspc-creation-and-ls.opts +7 -0
  462. package/mocha.intelij.opts +7 -0
  463. package/mocha.ocp.link.opts +6 -0
  464. package/mocha.opts +7 -0
  465. package/mocha.single.plugin.opts +5 -0
  466. package/package.json +59 -0
  467. package/pageobjects/dashboard/CreateWorkspace.ts +58 -0
  468. package/pageobjects/dashboard/Dashboard.ts +112 -0
  469. package/pageobjects/dashboard/Workspaces.ts +189 -0
  470. package/pageobjects/dashboard/workspace-details/WorkspaceDetails.ts +153 -0
  471. package/pageobjects/dashboard/workspace-details/WorkspaceDetailsPlugins.ts +96 -0
  472. package/pageobjects/ide/ContextMenu.ts +55 -0
  473. package/pageobjects/ide/DebugView.ts +88 -0
  474. package/pageobjects/ide/DialogWindow.ts +101 -0
  475. package/pageobjects/ide/Editor.ts +601 -0
  476. package/pageobjects/ide/Ide.ts +370 -0
  477. package/pageobjects/ide/LeftToolBar.ts +81 -0
  478. package/pageobjects/ide/NavigationBar.ts +41 -0
  479. package/pageobjects/ide/NotificationCenter.ts +75 -0
  480. package/pageobjects/ide/OpenDialogWidget.ts +92 -0
  481. package/pageobjects/ide/OpenWorkspaceWidget.ts +48 -0
  482. package/pageobjects/ide/PreviewWidget.ts +135 -0
  483. package/pageobjects/ide/ProjectTree.ts +335 -0
  484. package/pageobjects/ide/QuickOpenContainer.ts +59 -0
  485. package/pageobjects/ide/RightToolBar.ts +34 -0
  486. package/pageobjects/ide/Terminal.ts +245 -0
  487. package/pageobjects/ide/TopMenu.ts +103 -0
  488. package/pageobjects/ide/plugins/GitHubPullRequestPlugin.ts +130 -0
  489. package/pageobjects/ide/plugins/GitPlugin.ts +118 -0
  490. package/pageobjects/ide/plugins/KubernetesPlugin.ts +113 -0
  491. package/pageobjects/ide/plugins/OpenshiftPlugin.ts +87 -0
  492. package/pageobjects/ide/plugins/PluginsView.ts +191 -0
  493. package/pageobjects/login/ICheLoginPage.ts +13 -0
  494. package/pageobjects/login/IOcpLoginPage.ts +13 -0
  495. package/pageobjects/login/MultiUserLoginPage.ts +33 -0
  496. package/pageobjects/login/OcpUserLoginPage.ts +38 -0
  497. package/pageobjects/login/RegularUserOcpCheLoginPage.ts +61 -0
  498. package/pageobjects/login/UpdateAccountInformationPage.ts +70 -0
  499. package/pageobjects/openshift/CheLoginPage.ts +91 -0
  500. package/pageobjects/openshift/OcpLoginPage.ts +113 -0
  501. package/pageobjects/third-parties/GitLoginPage.ts +81 -0
  502. package/pageobjects/third-parties/GitOauthAppsSettings.ts +110 -0
  503. package/tests/devfiles/CSlashCPlusPlus.spec.ts +81 -0
  504. package/tests/devfiles/DevfileSmoke.spec.ts +53 -0
  505. package/tests/devfiles/DotNetCore.spec.ts +90 -0
  506. package/tests/devfiles/Go.spec.ts +84 -0
  507. package/tests/devfiles/JavaMaven.spec.ts +67 -0
  508. package/tests/devfiles/JavaSpringBoot.spec.ts +74 -0
  509. package/tests/devfiles/JavaVertx.spec.ts +68 -0
  510. package/tests/devfiles/NodeJS.spec.ts +74 -0
  511. package/tests/devfiles/PHPSimple.spec.ts +83 -0
  512. package/tests/devfiles/Python.spec.ts +67 -0
  513. package/tests/devfiles/PythonDjango.spec.ts +70 -0
  514. package/tests/devfiles/Quarkus.spec.ts +79 -0
  515. package/tests/devfiles/Scala.spec.ts +74 -0
  516. package/tests/e2e/FactoryUrl.spec.ts +51 -0
  517. package/tests/e2e/GitPublishBranch.spec.ts +107 -0
  518. package/tests/e2e/GitSelfSignCert.spec.ts +107 -0
  519. package/tests/e2e/GitSsh.spec.ts +143 -0
  520. package/tests/e2e/OpenshiftConnector.spec.ts +142 -0
  521. package/tests/e2e/factories/DirectUrlFactoryWithKeepDirectoryTest.spec.ts +61 -0
  522. package/tests/e2e/factories/DirectUrlFactoryWithRootFolderTest.spec.ts +59 -0
  523. package/tests/e2e/factories/DirectUrlFactoryWithSpecificBranchTest.spec.ts +61 -0
  524. package/tests/e2e_happy_path/DevWorkspaceHappyPath.spec.ts +204 -0
  525. package/tests/e2e_happy_path/HappyPath.spec.ts +342 -0
  526. package/tests/intelij/IntelijOpenWorkspace.spec.ts +49 -0
  527. package/tests/load_test/LoadTest.spec.ts +54 -0
  528. package/tests/login/LinkCheAndOcpUsers.spec.ts +47 -0
  529. package/tests/login/Login.spec.ts +27 -0
  530. package/tests/plugins/GitHubPullRequestPlugin.spec.ts +150 -0
  531. package/tests/plugins/InstallPluginUsingUI.spec.ts +83 -0
  532. package/tests/plugins/JavaPlugin.spec.ts +108 -0
  533. package/tests/plugins/PhpPlugin.spec.ts +121 -0
  534. package/tests/plugins/PythonPlugin.spec.ts +92 -0
  535. package/tests/plugins/TypescriptPlugin.spec.ts +179 -0
  536. package/tests/plugins/VscodeKubernetesPlugin.spec.ts +89 -0
  537. package/tests/plugins/VscodeShellcheckPlugin.spec.ts +106 -0
  538. package/tests/plugins/VscodeValePlugin.spec.ts +91 -0
  539. package/tests/plugins/VscodeXmlPlugin.spec.ts +120 -0
  540. package/tests/plugins/VscodeYamlPlugin.spec.ts +117 -0
  541. package/testsLibrary/CodeExecutionTests.ts +196 -0
  542. package/testsLibrary/LanguageServerTests.ts +210 -0
  543. package/testsLibrary/ProjectAndFileTests.ts +82 -0
  544. package/testsLibrary/WorkspaceHandlingTests.ts +68 -0
  545. package/tsconfig.json +16 -0
  546. package/tslint.json +123 -0
  547. package/utils/AnimationChecker.ts +27 -0
  548. package/utils/BrowserTabsUtil.ts +120 -0
  549. package/utils/DriverHelper.ts +753 -0
  550. package/utils/KeycloackUrlHandler.ts +32 -0
  551. package/utils/Logger.ts +87 -0
  552. package/utils/PreferencesHandler.ts +120 -0
  553. package/utils/Sanitizer.ts +20 -0
  554. package/utils/ScreenCatcher.ts +74 -0
  555. package/utils/VCS/CheGitApi.ts +26 -0
  556. package/utils/VCS/github/GitHubUtil.ts +91 -0
  557. package/utils/WorkspaceNameHandler.ts +48 -0
  558. package/utils/requestHandlers/CheApiRequestHandler.ts +83 -0
  559. package/utils/requestHandlers/headers/CheMultiuserAuthorizationHeaderHandler.ts +27 -0
  560. package/utils/requestHandlers/headers/IAuthorizationHeaderHandler.ts +15 -0
  561. package/utils/requestHandlers/tokens/CheMultiuserTokenHandler.ts +39 -0
  562. package/utils/requestHandlers/tokens/ITokenHandler.ts +14 -0
  563. package/utils/workspace/ITestWorkspaceUtil.ts +26 -0
  564. package/utils/workspace/TestWorkspaceUtil.ts +275 -0
  565. package/utils/workspace/WorkspaceStatus.ts +15 -0
@@ -0,0 +1,32 @@
1
+ /*********************************************************************
2
+ * Copyright (c) 2019 Red Hat, Inc.
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ **********************************************************************/
10
+
11
+ import { TestConstants } from '../TestConstants';
12
+
13
+ export class KeycloackUrlHandler {
14
+ public static getBaseKeycloakUrl(): string {
15
+ let baseKeycloakUrl: string = TestConstants.TS_SELENIUM_BASE_URL;
16
+
17
+ if (!TestConstants.TS_SELENIUM_SINGLE_HOST) {
18
+ baseKeycloakUrl = baseKeycloakUrl.replace('che', 'keycloak');
19
+ }
20
+
21
+ return baseKeycloakUrl;
22
+ }
23
+
24
+ public static getTokenEndpointUrl(): string {
25
+ return `${this.getBaseKeycloakUrl()}/auth/realms/che/protocol/openid-connect/token`;
26
+ }
27
+
28
+ public static getIdentityCallbackUrl(): string {
29
+ return `${this.getBaseKeycloakUrl()}/auth/realms/che/broker/github/endpoint`;
30
+ }
31
+
32
+ }
@@ -0,0 +1,87 @@
1
+ import { TestConstants } from '../TestConstants';
2
+
3
+ /*********************************************************************
4
+ * Copyright (c) 2019 Red Hat, Inc.
5
+ *
6
+ * This program and the accompanying materials are made
7
+ * available under the terms of the Eclipse Public License 2.0
8
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
9
+ *
10
+ * SPDX-License-Identifier: EPL-2.0
11
+ **********************************************************************/
12
+
13
+ export abstract class Logger {
14
+
15
+ /**
16
+ * Uses for logging of fatal errors.
17
+ * @param text log text
18
+ */
19
+ public static error(text: string, indentLevel: number = 1) {
20
+ this.logText(indentLevel, `[ERROR] ${text}`);
21
+ }
22
+
23
+ /**
24
+ * Uses for logging of recoverable errors and general warnings.
25
+ * @param text log text
26
+ */
27
+ public static warn(text: string, indentLevel: number = 1) {
28
+ if (TestConstants.TS_SELENIUM_LOG_LEVEL === 'ERROR') {
29
+ return;
30
+ }
31
+ this.logText(indentLevel, `[WARN] ${text}`);
32
+ }
33
+
34
+ /**
35
+ * Uses for logging of the public methods of the pageobjects.
36
+ * @param text log text
37
+ */
38
+ public static info(text: string, indentLevel: number = 3) {
39
+ if (TestConstants.TS_SELENIUM_LOG_LEVEL === 'ERROR' ||
40
+ TestConstants.TS_SELENIUM_LOG_LEVEL === 'WARN') {
41
+ return;
42
+ }
43
+ this.logText(indentLevel, `• ${text}`);
44
+ }
45
+
46
+ /**
47
+ * Uses for logging of the public methods of the pageobjects.
48
+ * @param text log text
49
+ */
50
+ public static debug(text: string, indentLevel: number = 5) {
51
+ if (TestConstants.TS_SELENIUM_LOG_LEVEL === 'ERROR' ||
52
+ TestConstants.TS_SELENIUM_LOG_LEVEL === 'WARN' ||
53
+ TestConstants.TS_SELENIUM_LOG_LEVEL === 'INFO') {
54
+ return;
55
+ }
56
+ this.logText(indentLevel, `▼ ${text}`);
57
+ }
58
+
59
+ /**
60
+ * Uses for logging of the public methods of the {@link DriverHelper} or
61
+ * private methods inside of pageobjects.
62
+ * @param text log text
63
+ */
64
+ public static trace(text: string, indentLevel: number = 6) {
65
+ if (TestConstants.TS_SELENIUM_LOG_LEVEL === 'ERROR' ||
66
+ TestConstants.TS_SELENIUM_LOG_LEVEL === 'WARN' ||
67
+ TestConstants.TS_SELENIUM_LOG_LEVEL === 'INFO' ||
68
+ TestConstants.TS_SELENIUM_LOG_LEVEL === 'DEBUG') {
69
+ return;
70
+ }
71
+ this.logText(indentLevel, `‣ ${text}`);
72
+ }
73
+
74
+ private static logText(messageIndentationLevel: number, text: string) {
75
+ // start group for every level
76
+ for (let i = 0; i < messageIndentationLevel; i++) {
77
+ console.group();
78
+ }
79
+ // print the trimmed text
80
+ // if multiline, the message should be properly padded
81
+ console.log(text);
82
+ // end group for every level
83
+ for (let i = 0; i < messageIndentationLevel; i++) {
84
+ console.groupEnd();
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,120 @@
1
+ /*********************************************************************
2
+ * Copyright (c) 2019 Red Hat, Inc.
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ **********************************************************************/
10
+
11
+ import { injectable, inject } from 'inversify';
12
+ import { Logger } from './Logger';
13
+ import { CLASSES } from '../inversify.types';
14
+ import { CheApiRequestHandler } from './requestHandlers/CheApiRequestHandler';
15
+ import { Editor } from '../pageobjects/ide/Editor';
16
+ import { QuickOpenContainer } from '../pageobjects/ide/QuickOpenContainer';
17
+ import { TopMenu } from '../pageobjects/ide/TopMenu';
18
+ import { Key } from 'selenium-webdriver';
19
+
20
+ export enum TerminalRendererType {
21
+ canvas = 'canvas',
22
+ dom = 'dom'
23
+ }
24
+
25
+ export enum AskForConfirmationType {
26
+ never = 'never',
27
+ ifRquired = 'ifRequired',
28
+ always = 'always'
29
+ }
30
+
31
+ @injectable()
32
+ export class PreferencesHandler {
33
+
34
+ constructor(@inject(CLASSES.CheApiRequestHandler) private readonly requestHandler: CheApiRequestHandler,
35
+ @inject(CLASSES.Editor) private readonly editor: Editor,
36
+ @inject(CLASSES.QuickOpenContainer) private readonly quickOpenContainer: QuickOpenContainer,
37
+ @inject(CLASSES.TopMenu) private readonly topMenu: TopMenu) {
38
+ }
39
+
40
+ /**
41
+ * Works properly only for the running workspace.
42
+ */
43
+ public async setPreferenceUsingUI(property: string, value: any) {
44
+ const tabTitle: string = 'settings.json';
45
+
46
+ await this.topMenu.selectOption('View', 'Find Command...');
47
+ await this.quickOpenContainer.typeAndSelectSuggestion('Preferences:', 'Preferences: Open Preferences (JSON)');
48
+
49
+ let editorText: string = await this.editor.getEditorVisibleText(tabTitle);
50
+ let preferences = JSON.parse(editorText);
51
+ preferences[property] = value;
52
+
53
+ await this.editor.deleteAllText(tabTitle);
54
+ await this.editor.type(tabTitle, JSON.stringify(preferences), 1);
55
+ await this.editor.type(tabTitle, Key.chord(Key.CONTROL, Key.SHIFT, 'i'), 1);
56
+ }
57
+
58
+ /**
59
+ * Works properly only if set before workspace startup.
60
+ */
61
+ public async setTerminalType(type: TerminalRendererType) {
62
+ Logger.debug('PreferencesHandler.setTerminalToDom');
63
+ await this.setPreference('terminal.integrated.rendererType', type);
64
+ }
65
+
66
+ /**
67
+ *
68
+ * @param askForConfirmation possible values are "never", "ifRequired" and "always"
69
+ */
70
+ public async setConfirmExit(askForConfirmation: AskForConfirmationType) {
71
+ Logger.debug(`PreferencesHandler.setConfirmExit to ${askForConfirmation}`);
72
+ await this.setPreference(`application.confirmExit`, askForConfirmation);
73
+ }
74
+
75
+ /**
76
+ * Works properly only if set before workspace startup.
77
+ */
78
+ public async setUseGoLanaguageServer() {
79
+ Logger.debug(`PreferencesHandler.setUseGoLanguageServer to true.`);
80
+ await this.setPreference('go.useLanguageServer', 'true');
81
+ }
82
+
83
+ /**
84
+ * Works properly only if set before workspace startup.
85
+ */
86
+ public async setVscodeKubernetesPluginConfig(vsKubernetesConfig: any) {
87
+ Logger.debug(`PreferencesHandler.setVscodeKubernetesPluginConfig`);
88
+ await this.setPreference('vs-kubernetes', vsKubernetesConfig);
89
+ }
90
+
91
+ public async setPreference(attribute: string, value: any) {
92
+ Logger.trace(`PreferencesHandler.setPreferences ${attribute} to ${value}`);
93
+ let response;
94
+ try {
95
+ response = await this.requestHandler.get('api/preferences');
96
+ } catch (e) {
97
+ Logger.error(`PreferencesHandler.setPreferences failed to get user preferences: ${e}`);
98
+ return;
99
+ }
100
+ let userPref = response.data;
101
+ try {
102
+ let theiaPref = JSON.parse(userPref['theia-user-preferences']);
103
+ theiaPref[attribute] = value;
104
+ userPref['theia-user-preferences'] = JSON.stringify(theiaPref);
105
+ await this.requestHandler.post('api/preferences', userPref);
106
+ } catch (e) {
107
+ // setting terminal before running a workspace, so no theia preferences are set
108
+ Logger.warn(`PreferencesHandler.setPreference could not set theia-user-preferences from api/preferences response, forcing manually.`);
109
+ let theiaPref = `{ "${attribute}":"${value}" }`;
110
+ userPref['theia-user-preferences'] = JSON.stringify(JSON.parse(theiaPref));
111
+ try {
112
+ await this.requestHandler.post('api/preferences', userPref);
113
+ } catch (e) {
114
+ Logger.error(`PreferencesHandler.setPreference failed to manually set preferences value: ${e}`);
115
+ return;
116
+ }
117
+ }
118
+ Logger.trace(`PreferencesHandler.setPreferences ${attribute} to ${value} done.`);
119
+ }
120
+ }
@@ -0,0 +1,20 @@
1
+ /*********************************************************************
2
+ * Copyright (c) 2021 Red Hat, Inc.
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ **********************************************************************/
10
+
11
+ import { injectable } from 'inversify';
12
+
13
+ @injectable()
14
+ export class Sanitizer {
15
+
16
+ public sanitize(arg: string): string {
17
+ return arg.replace(/[\/]/g, '+').replace(/[\,]/g, '.').replace(/[\:]/g, '-').replace(/[\'\"]/g, '').replace(/[^a-z0-9\+\-\.\(\)\[\]\_]/gi, '_');
18
+ }
19
+
20
+ }
@@ -0,0 +1,74 @@
1
+ /*********************************************************************
2
+ * Copyright (c) 2021 Red Hat, Inc.
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ **********************************************************************/
10
+ import * as fs from 'fs';
11
+ import { injectable, inject } from 'inversify';
12
+ import { CLASSES } from '../inversify.types';
13
+ import { DriverHelper } from './DriverHelper';
14
+ import { TestConstants } from '..';
15
+ import { Sanitizer } from './Sanitizer';
16
+ import { error } from 'selenium-webdriver';
17
+
18
+ @injectable()
19
+ export class ScreenCatcher {
20
+ constructor(@inject(CLASSES.DriverHelper) private readonly driverHelper: DriverHelper,
21
+ @inject(CLASSES.Sanitizer) private readonly sanitizer: Sanitizer) { }
22
+
23
+ async catchMethodScreen(methodName: string, methodIndex: number, screenshotIndex: number) {
24
+ const executionScreenCastDir = `${TestConstants.TS_SELENIUM_REPORT_FOLDER}/executionScreencast`;
25
+ const executionScreenCastErrorsDir = `${TestConstants.TS_SELENIUM_REPORT_FOLDER}/executionScreencastErrors`;
26
+ const formattedMethodIndex: string = new Intl.NumberFormat('en-us', { minimumIntegerDigits: 3 }).format(methodIndex);
27
+ const formattedScreenshotIndex: string = new Intl.NumberFormat('en-us', { minimumIntegerDigits: 5 }).format(screenshotIndex).replace(/,/g, '');
28
+
29
+ if (!fs.existsSync(TestConstants.TS_SELENIUM_REPORT_FOLDER)) {
30
+ fs.mkdirSync(TestConstants.TS_SELENIUM_REPORT_FOLDER);
31
+ }
32
+
33
+ if (!fs.existsSync(executionScreenCastDir)) {
34
+ fs.mkdirSync(executionScreenCastDir);
35
+ }
36
+
37
+ const date: Date = new Date();
38
+ const timeStr: string = date.toLocaleTimeString('en-us', { hour12: false }) + '.' + new Intl.NumberFormat('en-us', { minimumIntegerDigits: 3 }).format(date.getMilliseconds());
39
+
40
+ const screenshotPath: string = `${executionScreenCastDir}/${formattedMethodIndex}-${formattedScreenshotIndex}--(${this.sanitizer.sanitize(timeStr)})_${this.sanitizer.sanitize(methodName)}.png`;
41
+
42
+ try {
43
+ await this.catchScreen(screenshotPath);
44
+ } catch (err) {
45
+ if (!fs.existsSync(executionScreenCastErrorsDir)) {
46
+ fs.mkdirSync(executionScreenCastErrorsDir);
47
+ }
48
+
49
+ let errorLogFilePath: string = screenshotPath.replace('.png', '.txt');
50
+ errorLogFilePath = errorLogFilePath.replace(executionScreenCastDir, executionScreenCastErrorsDir);
51
+ if (err instanceof error.IError) {
52
+ await this.writeErrorLog(errorLogFilePath, err);
53
+ }
54
+ }
55
+ }
56
+
57
+ async catchScreen(screenshotPath: string) {
58
+ const screenshot: string = await this.driverHelper.getDriver().takeScreenshot();
59
+ const screenshotStream = fs.createWriteStream(screenshotPath);
60
+ screenshotStream.write(Buffer.from(screenshot, 'base64'));
61
+ screenshotStream.end();
62
+ }
63
+
64
+ async writeErrorLog(errorLogPath: string, err: error.IError) {
65
+ console.log(`Failed to save screenshot, additional information in the ${errorLogPath}`);
66
+
67
+ if (err.stack) {
68
+ const screenshotStream = fs.createWriteStream(errorLogPath);
69
+ screenshotStream.write(Buffer.from(err.stack, 'utf8'));
70
+ screenshotStream.end();
71
+ }
72
+ }
73
+
74
+ }
@@ -0,0 +1,26 @@
1
+ import { injectable, inject } from 'inversify';
2
+ import { CLASSES } from '../../inversify.types';
3
+ import { CheApiRequestHandler } from '../../utils/requestHandlers/CheApiRequestHandler';
4
+
5
+
6
+ @injectable()
7
+ export class CheGitApi {
8
+ static readonly GIT_API_ENTRIPOINT_URL = 'api/ssh/vcs';
9
+
10
+ constructor(@inject(CLASSES.CheApiRequestHandler) private readonly processRequestHandler: CheApiRequestHandler) { }
11
+
12
+
13
+
14
+ public async getPublicSSHKey(): Promise<string> {
15
+
16
+ try {
17
+ const responce = await this.processRequestHandler.get(CheGitApi.GIT_API_ENTRIPOINT_URL);
18
+ return responce.data[0].publicKey;
19
+ } catch (error) {
20
+ console.error('Cannot get public ssh key with API \n' + error);
21
+ throw error;
22
+ }
23
+
24
+ }
25
+
26
+ }
@@ -0,0 +1,91 @@
1
+ import { injectable } from 'inversify';
2
+ import axios from 'axios';
3
+
4
+ @injectable()
5
+ export class GitHubUtil {
6
+ private static readonly GITHUB_API_ENTRIPOINT_URL = 'https://api.github.com/';
7
+ /**
8
+ * add public part of ssh key to the defied github account
9
+ * @param authToken
10
+ * @param title
11
+ * @param key
12
+ */
13
+ async addPublicSshKeyToUserAccount(authToken: string, title: string, key: string) {
14
+ const gitHubApiSshURL: string = GitHubUtil.GITHUB_API_ENTRIPOINT_URL + 'user/keys';
15
+ const authHeader = { headers: { 'Authorization': 'token ' + authToken, 'Content-Type': 'application/json' } };
16
+
17
+ const data = {
18
+ title: `${title}`,
19
+ key: `${key}`
20
+ };
21
+
22
+ try { await axios.post(gitHubApiSshURL, JSON.stringify(data), authHeader); } catch (error) {
23
+ console.error('Cannot add the public key to the GitHub account: ');
24
+ console.error(error);
25
+ throw error;
26
+ }
27
+ }
28
+
29
+ async getRawContentFromFile(pathToFile: string): Promise<string> {
30
+ const gitHubContentEntryPointUrl: string = 'https://raw.githubusercontent.com/';
31
+ const pathToRawContent: string = `${gitHubContentEntryPointUrl}${pathToFile}`;
32
+ const authorization: string = 'Authorization';
33
+ const contentType: string = 'Content-Type';
34
+
35
+ try {
36
+ delete axios.defaults.headers.common[authorization];
37
+ delete axios.defaults.headers.common[contentType];
38
+ const response = await axios.get(`${gitHubContentEntryPointUrl}${pathToFile}`);
39
+ return response.data;
40
+ } catch (error) {
41
+ console.error('Cannot get content form the raw github content: ' + pathToRawContent);
42
+ console.error(error);
43
+ throw error;
44
+ }
45
+ }
46
+
47
+ async getPublicSshKeys(authToken: string): Promise<Array<string>> {
48
+ const gitHubApiSshURL: string = GitHubUtil.GITHUB_API_ENTRIPOINT_URL + 'user/keys';
49
+ const authHeader = { headers: { 'Authorization': 'token ' + authToken, 'Content-Type': 'application/json' } };
50
+ try {
51
+ const response = await axios.get(gitHubApiSshURL, authHeader);
52
+ const stringified = JSON.stringify(response.data);
53
+ const arrayOfWorkspaces = JSON.parse(stringified);
54
+ const idOfRunningWorkspace: Array<string> = new Array();
55
+ for (let entry of arrayOfWorkspaces) {
56
+ idOfRunningWorkspace.push(entry.id);
57
+ }
58
+ return idOfRunningWorkspace;
59
+ } catch (error) {
60
+ console.error('Cannot get public Keys from github: ' + gitHubApiSshURL);
61
+ console.error(error);
62
+ throw error;
63
+ }
64
+ }
65
+
66
+ async removePublicSshKey(authToken: string, keyId: string) {
67
+ const gitHubApiSshURL: string = GitHubUtil.GITHUB_API_ENTRIPOINT_URL + 'user/keys/' + keyId;
68
+ const authHeader = { headers: { 'Authorization': 'token ' + authToken, 'Content-Type': 'application/json' } };
69
+ try { await axios.delete(gitHubApiSshURL, authHeader); } catch (error) {
70
+ console.error('Cannot delete the public key from the GitHub account: ');
71
+ console.error(error);
72
+ throw error;
73
+ }
74
+ }
75
+
76
+
77
+ async removeAllPublicSshKeys(authToken: string) {
78
+ try {
79
+ const idList: string[] = await this.getPublicSshKeys(authToken);
80
+ for (let id of idList) {
81
+ this.removePublicSshKey(authToken, id);
82
+ }
83
+
84
+ } catch (error) {
85
+ console.error('Cannot delete the public key from the GitHub account: ');
86
+ console.error(error);
87
+ throw error;
88
+ }
89
+ }
90
+
91
+ }
@@ -0,0 +1,48 @@
1
+ /*********************************************************************
2
+ * Copyright (c) 2019 Red Hat, Inc.
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ **********************************************************************/
10
+
11
+ import { CLASSES } from '../inversify.types';
12
+ import { inject, injectable } from 'inversify';
13
+ import { BrowserTabsUtil } from './BrowserTabsUtil';
14
+ import { Logger } from './Logger';
15
+
16
+ @injectable()
17
+ export class WorkspaceNameHandler {
18
+
19
+ constructor(@inject(CLASSES.BrowserTabsUtil) private readonly browserTabsUtil: BrowserTabsUtil) {}
20
+
21
+ public generateWorkspaceName(prefix: string, randomLength: number): string {
22
+ const possibleCharacters: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
23
+ const possibleCharactersLength: number = possibleCharacters.length;
24
+ let randomPart: string = '';
25
+ Logger.debug('WorkspaceNameHandler.generateWorkspaceName');
26
+
27
+ for (let i = 0; i < randomLength; i++) {
28
+ let currentRandomIndex: number = Math.floor(Math.random() * Math.floor(possibleCharactersLength));
29
+
30
+ randomPart += possibleCharacters[currentRandomIndex];
31
+ }
32
+
33
+ return prefix + randomPart;
34
+ }
35
+
36
+ public async getNameFromUrl(): Promise<string> {
37
+ let workspaceUrl: string = await this.browserTabsUtil.getCurrentUrl();
38
+ Logger.debug(`WorkspaceNameHandler.fromWorkspaceUrl workspaceUrl: ${workspaceUrl}`);
39
+
40
+ const workspaceUrlParts: string[] = workspaceUrl.split('/');
41
+ const workspaceNameQueryString: string = workspaceUrlParts[workspaceUrlParts.length - 1];
42
+ const workspaceName: string = workspaceNameQueryString.split('?')[0];
43
+
44
+ Logger.debug(`workspaceName: ${workspaceName}`);
45
+
46
+ return workspaceName;
47
+ }
48
+ }
@@ -0,0 +1,83 @@
1
+ /*********************************************************************
2
+ * Copyright (c) 2019 Red Hat, Inc.
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ **********************************************************************/
10
+
11
+ import axios, { AxiosResponse, AxiosRequestConfig } from 'axios';
12
+ import { TestConstants } from '../../TestConstants';
13
+ import { TYPES } from '../../inversify.types';
14
+ import { inject, injectable } from 'inversify';
15
+ import { IAuthorizationHeaderHandler } from './headers/IAuthorizationHeaderHandler';
16
+
17
+ @injectable()
18
+ export class CheApiRequestHandler {
19
+
20
+ /**
21
+ * This method adds a request interceptor into axios request interceptors list and returns an ID of the interceptor
22
+ */
23
+ public static enableRequestInteceptor(): number {
24
+ console.log(`CheApiRequestHandler.enableRequestInterceptor`);
25
+ return axios.interceptors.request.use( request => {
26
+ try {
27
+ let request_censored: AxiosRequestConfig = JSON.parse(JSON.stringify(request));
28
+ request_censored.headers.Authorization = 'CENSORED';
29
+ console.log(`RequestHandler request:\n`, request_censored);
30
+ } catch (err) {
31
+ console.log(`RequestHandler request: Failed to deep clone AxiosRequestConfig:`, err);
32
+ }
33
+ return request;
34
+ });
35
+ }
36
+
37
+ /**
38
+ * This method adds a response interceptor into axios response interceptors list and returns an ID of the interceptor
39
+ */
40
+ public static enableResponseInterceptor(): number {
41
+ console.log(`CheApiRequestHandler.enableResponseRedirects`);
42
+ return axios.interceptors.response.use( response => {
43
+ try {
44
+ let response_censored: AxiosResponse = JSON.parse(JSON.stringify(response, (key, value) => {
45
+ switch (key) {
46
+ case 'request': return 'CENSORED';
47
+ default: return value;
48
+ }
49
+ }));
50
+ response_censored.config.headers.Authorization = 'CENSORED';
51
+ if (response_censored.data.access_token != null) {
52
+ response_censored.data.access_token = 'CENSORED';
53
+ }
54
+ if (response_censored.data.refresh_token != null) {
55
+ response_censored.data.refresh_token = 'CENSORED';
56
+ }
57
+ console.log(`RequestHandler response:\n`, response_censored);
58
+ } catch (err) {
59
+ console.log(`RequestHandler response: Failed to deep clone AxiosResponse:`, err);
60
+ }
61
+ return response;
62
+ });
63
+ }
64
+
65
+ constructor(@inject(TYPES.IAuthorizationHeaderHandler) private readonly headerHandler: IAuthorizationHeaderHandler) { }
66
+
67
+ async get(relativeUrl: string): Promise<AxiosResponse> {
68
+ return await axios.get(this.assembleUrl(relativeUrl), await this.headerHandler.get());
69
+ }
70
+
71
+ async post(relativeUrl: string, data?: string | any ): Promise<AxiosResponse> {
72
+ return await axios.post(this.assembleUrl(relativeUrl), data, await this.headerHandler.get());
73
+ }
74
+
75
+ async delete(relativeUrl: string): Promise<AxiosResponse> {
76
+ return await axios.delete(this.assembleUrl(relativeUrl), await this.headerHandler.get());
77
+ }
78
+
79
+ private assembleUrl(relativeUrl: string): string {
80
+ return `${TestConstants.TS_SELENIUM_BASE_URL}/${relativeUrl}`;
81
+ }
82
+
83
+ }
@@ -0,0 +1,27 @@
1
+ /*********************************************************************
2
+ * Copyright (c) 2019 Red Hat, Inc.
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ **********************************************************************/
10
+ import { AxiosRequestConfig } from 'axios';
11
+
12
+ import { TYPES } from '../../../inversify.types';
13
+ import { IAuthorizationHeaderHandler } from './IAuthorizationHeaderHandler';
14
+ import { injectable, inject } from 'inversify';
15
+ import { ITokenHandler } from '../tokens/ITokenHandler';
16
+
17
+ @injectable()
18
+ export class CheMultiuserAuthorizationHeaderHandler implements IAuthorizationHeaderHandler {
19
+
20
+ constructor(@inject(TYPES.ITokenHandler) private readonly tokenHandler: ITokenHandler) {
21
+ }
22
+
23
+ async get(): Promise<AxiosRequestConfig> {
24
+ const token = await this.tokenHandler.get();
25
+ return { headers: { 'Authorization': `Bearer ${token}` } };
26
+ }
27
+ }
@@ -0,0 +1,15 @@
1
+ /*********************************************************************
2
+ * Copyright (c) 2019 Red Hat, Inc.
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ **********************************************************************/
10
+
11
+ import { AxiosRequestConfig } from 'axios';
12
+
13
+ export interface IAuthorizationHeaderHandler {
14
+ get(): Promise<AxiosRequestConfig>;
15
+ }
@@ -0,0 +1,39 @@
1
+ /*********************************************************************
2
+ * Copyright (c) 2019 Red Hat, Inc.
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ **********************************************************************/
10
+ import axios from 'axios';
11
+ import querystring from 'querystring';
12
+ import { injectable } from 'inversify';
13
+ import { TestConstants } from '../../../TestConstants';
14
+ import { ITokenHandler } from './ITokenHandler';
15
+ import { KeycloackUrlHandler } from '../../KeycloackUrlHandler';
16
+
17
+ @injectable()
18
+ export class CheMultiuserTokenHandler implements ITokenHandler {
19
+ async get(): Promise<string> {
20
+ const keycloakUrl = KeycloackUrlHandler.getTokenEndpointUrl();
21
+
22
+ const params = {
23
+ client_id: 'che-public',
24
+ username: TestConstants.TS_SELENIUM_USERNAME,
25
+ password: TestConstants.TS_SELENIUM_PASSWORD,
26
+ grant_type: 'password'
27
+ };
28
+
29
+ try {
30
+ const responseToObtainBearerToken = await axios.post(keycloakUrl, querystring.stringify(params));
31
+ return responseToObtainBearerToken.data.access_token;
32
+ } catch (err) {
33
+ console.log(`Can not get bearer token. URL used: ${keycloakUrl}`);
34
+ throw err;
35
+ }
36
+
37
+ }
38
+
39
+ }