hammer_cli_foreman 0.18.2 → 0.19.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 (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