hammer_cli_foreman 0.18.2 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (307) hide show
  1. checksums.yaml +4 -4
  2. data/config/foreman.yml +20 -0
  3. data/doc/host_create.md +19 -10
  4. data/doc/release_notes.md +12 -4
  5. data/lib/hammer_cli_foreman/api/authenticator.rb +81 -0
  6. data/lib/hammer_cli_foreman/api/connection.rb +48 -33
  7. data/lib/hammer_cli_foreman/api/interactive_basic_auth.rb +2 -2
  8. data/lib/hammer_cli_foreman/api/oauth/authentication_code_grant.rb +100 -0
  9. data/lib/hammer_cli_foreman/api/oauth/password_grant.rb +81 -0
  10. data/lib/hammer_cli_foreman/api/session_authenticator_wrapper.rb +34 -80
  11. data/lib/hammer_cli_foreman/auth.rb +54 -20
  12. data/lib/hammer_cli_foreman/authenticate/login.rb +21 -0
  13. data/lib/hammer_cli_foreman/command_extensions/hosts/help/compute_resources.rb +1 -0
  14. data/lib/hammer_cli_foreman/command_extensions/ping.rb +14 -0
  15. data/lib/hammer_cli_foreman/command_extensions/status.rb +44 -0
  16. data/lib/hammer_cli_foreman/command_extensions.rb +2 -0
  17. data/lib/hammer_cli_foreman/commands.rb +1 -1
  18. data/lib/hammer_cli_foreman/compute_attribute.rb +22 -5
  19. data/lib/hammer_cli_foreman/compute_resource/base.rb +1 -1
  20. data/lib/hammer_cli_foreman/compute_resource/ec2.rb +1 -1
  21. data/lib/hammer_cli_foreman/compute_resource/gce.rb +1 -1
  22. data/lib/hammer_cli_foreman/compute_resource/libvirt.rb +11 -8
  23. data/lib/hammer_cli_foreman/compute_resource/openstack.rb +1 -1
  24. data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +7 -4
  25. data/lib/hammer_cli_foreman/compute_resource/rackspace.rb +1 -1
  26. data/lib/hammer_cli_foreman/compute_resource/vmware.rb +6 -6
  27. data/lib/hammer_cli_foreman/hosts/common_update_options.rb +1 -1
  28. data/lib/hammer_cli_foreman/location.rb +1 -1
  29. data/lib/hammer_cli_foreman/openid_connect.rb +68 -0
  30. data/lib/hammer_cli_foreman/organization.rb +1 -1
  31. data/lib/hammer_cli_foreman/output/formatters.rb +4 -5
  32. data/lib/hammer_cli_foreman/partition_table.rb +1 -0
  33. data/lib/hammer_cli_foreman/ping.rb +24 -0
  34. data/lib/hammer_cli_foreman/report_template.rb +3 -2
  35. data/lib/hammer_cli_foreman/sessions.rb +92 -0
  36. data/lib/hammer_cli_foreman/status.rb +53 -0
  37. data/lib/hammer_cli_foreman/subnet.rb +1 -0
  38. data/lib/hammer_cli_foreman/template.rb +1 -0
  39. data/lib/hammer_cli_foreman/version.rb +1 -1
  40. data/lib/hammer_cli_foreman.rb +8 -0
  41. data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  42. data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  43. data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  44. data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  45. data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  46. data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  47. data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  48. data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  49. data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  50. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  51. data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  52. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  53. data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  54. data/test/data/1.24/foreman_api.json +1 -0
  55. data/test/data/README.md +2 -2
  56. data/test/functional/commands/list_test.rb +2 -2
  57. data/test/functional/host_test.rb +0 -20
  58. data/test/functional/ping_test.rb +34 -0
  59. data/test/functional/status_test.rb +46 -0
  60. data/test/reports/TEST-HammerCLIForeman-Architecture-CreateCommand-parameters.xml +11 -0
  61. data/test/reports/TEST-HammerCLIForeman-Architecture-CreateCommand.xml +7 -0
  62. data/test/reports/TEST-HammerCLIForeman-Architecture-DeleteCommand-parameters.xml +13 -0
  63. data/test/reports/TEST-HammerCLIForeman-Architecture-DeleteCommand.xml +7 -0
  64. data/test/reports/TEST-HammerCLIForeman-Architecture-InfoCommand-output.xml +13 -0
  65. data/test/reports/TEST-HammerCLIForeman-Architecture-InfoCommand-parameters.xml +13 -0
  66. data/test/reports/TEST-HammerCLIForeman-Architecture-InfoCommand.xml +7 -0
  67. data/test/reports/TEST-HammerCLIForeman-Architecture-ListCommand-output.xml +13 -0
  68. data/test/reports/TEST-HammerCLIForeman-Architecture-ListCommand-parameters.xml +17 -0
  69. data/test/reports/TEST-HammerCLIForeman-Architecture-ListCommand.xml +7 -0
  70. data/test/reports/TEST-HammerCLIForeman-Architecture-UpdateCommand-parameters.xml +15 -0
  71. data/test/reports/TEST-HammerCLIForeman-Architecture-UpdateCommand.xml +7 -0
  72. data/test/reports/TEST-HammerCLIForeman-Architecture.xml +7 -0
  73. data/test/reports/TEST-HammerCLIForeman-CommonParameter-DeleteCommand-parameters.xml +11 -0
  74. data/test/reports/TEST-HammerCLIForeman-CommonParameter-DeleteCommand.xml +7 -0
  75. data/test/reports/TEST-HammerCLIForeman-CommonParameter-ListCommand-output.xml +13 -0
  76. data/test/reports/TEST-HammerCLIForeman-CommonParameter-ListCommand-parameters.xml +17 -0
  77. data/test/reports/TEST-HammerCLIForeman-CommonParameter-ListCommand.xml +7 -0
  78. data/test/reports/TEST-HammerCLIForeman-CommonParameter-SetCommand-parameters.xml +13 -0
  79. data/test/reports/TEST-HammerCLIForeman-CommonParameter-SetCommand.xml +7 -0
  80. data/test/reports/TEST-HammerCLIForeman-CommonParameter.xml +7 -0
  81. data/test/reports/TEST-HammerCLIForeman-ComputeResource-CreateCommand-parameters.xml +15 -0
  82. data/test/reports/TEST-HammerCLIForeman-ComputeResource-CreateCommand.xml +7 -0
  83. data/test/reports/TEST-HammerCLIForeman-ComputeResource-DeleteCommand-parameters.xml +13 -0
  84. data/test/reports/TEST-HammerCLIForeman-ComputeResource-DeleteCommand.xml +7 -0
  85. data/test/reports/TEST-HammerCLIForeman-ComputeResource-InfoCommand-output.xml +17 -0
  86. data/test/reports/TEST-HammerCLIForeman-ComputeResource-InfoCommand-parameters.xml +13 -0
  87. data/test/reports/TEST-HammerCLIForeman-ComputeResource-InfoCommand.xml +7 -0
  88. data/test/reports/TEST-HammerCLIForeman-ComputeResource-ListCommand-output.xml +15 -0
  89. data/test/reports/TEST-HammerCLIForeman-ComputeResource-ListCommand-parameters.xml +17 -0
  90. data/test/reports/TEST-HammerCLIForeman-ComputeResource-ListCommand.xml +7 -0
  91. data/test/reports/TEST-HammerCLIForeman-ComputeResource-UpdateCommand-parameters.xml +15 -0
  92. data/test/reports/TEST-HammerCLIForeman-ComputeResource-UpdateCommand.xml +7 -0
  93. data/test/reports/TEST-HammerCLIForeman-ComputeResource.xml +7 -0
  94. data/test/reports/TEST-HammerCLIForeman-Domain-CreateCommand-parameters.xml +11 -0
  95. data/test/reports/TEST-HammerCLIForeman-Domain-CreateCommand.xml +7 -0
  96. data/test/reports/TEST-HammerCLIForeman-Domain-DeleteCommand-parameters.xml +13 -0
  97. data/test/reports/TEST-HammerCLIForeman-Domain-DeleteCommand.xml +7 -0
  98. data/test/reports/TEST-HammerCLIForeman-Domain-DeleteParameterCommand-parameters.xml +15 -0
  99. data/test/reports/TEST-HammerCLIForeman-Domain-DeleteParameterCommand.xml +7 -0
  100. data/test/reports/TEST-HammerCLIForeman-Domain-InfoCommand-output.xml +21 -0
  101. data/test/reports/TEST-HammerCLIForeman-Domain-InfoCommand-parameters.xml +13 -0
  102. data/test/reports/TEST-HammerCLIForeman-Domain-InfoCommand.xml +7 -0
  103. data/test/reports/TEST-HammerCLIForeman-Domain-ListCommand-output.xml +13 -0
  104. data/test/reports/TEST-HammerCLIForeman-Domain-ListCommand-parameters.xml +17 -0
  105. data/test/reports/TEST-HammerCLIForeman-Domain-ListCommand.xml +7 -0
  106. data/test/reports/TEST-HammerCLIForeman-Domain-SetParameterCommand-parameters.xml +17 -0
  107. data/test/reports/TEST-HammerCLIForeman-Domain-SetParameterCommand.xml +7 -0
  108. data/test/reports/TEST-HammerCLIForeman-Domain-UpdateCommand-parameters.xml +15 -0
  109. data/test/reports/TEST-HammerCLIForeman-Domain-UpdateCommand.xml +7 -0
  110. data/test/reports/TEST-HammerCLIForeman-Domain.xml +7 -0
  111. data/test/reports/TEST-HammerCLIForeman-Environment-CreateCommand-parameters.xml +11 -0
  112. data/test/reports/TEST-HammerCLIForeman-Environment-CreateCommand.xml +7 -0
  113. data/test/reports/TEST-HammerCLIForeman-Environment-DeleteCommand-parameters.xml +13 -0
  114. data/test/reports/TEST-HammerCLIForeman-Environment-DeleteCommand.xml +7 -0
  115. data/test/reports/TEST-HammerCLIForeman-Environment-InfoCommand-output.xml +17 -0
  116. data/test/reports/TEST-HammerCLIForeman-Environment-InfoCommand-parameters.xml +13 -0
  117. data/test/reports/TEST-HammerCLIForeman-Environment-InfoCommand.xml +7 -0
  118. data/test/reports/TEST-HammerCLIForeman-Environment-ListCommand-output.xml +13 -0
  119. data/test/reports/TEST-HammerCLIForeman-Environment-ListCommand-parameters.xml +17 -0
  120. data/test/reports/TEST-HammerCLIForeman-Environment-ListCommand.xml +7 -0
  121. data/test/reports/TEST-HammerCLIForeman-Environment-UpdateCommand-parameters.xml +15 -0
  122. data/test/reports/TEST-HammerCLIForeman-Environment-UpdateCommand.xml +7 -0
  123. data/test/reports/TEST-HammerCLIForeman-Environment.xml +7 -0
  124. data/test/reports/TEST-HammerCLIForeman-ExceptionHandler.xml +13 -0
  125. data/test/reports/TEST-HammerCLIForeman-Host-CreateCommand-parameters.xml +46 -0
  126. data/test/reports/TEST-HammerCLIForeman-Host-CreateCommand.xml +7 -0
  127. data/test/reports/TEST-HammerCLIForeman-Host-DeleteCommand-parameters.xml +13 -0
  128. data/test/reports/TEST-HammerCLIForeman-Host-DeleteCommand.xml +7 -0
  129. data/test/reports/TEST-HammerCLIForeman-Host-DeleteParameterCommand-parameters.xml +15 -0
  130. data/test/reports/TEST-HammerCLIForeman-Host-DeleteParameterCommand.xml +7 -0
  131. data/test/reports/TEST-HammerCLIForeman-Host-InfoCommand-output.xml +85 -0
  132. data/test/reports/TEST-HammerCLIForeman-Host-InfoCommand-parameters.xml +13 -0
  133. data/test/reports/TEST-HammerCLIForeman-Host-InfoCommand.xml +7 -0
  134. data/test/reports/TEST-HammerCLIForeman-Host-ListCommand-output.xml +21 -0
  135. data/test/reports/TEST-HammerCLIForeman-Host-ListCommand-parameters.xml +17 -0
  136. data/test/reports/TEST-HammerCLIForeman-Host-ListCommand.xml +7 -0
  137. data/test/reports/TEST-HammerCLIForeman-Host-PuppetRunCommand-output.xml +9 -0
  138. data/test/reports/TEST-HammerCLIForeman-Host-PuppetRunCommand.xml +7 -0
  139. data/test/reports/TEST-HammerCLIForeman-Host-SetParameterCommand-parameters.xml +17 -0
  140. data/test/reports/TEST-HammerCLIForeman-Host-SetParameterCommand.xml +7 -0
  141. data/test/reports/TEST-HammerCLIForeman-Host-StatusCommand-output.xml +9 -0
  142. data/test/reports/TEST-HammerCLIForeman-Host-StatusCommand.xml +7 -0
  143. data/test/reports/TEST-HammerCLIForeman-Host-UpdateCommand-parameters.xml +40 -0
  144. data/test/reports/TEST-HammerCLIForeman-Host-UpdateCommand.xml +7 -0
  145. data/test/reports/TEST-HammerCLIForeman-Host.xml +7 -0
  146. data/test/reports/TEST-HammerCLIForeman-Hostgroup-CreateCommand-parameters.xml +11 -0
  147. data/test/reports/TEST-HammerCLIForeman-Hostgroup-CreateCommand.xml +7 -0
  148. data/test/reports/TEST-HammerCLIForeman-Hostgroup-DeleteCommand-parameters.xml +11 -0
  149. data/test/reports/TEST-HammerCLIForeman-Hostgroup-DeleteCommand.xml +7 -0
  150. data/test/reports/TEST-HammerCLIForeman-Hostgroup-DeleteParameterCommand-parameters.xml +13 -0
  151. data/test/reports/TEST-HammerCLIForeman-Hostgroup-DeleteParameterCommand.xml +7 -0
  152. data/test/reports/TEST-HammerCLIForeman-Hostgroup-InfoCommand-output.xml +29 -0
  153. data/test/reports/TEST-HammerCLIForeman-Hostgroup-InfoCommand-parameters.xml +11 -0
  154. data/test/reports/TEST-HammerCLIForeman-Hostgroup-InfoCommand.xml +7 -0
  155. data/test/reports/TEST-HammerCLIForeman-Hostgroup-ListCommand-output.xml +27 -0
  156. data/test/reports/TEST-HammerCLIForeman-Hostgroup-ListCommand-parameters.xml +17 -0
  157. data/test/reports/TEST-HammerCLIForeman-Hostgroup-ListCommand.xml +7 -0
  158. data/test/reports/TEST-HammerCLIForeman-Hostgroup-SetParameterCommand-parameters.xml +15 -0
  159. data/test/reports/TEST-HammerCLIForeman-Hostgroup-SetParameterCommand.xml +7 -0
  160. data/test/reports/TEST-HammerCLIForeman-Hostgroup-UpdateCommand-parameters.xml +13 -0
  161. data/test/reports/TEST-HammerCLIForeman-Hostgroup-UpdateCommand.xml +7 -0
  162. data/test/reports/TEST-HammerCLIForeman-Hostgroup.xml +7 -0
  163. data/test/reports/TEST-HammerCLIForeman-Location-CreateCommand-parameters.xml +11 -0
  164. data/test/reports/TEST-HammerCLIForeman-Location-CreateCommand-resource-disabled.xml +11 -0
  165. data/test/reports/TEST-HammerCLIForeman-Location-CreateCommand.xml +7 -0
  166. data/test/reports/TEST-HammerCLIForeman-Location-DeleteCommand-parameters.xml +13 -0
  167. data/test/reports/TEST-HammerCLIForeman-Location-DeleteCommand-resource-disabled.xml +11 -0
  168. data/test/reports/TEST-HammerCLIForeman-Location-DeleteCommand.xml +7 -0
  169. data/test/reports/TEST-HammerCLIForeman-Location-InfoCommand-output.xml +17 -0
  170. data/test/reports/TEST-HammerCLIForeman-Location-InfoCommand-parameters.xml +13 -0
  171. data/test/reports/TEST-HammerCLIForeman-Location-InfoCommand-resource-disabled.xml +11 -0
  172. data/test/reports/TEST-HammerCLIForeman-Location-InfoCommand.xml +7 -0
  173. data/test/reports/TEST-HammerCLIForeman-Location-ListCommand-output.xml +13 -0
  174. data/test/reports/TEST-HammerCLIForeman-Location-ListCommand-parameters.xml +17 -0
  175. data/test/reports/TEST-HammerCLIForeman-Location-ListCommand-resource-disabled.xml +11 -0
  176. data/test/reports/TEST-HammerCLIForeman-Location-ListCommand.xml +7 -0
  177. data/test/reports/TEST-HammerCLIForeman-Location-UpdateCommand-parameters.xml +15 -0
  178. data/test/reports/TEST-HammerCLIForeman-Location-UpdateCommand-resource-disabled.xml +11 -0
  179. data/test/reports/TEST-HammerCLIForeman-Location-UpdateCommand.xml +7 -0
  180. data/test/reports/TEST-HammerCLIForeman-Location.xml +7 -0
  181. data/test/reports/TEST-HammerCLIForeman-Medium-CreateCommand-parameters.xml +13 -0
  182. data/test/reports/TEST-HammerCLIForeman-Medium-CreateCommand.xml +7 -0
  183. data/test/reports/TEST-HammerCLIForeman-Medium-DeleteCommand-parameters.xml +13 -0
  184. data/test/reports/TEST-HammerCLIForeman-Medium-DeleteCommand.xml +7 -0
  185. data/test/reports/TEST-HammerCLIForeman-Medium-InfoCommand-output.xml +23 -0
  186. data/test/reports/TEST-HammerCLIForeman-Medium-InfoCommand-parameters.xml +13 -0
  187. data/test/reports/TEST-HammerCLIForeman-Medium-InfoCommand.xml +7 -0
  188. data/test/reports/TEST-HammerCLIForeman-Medium-ListCommand-output.xml +15 -0
  189. data/test/reports/TEST-HammerCLIForeman-Medium-ListCommand-parameters.xml +17 -0
  190. data/test/reports/TEST-HammerCLIForeman-Medium-ListCommand.xml +7 -0
  191. data/test/reports/TEST-HammerCLIForeman-Medium-UpdateCommand-parameters.xml +17 -0
  192. data/test/reports/TEST-HammerCLIForeman-Medium-UpdateCommand.xml +7 -0
  193. data/test/reports/TEST-HammerCLIForeman-Medium.xml +7 -0
  194. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-CreateCommand-parameters.xml +11 -0
  195. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-CreateCommand.xml +7 -0
  196. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-DeleteCommand-parameters.xml +13 -0
  197. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-DeleteCommand.xml +7 -0
  198. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-DeleteParameterCommand-parameters.xml +13 -0
  199. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-DeleteParameterCommand.xml +7 -0
  200. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-InfoCommand-output.xml +27 -0
  201. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-InfoCommand-parameters.xml +13 -0
  202. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-InfoCommand.xml +7 -0
  203. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-ListCommand-output.xml +17 -0
  204. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-ListCommand-parameters.xml +17 -0
  205. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-ListCommand.xml +7 -0
  206. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-SetParameterCommand-parameters.xml +15 -0
  207. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-SetParameterCommand.xml +7 -0
  208. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-UpdateCommand-parameters.xml +17 -0
  209. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-UpdateCommand.xml +7 -0
  210. data/test/reports/TEST-HammerCLIForeman-OperatingSystem.xml +7 -0
  211. data/test/reports/TEST-HammerCLIForeman-Organization-CreateCommand-parameters.xml +11 -0
  212. data/test/reports/TEST-HammerCLIForeman-Organization-CreateCommand-resource-disabled.xml +11 -0
  213. data/test/reports/TEST-HammerCLIForeman-Organization-CreateCommand.xml +7 -0
  214. data/test/reports/TEST-HammerCLIForeman-Organization-DeleteCommand-parameters.xml +13 -0
  215. data/test/reports/TEST-HammerCLIForeman-Organization-DeleteCommand-resource-disabled.xml +11 -0
  216. data/test/reports/TEST-HammerCLIForeman-Organization-DeleteCommand.xml +7 -0
  217. data/test/reports/TEST-HammerCLIForeman-Organization-InfoCommand-output.xml +17 -0
  218. data/test/reports/TEST-HammerCLIForeman-Organization-InfoCommand-parameters.xml +13 -0
  219. data/test/reports/TEST-HammerCLIForeman-Organization-InfoCommand-resource-disabled.xml +11 -0
  220. data/test/reports/TEST-HammerCLIForeman-Organization-InfoCommand.xml +7 -0
  221. data/test/reports/TEST-HammerCLIForeman-Organization-ListCommand-output.xml +13 -0
  222. data/test/reports/TEST-HammerCLIForeman-Organization-ListCommand-parameters.xml +17 -0
  223. data/test/reports/TEST-HammerCLIForeman-Organization-ListCommand-resource-disabled.xml +11 -0
  224. data/test/reports/TEST-HammerCLIForeman-Organization-ListCommand.xml +7 -0
  225. data/test/reports/TEST-HammerCLIForeman-Organization-UpdateCommand-parameters.xml +15 -0
  226. data/test/reports/TEST-HammerCLIForeman-Organization-UpdateCommand-resource-disabled.xml +11 -0
  227. data/test/reports/TEST-HammerCLIForeman-Organization-UpdateCommand.xml +7 -0
  228. data/test/reports/TEST-HammerCLIForeman-Organization.xml +7 -0
  229. data/test/reports/TEST-HammerCLIForeman-PartitionTable-CreateCommand-parameters.xml +13 -0
  230. data/test/reports/TEST-HammerCLIForeman-PartitionTable-CreateCommand.xml +7 -0
  231. data/test/reports/TEST-HammerCLIForeman-PartitionTable-DeleteCommand-parameters.xml +13 -0
  232. data/test/reports/TEST-HammerCLIForeman-PartitionTable-DeleteCommand.xml +7 -0
  233. data/test/reports/TEST-HammerCLIForeman-PartitionTable-DumpCommand-parameters.xml +15 -0
  234. data/test/reports/TEST-HammerCLIForeman-PartitionTable-DumpCommand.xml +7 -0
  235. data/test/reports/TEST-HammerCLIForeman-PartitionTable-InfoCommand-output.xml +19 -0
  236. data/test/reports/TEST-HammerCLIForeman-PartitionTable-InfoCommand-parameters.xml +13 -0
  237. data/test/reports/TEST-HammerCLIForeman-PartitionTable-InfoCommand.xml +7 -0
  238. data/test/reports/TEST-HammerCLIForeman-PartitionTable-ListCommand-output.xml +15 -0
  239. data/test/reports/TEST-HammerCLIForeman-PartitionTable-ListCommand-parameters.xml +17 -0
  240. data/test/reports/TEST-HammerCLIForeman-PartitionTable-ListCommand.xml +7 -0
  241. data/test/reports/TEST-HammerCLIForeman-PartitionTable-UpdateCommand-parameters.xml +13 -0
  242. data/test/reports/TEST-HammerCLIForeman-PartitionTable-UpdateCommand.xml +7 -0
  243. data/test/reports/TEST-HammerCLIForeman-PartitionTable.xml +7 -0
  244. data/test/reports/TEST-HammerCLIForeman-SmartProxy-CreateCommand-parameters.xml +13 -0
  245. data/test/reports/TEST-HammerCLIForeman-SmartProxy-CreateCommand.xml +7 -0
  246. data/test/reports/TEST-HammerCLIForeman-SmartProxy-DeleteCommand-parameters.xml +13 -0
  247. data/test/reports/TEST-HammerCLIForeman-SmartProxy-DeleteCommand.xml +7 -0
  248. data/test/reports/TEST-HammerCLIForeman-SmartProxy-InfoCommand-output.xml +21 -0
  249. data/test/reports/TEST-HammerCLIForeman-SmartProxy-InfoCommand-parameters.xml +13 -0
  250. data/test/reports/TEST-HammerCLIForeman-SmartProxy-InfoCommand.xml +7 -0
  251. data/test/reports/TEST-HammerCLIForeman-SmartProxy-ListCommand-output.xml +15 -0
  252. data/test/reports/TEST-HammerCLIForeman-SmartProxy-ListCommand-parameters.xml +11 -0
  253. data/test/reports/TEST-HammerCLIForeman-SmartProxy-ListCommand.xml +7 -0
  254. data/test/reports/TEST-HammerCLIForeman-SmartProxy-UpdateCommand-parameters.xml +15 -0
  255. data/test/reports/TEST-HammerCLIForeman-SmartProxy-UpdateCommand.xml +7 -0
  256. data/test/reports/TEST-HammerCLIForeman-SmartProxy.xml +7 -0
  257. data/test/reports/TEST-HammerCLIForeman-Subnet-CreateCommand-parameters.xml +15 -0
  258. data/test/reports/TEST-HammerCLIForeman-Subnet-CreateCommand.xml +7 -0
  259. data/test/reports/TEST-HammerCLIForeman-Subnet-DeleteCommand-parameters.xml +13 -0
  260. data/test/reports/TEST-HammerCLIForeman-Subnet-DeleteCommand.xml +7 -0
  261. data/test/reports/TEST-HammerCLIForeman-Subnet-InfoCommand-output.xml +43 -0
  262. data/test/reports/TEST-HammerCLIForeman-Subnet-InfoCommand-parameters.xml +13 -0
  263. data/test/reports/TEST-HammerCLIForeman-Subnet-InfoCommand.xml +7 -0
  264. data/test/reports/TEST-HammerCLIForeman-Subnet-ListCommand-output.xml +17 -0
  265. data/test/reports/TEST-HammerCLIForeman-Subnet-ListCommand-parameters.xml +17 -0
  266. data/test/reports/TEST-HammerCLIForeman-Subnet-ListCommand.xml +7 -0
  267. data/test/reports/TEST-HammerCLIForeman-Subnet-UpdateCommand-parameters.xml +15 -0
  268. data/test/reports/TEST-HammerCLIForeman-Subnet-UpdateCommand.xml +7 -0
  269. data/test/reports/TEST-HammerCLIForeman-Subnet.xml +7 -0
  270. data/test/reports/TEST-HammerCLIForeman-Template-CreateCommand-parameters.xml +15 -0
  271. data/test/reports/TEST-HammerCLIForeman-Template-CreateCommand.xml +7 -0
  272. data/test/reports/TEST-HammerCLIForeman-Template-DeleteCommand-parameters.xml +11 -0
  273. data/test/reports/TEST-HammerCLIForeman-Template-DeleteCommand.xml +7 -0
  274. data/test/reports/TEST-HammerCLIForeman-Template-DumpCommand-parameters.xml +12 -0
  275. data/test/reports/TEST-HammerCLIForeman-Template-DumpCommand.xml +7 -0
  276. data/test/reports/TEST-HammerCLIForeman-Template-InfoCommand-output.xml +17 -0
  277. data/test/reports/TEST-HammerCLIForeman-Template-InfoCommand-parameters.xml +11 -0
  278. data/test/reports/TEST-HammerCLIForeman-Template-InfoCommand.xml +7 -0
  279. data/test/reports/TEST-HammerCLIForeman-Template-ListCommand-output.xml +15 -0
  280. data/test/reports/TEST-HammerCLIForeman-Template-ListCommand-parameters.xml +17 -0
  281. data/test/reports/TEST-HammerCLIForeman-Template-ListCommand.xml +7 -0
  282. data/test/reports/TEST-HammerCLIForeman-Template-ListKindsCommand-parameters.xml +9 -0
  283. data/test/reports/TEST-HammerCLIForeman-Template-ListKindsCommand.xml +7 -0
  284. data/test/reports/TEST-HammerCLIForeman-Template-UpdateCommand-parameters.xml +11 -0
  285. data/test/reports/TEST-HammerCLIForeman-Template-UpdateCommand.xml +7 -0
  286. data/test/reports/TEST-HammerCLIForeman-Template.xml +7 -0
  287. data/test/reports/TEST-HammerCLIForeman-User-CreateCommand-parameters.xml +19 -0
  288. data/test/reports/TEST-HammerCLIForeman-User-CreateCommand.xml +7 -0
  289. data/test/reports/TEST-HammerCLIForeman-User-DeleteCommand-parameters.xml +11 -0
  290. data/test/reports/TEST-HammerCLIForeman-User-DeleteCommand.xml +7 -0
  291. data/test/reports/TEST-HammerCLIForeman-User-InfoCommand-output.xml +23 -0
  292. data/test/reports/TEST-HammerCLIForeman-User-InfoCommand-parameters.xml +11 -0
  293. data/test/reports/TEST-HammerCLIForeman-User-InfoCommand.xml +7 -0
  294. data/test/reports/TEST-HammerCLIForeman-User-ListCommand-output.xml +17 -0
  295. data/test/reports/TEST-HammerCLIForeman-User-ListCommand-parameters.xml +17 -0
  296. data/test/reports/TEST-HammerCLIForeman-User-ListCommand.xml +7 -0
  297. data/test/reports/TEST-HammerCLIForeman-User-UpdateCommand-parameters.xml +11 -0
  298. data/test/reports/TEST-HammerCLIForeman-User-UpdateCommand.xml +7 -0
  299. data/test/reports/TEST-HammerCLIForeman-User.xml +7 -0
  300. data/test/reports/TEST-MiniTest-Spec.xml +7 -0
  301. data/test/test_helper.rb +1 -1
  302. data/test/unit/api/interactive_basic_auth_test.rb +1 -1
  303. data/test/unit/api/oauth/oauth_authentication_code_grant_test.rb +88 -0
  304. data/test/unit/api/oauth/oauth_password_grant_test.rb +92 -0
  305. data/test/unit/api/session_authenticator_wrapper_test.rb +85 -70
  306. data/test/unit/sessions_test.rb +199 -0
  307. metadata +600 -81
@@ -21,54 +21,55 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
21
21
  options[:dir_permissions] ||= 0700
22
22
  options[:file_permissions] ||= 0600
23
23
  options[:user_name] ||= 'admin'
24
+ options[:auth_type] ||= 'Basic_Auth'
24
25
 
25
- out = err = ""
26
+ out = err = ''
26
27
 
27
28
  dir = Dir.mktmpdir
28
29
  begin
29
30
  FileUtils.chmod(options[:dir_permissions], dir)
30
-
31
31
  if options[:session_id]
32
- session = JSON.dump({
33
- :session_id => options[:session_id],
34
- :user_name => options[:user_name]
35
- })
32
+ session = JSON.dump(
33
+ id: options[:session_id],
34
+ user_name: options[:user_name],
35
+ auth_type: options[:auth_type]
36
+ )
36
37
  write_session(dir, session, options[:file_permissions])
37
38
  end
38
39
 
39
40
  out, err = capture_io do
40
- auth = HammerCLIForeman::Api::SessionAuthenticatorWrapper.new(wrapped_auth, url, dir)
41
+ auth = HammerCLIForeman::Api::SessionAuthenticatorWrapper.new(
42
+ wrapped_auth, url, options[:auth_type]
43
+ )
44
+ HammerCLIForeman::Sessions.stubs(:storage).returns(dir)
45
+ HammerCLIForeman::Sessions.stubs(:enabled?).returns(true)
41
46
  yield(auth, dir) if block_given?
42
47
  end
43
48
  ensure
44
49
  FileUtils.remove_entry(dir)
45
50
  end
46
-
47
51
  return dir, out, err
48
52
  end
49
53
 
50
- describe '#initialize' do
54
+ describe '#authenticate' do
51
55
  context "when there's saved session" do
52
- it 'warns when session directory has wrong permissions' do
53
- dir, out, err = prepare_session_storage :dir_permissions => 0744
54
-
55
- assert_match /Invalid permissions for #{dir}: 40744, expected 40700/, err
56
- assert_match /Can't use session auth due to invalid permissions on session files/, err
57
- end
58
-
59
- it 'warns when session file has wrong permissions' do
60
- dir, out, err = prepare_session_storage :session_id => 'SOME_SESSION_ID', :file_permissions => 0644
56
+ it 'sets session id in cookies for basic auth' do
57
+ session_params = {
58
+ session_id: 'SOME_SESSION_ID', auth_type: 'Basic_Auth'
59
+ }
60
+ prepare_session_storage session_params do |auth, dir|
61
+ wrapped_auth.stubs(:user).returns('admin')
62
+ auth.authenticate(request, args)
61
63
 
62
- assert_match /Invalid permissions for #{session_file(dir)}: 100644, expected 100600/, err
63
- assert_match /Can't use session auth due to invalid permissions on session files/, err
64
+ assert_equal '_session_id=SOME_SESSION_ID', request['Cookie']
65
+ end
64
66
  end
65
- end
66
- end
67
67
 
68
- describe '#authenticate' do
69
- context "when there's saved session" do
70
- it 'sets session id in cookies' do
71
- prepare_session_storage :session_id => 'SOME_SESSION_ID' do |auth, dir|
68
+ it 'sets session id in cookies for oauth' do
69
+ session_params = {
70
+ session_id: 'SOME_SESSION_ID', auth_type: 'Oauth_Password_Grant'
71
+ }
72
+ prepare_session_storage session_params do |auth, dir|
72
73
  wrapped_auth.expects(:user).returns('admin')
73
74
  auth.authenticate(request, args)
74
75
 
@@ -77,7 +78,10 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
77
78
  end
78
79
 
79
80
  it 'ignores session when the session file has wrong permissions' do
80
- prepare_session_storage :session_id => 'SOME_SESSION_ID', :file_permissions => 0644 do |auth, dir|
81
+ session_params = {
82
+ :session_id => 'SOME_SESSION_ID', :file_permissions => 0644
83
+ }
84
+ prepare_session_storage session_params do |auth, dir|
81
85
  wrapped_auth.expects(:authenticate).with(request, args)
82
86
  wrapped_auth.expects(:user).returns('admin')
83
87
  auth.authenticate(request, args)
@@ -87,7 +91,10 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
87
91
  end
88
92
 
89
93
  it 'ignores session when the directory has wrong permissions' do
90
- prepare_session_storage :session_id => 'SOME_SESSION_ID', :dir_permissions => 0744 do |auth, dir|
94
+ session_params = {
95
+ :session_id => 'SOME_SESSION_ID', :dir_permissions => 0744
96
+ }
97
+ prepare_session_storage session_params do |auth, dir|
91
98
  wrapped_auth.expects(:authenticate).with(request, args)
92
99
  wrapped_auth.expects(:user).returns('admin')
93
100
  auth.authenticate(request, args)
@@ -96,7 +103,7 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
96
103
  end
97
104
  end
98
105
 
99
- it "keeps the session and sets cuser_changed flag when usernames don't match and " do
106
+ it "keeps the session and sets user_changed flag when usernames don't match" do
100
107
  prepare_session_storage :session_id => 'SOME_SESSION_ID' do |auth, dir|
101
108
  wrapped_auth.expects(:authenticate).with(request, args)
102
109
  wrapped_auth.expects(:user).returns('other_user')
@@ -107,12 +114,26 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
107
114
  end
108
115
  end
109
116
 
110
- it "keeps the session when username is nil" do
117
+ it "keeps the session and sets cuser_changed flag when usernames don't match for Oauth" do
118
+ session_params = {
119
+ :session_id => 'SOME_SESSION_ID', :auth_type => 'Oauth_Password_Grant'
120
+ }
121
+ prepare_session_storage session_params do |auth, dir|
122
+ wrapped_auth.expects(:authenticate).with(request, args)
123
+ wrapped_auth.expects(:user).returns('other_user')
124
+ auth.authenticate(request, args)
125
+
126
+ assert File.exist?(session_file(dir))
127
+ assert auth.user_changed?
128
+ end
129
+ end
130
+
131
+ it 'keeps the session when username is nil' do
111
132
  prepare_session_storage :session_id => 'SOME_SESSION_ID' do |auth, dir|
112
133
  wrapped_auth.expects(:user).returns(nil)
113
134
  auth.authenticate(request, args)
114
135
 
115
- assert_equal "_session_id=SOME_SESSION_ID", request['Cookie']
136
+ assert_equal '_session_id=SOME_SESSION_ID', request['Cookie']
116
137
  assert File.exist?(session_file(dir))
117
138
  end
118
139
  end
@@ -127,20 +148,7 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
127
148
  wrapped_auth.expects(:user).returns('admin')
128
149
  auth.authenticate(request, args)
129
150
  end
130
-
131
- assert_match /Invalid session file format/, err
132
- end
133
-
134
- it 'deletes the session file' do
135
- prepare_session_storage :session_id => 'SOME_SESSION_ID' do |auth, dir|
136
- write_session(dir, '{not a valid: json')
137
-
138
- wrapped_auth.expects(:authenticate).with(request, args)
139
- wrapped_auth.expects(:user).returns('admin')
140
- auth.authenticate(request, args)
141
-
142
- refute File.exist?(session_file(dir))
143
- end
151
+ assert_match "Invalid session data. Resetting the session.\n", err
144
152
  end
145
153
  end
146
154
 
@@ -157,13 +165,13 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
157
165
 
158
166
  describe '#error' do
159
167
  context 'when there is existing session' do
160
- it 'deletes saved session on unauthorized exception' do
168
+ it 'sets session id to nil on unauthorized exception' do
161
169
  prepare_session_storage :session_id => 'SOME_SESSION_ID' do |auth, dir|
162
170
  ex = RestClient::Unauthorized.new
163
-
164
171
  auth.error(ex)
165
172
 
166
- refute File.exist?(session_file(dir))
173
+ assert_nil auth.session.id
174
+ assert File.exist?(session_file(dir))
167
175
  end
168
176
  end
169
177
 
@@ -245,35 +253,28 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
245
253
  it "saves session id if it's in response cookies" do
246
254
  prepare_session_storage :session_id => 'SOME_SESSION_ID' do |auth, dir|
247
255
  resp = stub(:cookies => {'_session_id' => 'NEW_SESSION_ID'}, :code => 200)
248
-
249
256
  wrapped_auth.expects(:response).with(resp)
250
257
  wrapped_auth.expects(:user).returns('admin')
251
258
  auth.response(resp)
252
259
 
253
- session = JSON.parse(File.read(session_file(dir)))
254
-
255
- assert_equal 'NEW_SESSION_ID', session['session_id']
260
+ assert_equal 'NEW_SESSION_ID', auth.session.id
256
261
  end
257
262
  end
258
263
 
259
- it "saves username" do
264
+ it 'saves username' do
260
265
  prepare_session_storage do |auth, dir|
261
266
  resp = stub(:cookies => {'_session_id' => 'NEW_SESSION_ID'}, :code => 200)
262
-
263
267
  wrapped_auth.expects(:response).with(resp)
264
268
  wrapped_auth.expects(:user).returns('admin')
265
269
  auth.response(resp)
266
270
 
267
- session = JSON.parse(File.read(session_file(dir)))
268
-
269
- assert_equal 'admin', session['user_name']
271
+ assert_equal 'admin', auth.session.user_name
270
272
  end
271
273
  end
272
274
 
273
- it "ignores requests without session cookie" do
275
+ it 'ignores requests without session cookie' do
274
276
  prepare_session_storage do |auth, dir|
275
277
  resp = stub(:cookies => {}, :code => 200)
276
-
277
278
  wrapped_auth.expects(:response).with(resp)
278
279
  auth.response(resp)
279
280
 
@@ -281,7 +282,7 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
281
282
  end
282
283
  end
283
284
 
284
- it "ignores unauthorized requests" do
285
+ it 'ignores unauthorized requests' do
285
286
  prepare_session_storage do |auth, dir|
286
287
  resp = stub(:cookies => {'_session_id' => 'NEW_SESSION_ID'}, :code => 401)
287
288
 
@@ -289,7 +290,6 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
289
290
  auth.response(resp)
290
291
 
291
292
  refute File.exist?(session_file(dir))
292
- assert_nil auth.session_id
293
293
  end
294
294
  end
295
295
  end
@@ -301,7 +301,7 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
301
301
  end
302
302
  end
303
303
 
304
- it "calls #user on the wrapped authentocator" do
304
+ it 'calls #user on the wrapped authentocator' do
305
305
  prepare_session_storage do |auth, dir|
306
306
  wrapped_auth.expects(:user).returns('admin')
307
307
  assert_equal 'admin', auth.user
@@ -326,17 +326,32 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
326
326
  end
327
327
  end
328
328
 
329
- describe '#set_credentials' do
329
+ describe '#set_auth_params' do
330
330
  it 'passes credentials to a wrapped authenticator' do
331
- prepare_session_storage do |auth, dir|
331
+ prepare_session_storage :session_id => 'SOME_SESSION_ID' do |auth, dir|
332
332
  wrapped_auth.expects(:set_credentials).with('admin', 'password')
333
- auth.set_credentials('admin', 'password')
333
+ auth.set_auth_params('admin', 'password')
334
334
  end
335
335
  end
336
336
 
337
- it "doesn't pass the credentials when a wrapped autneticator doesn't support it" do
338
- prepare_session_storage do |auth, dir|
339
- auth.set_credentials('admin', 'password')
337
+ it 'passes credentials to a wrapped authenticator' do
338
+ prepare_session_storage :session_id => 'SOME_SESSION_ID' do |auth, dir|
339
+ wrapped_auth.expects(:set_credentials).with('admin', 'password')
340
+ auth.set_auth_params('admin', 'password')
341
+ end
342
+ end
343
+
344
+ it 'passes credentials to a wrapped authenticator' do
345
+ prepare_session_storage :session_id => 'SOME_SESSION_ID', :auth_type => 'Oauth_Password_Grant' do |auth, dir|
346
+ wrapped_auth.expects(:set_token).with('admin', 'password')
347
+ auth.set_auth_params('admin', 'password')
348
+ end
349
+ end
350
+
351
+ it 'passes credentials to a wrapped authenticator' do
352
+ prepare_session_storage :session_id => 'SOME_SESSION_ID', :auth_type => 'Oauth_Authentication_Code_Grant' do |auth, dir|
353
+ wrapped_auth.expects(:set_token).with('admin', 'password')
354
+ auth.set_auth_params('admin', 'password')
340
355
  end
341
356
  end
342
357
  end
@@ -359,11 +374,11 @@ describe HammerCLIForeman::Api::SessionAuthenticatorWrapper do
359
374
  describe '#status' do
360
375
  it 'informs that there is no existing session' do
361
376
  prepare_session_storage do |auth, dir|
362
- assert_equal "Using sessions, you are currently not logged in.", auth.status
377
+ assert_equal 'Using sessions, you are currently not logged in.', auth.status
363
378
  end
364
379
  end
365
380
 
366
- it "informas about existing session" do
381
+ it 'informs about existing session' do
367
382
  prepare_session_storage :session_id => 'SOME_SESSION_ID' do |auth, dir|
368
383
  assert_equal "Session exists, currently logged in as 'admin'.", auth.status
369
384
  end
@@ -0,0 +1,199 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+ require 'hammer_cli_foreman/sessions'
3
+ require 'tmpdir'
4
+ require 'tempfile'
5
+ require 'json'
6
+
7
+ describe HammerCLIForeman do
8
+ describe HammerCLIForeman::Sessions do
9
+ describe "#get" do
10
+ it 'should create session file when it doesn\'t exist' do
11
+ HammerCLI::Settings.expects(:get).with(:foreman, :use_sessions).returns(true)
12
+ Dir.mktmpdir do |dir|
13
+ HammerCLIForeman::Sessions.stubs(:storage).returns(dir)
14
+ session = HammerCLIForeman::Sessions.get('http://example.com')
15
+ session.id.must_be_nil
16
+ session.auth_type.must_be_nil
17
+ session.user_name.must_be_nil
18
+ end
19
+ end
20
+
21
+ it 'should load the session file' do
22
+ HammerCLI::Settings.expects(:get).with(:foreman, :use_sessions).returns(true)
23
+ Dir.mktmpdir do |dir|
24
+ HammerCLIForeman::Sessions.stubs(:storage).returns(dir)
25
+ session_content = {
26
+ :id => '3040b0f04c3a35a499e6837278904d48',
27
+ :user_name => 'admin',
28
+ :auth_type => 'basic_auth'
29
+ }
30
+ session_path = "#{dir}/http_example.com"
31
+ File.open(session_path,"w") do |f|
32
+ f.write(session_content.to_json)
33
+ end
34
+ File.chmod(0600, session_path)
35
+
36
+ session = HammerCLIForeman::Sessions.get('http://example.com')
37
+ session.id.must_equal '3040b0f04c3a35a499e6837278904d48'
38
+ session.auth_type.must_equal 'basic_auth'
39
+ session.user_name.must_equal 'admin'
40
+ end
41
+ end
42
+
43
+ it 'should create the storage dir if it does not exist' do
44
+ HammerCLI::Settings.expects(:get).with(:foreman, :use_sessions).returns(true)
45
+ Dir.mktmpdir do |dir|
46
+ HammerCLIForeman::Sessions.stubs(:storage).returns(dir)
47
+ FileUtils.rm_rf(dir)
48
+ HammerCLIForeman::Sessions.get('http://example.com')
49
+ File.exist?(dir).must_equal true
50
+ end
51
+ end
52
+
53
+ it 'should check permissions (700) on the storage' do
54
+ HammerCLI::Settings.expects(:get).with(:foreman, :use_sessions).returns(true)
55
+ Dir.mktmpdir do |dir|
56
+ HammerCLIForeman::Sessions.stubs(:storage).returns(dir)
57
+ FileUtils.chmod(0777, dir)
58
+ _, err = capture_io { HammerCLIForeman::Sessions.get('http://example.com') }
59
+ err.must_equal("Invalid permissions for #{dir}: 40777, expected 40700.\n" \
60
+ "Using session auth with invalid permissions on session files is not recommended.\n")
61
+ end
62
+ end
63
+
64
+ it 'should check permissions (600) on the storage file' do
65
+ HammerCLI::Settings.expects(:get).with(:foreman, :use_sessions).returns(true)
66
+ Dir.mktmpdir do |dir|
67
+ HammerCLIForeman::Sessions.stubs(:storage).returns(dir)
68
+ session_content = {
69
+ :id => '3040b0f04c3a35a499e6837278904d48',
70
+ :user_name => 'admin',
71
+ :auth_type => 'basic_auth'
72
+ }
73
+ session_path = "#{dir}/http_example.com"
74
+ File.open(session_path,"w") do |f|
75
+ f.write(session_content.to_json)
76
+ end
77
+ File.chmod(0666, session_path)
78
+
79
+ _, err = capture_io { HammerCLIForeman::Sessions.get('http://example.com') }
80
+ err.must_equal("Invalid permissions for #{session_path}: 100666, expected 100600.\n" \
81
+ "Using session auth with invalid permissions on session files is not recommended.\n")
82
+ end
83
+ end
84
+
85
+ it 'should fail if sessions are not enabled' do
86
+ HammerCLI::Settings.expects(:get).with(:foreman, :use_sessions).returns(false)
87
+ e = proc { HammerCLIForeman::Sessions.get('http://example.com')}.must_raise RuntimeError
88
+ e.message.must_equal "Sessions are not enabled, please check your Hammer settings."
89
+ end
90
+ end
91
+
92
+ describe "#enabled?" do
93
+ it 'tests sessions are enabled' do
94
+ HammerCLI::Settings.expects(:get).with(:foreman, :use_sessions).returns(true)
95
+ HammerCLIForeman::Sessions.enabled?.must_equal true
96
+ end
97
+
98
+ it 'tests sessions are disabled' do
99
+ HammerCLI::Settings.expects(:get).with(:foreman, :use_sessions).returns(false)
100
+ HammerCLIForeman::Sessions.enabled?.must_equal false
101
+ end
102
+ end
103
+
104
+ describe "#session_file" do
105
+ it 'should return file path for session' do
106
+ file_path = HammerCLIForeman::Sessions.session_file('http://example.com')
107
+ file_path.must_equal(File.join(HammerCLIForeman::Sessions.storage, 'http_example.com'))
108
+ end
109
+
110
+ it 'should handle invalid url' do
111
+ e = proc { HammerCLIForeman::Sessions.session_file('/\/')}.must_raise RuntimeError
112
+ e.message.must_equal "The url (/\\/) is not a valid URL. Session can not be created."
113
+ end
114
+
115
+ it 'should handle empty url' do
116
+ e = proc { HammerCLIForeman::Sessions.session_file('')}.must_raise RuntimeError
117
+ e.message.must_equal "The url is empty. Session can not be created."
118
+ end
119
+ end
120
+ end
121
+
122
+ describe HammerCLIForeman::Session do
123
+ it 'should be able to store its data' do
124
+ Tempfile.create('session') do |f|
125
+ session = HammerCLIForeman::Session.new(f.path)
126
+ session.id = '3040b0f04c3a35a499e6837278904d48'
127
+ session.auth_type = 'basic_auth'
128
+ session.user_name = 'admin'
129
+ session.store
130
+
131
+ session = HammerCLIForeman::Session.new(f.path)
132
+ session.id.must_equal '3040b0f04c3a35a499e6837278904d48'
133
+ session.auth_type.must_equal 'basic_auth'
134
+ session.user_name.must_equal 'admin'
135
+ end
136
+ end
137
+
138
+ it 'should store session file with 600 perm' do
139
+ Tempfile.create('session') do |f|
140
+ session = HammerCLIForeman::Session.new(f.path)
141
+ session.store
142
+ File.stat(f.path).mode.to_s(8).must_equal '100600'
143
+ end
144
+ end
145
+
146
+ it 'should reset invalid session file' do
147
+ Tempfile.create('session') do |f|
148
+ f << '{[Invalid'
149
+ f.rewind
150
+ _, err = capture_io do
151
+ session = HammerCLIForeman::Session.new(f.path)
152
+ session.id = nil
153
+ session.auth_type = nil
154
+ session.user_name = nil
155
+ end
156
+ err.must_equal("Invalid session data. Resetting the session.\n")
157
+ end
158
+ end
159
+
160
+ describe ".destroy" do
161
+ it 'should be able to destroy session' do
162
+ Tempfile.create('session') do |f|
163
+ session = HammerCLIForeman::Session.new(f.path)
164
+ session.id = '3040b0f04c3a35a499e6837278904d48'
165
+ session.auth_type = 'basic_auth'
166
+ session.user_name = 'admin'
167
+ session.destroy
168
+
169
+ session = HammerCLIForeman::Session.new(f.path)
170
+ session.id.must_be_nil
171
+ session.auth_type.must_equal 'basic_auth'
172
+ session.user_name.must_equal 'admin'
173
+ end
174
+ end
175
+ end
176
+
177
+ describe ".valid?" do
178
+ it "tests if session is invalid" do
179
+ Tempfile.create('session') do |f|
180
+ session = HammerCLIForeman::Session.new(f.path)
181
+ session.id = nil
182
+ session.auth_type = 'basic_auth'
183
+ session.user_name = 'admin'
184
+ session.valid?.must_equal false
185
+ end
186
+ end
187
+
188
+ it "tests if session is valid" do
189
+ Tempfile.create('session') do |f|
190
+ session = HammerCLIForeman::Session.new(f.path)
191
+ session.id = '34252624635723572357234'
192
+ session.auth_type = 'basic_auth'
193
+ session.user_name = 'admin'
194
+ session.valid?.must_equal true
195
+ end
196
+ end
197
+ end
198
+ end
199
+ end