emasser 1.0.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 (469) hide show
  1. checksums.yaml +7 -0
  2. data/.dockerignore +11 -0
  3. data/.env-example +10 -0
  4. data/.github/release-drafter.yml +16 -0
  5. data/.github/workflows/codeql-analysis.yml +70 -0
  6. data/.github/workflows/draft-release.yml +16 -0
  7. data/.github/workflows/generate_docs.yml +33 -0
  8. data/.github/workflows/gh-pages.yml +33 -0
  9. data/.github/workflows/release.yml +38 -0
  10. data/.github/workflows/rubocop.yml +23 -0
  11. data/.github/workflows/test-cli.yml +73 -0
  12. data/.gitignore +17 -0
  13. data/.mergify.yml +25 -0
  14. data/.rubocop.yml +80 -0
  15. data/.rubocop_todo.yml +27 -0
  16. data/CHANGELOG.md +16 -0
  17. data/Dockerfile +10 -0
  18. data/Gemfile +8 -0
  19. data/Gemfile.lock +110 -0
  20. data/LICENSE.md +15 -0
  21. data/README.md +108 -0
  22. data/Rakefile +18 -0
  23. data/TAGS +2393 -0
  24. data/_config.yml +2 -0
  25. data/docs/developers.md +115 -0
  26. data/docs/features.md +1193 -0
  27. data/docs/redoc/index.html +1231 -0
  28. data/docs/swagger/dist/favicon-16x16.png +0 -0
  29. data/docs/swagger/dist/favicon-32x32.png +0 -0
  30. data/docs/swagger/dist/oauth2-redirect.html +75 -0
  31. data/docs/swagger/dist/swagger-ui-bundle.js +3 -0
  32. data/docs/swagger/dist/swagger-ui-bundle.js.map +1 -0
  33. data/docs/swagger/dist/swagger-ui-es-bundle-core.js +3 -0
  34. data/docs/swagger/dist/swagger-ui-es-bundle-core.js.map +1 -0
  35. data/docs/swagger/dist/swagger-ui-es-bundle.js +3 -0
  36. data/docs/swagger/dist/swagger-ui-es-bundle.js.map +1 -0
  37. data/docs/swagger/dist/swagger-ui-standalone-preset.js +3 -0
  38. data/docs/swagger/dist/swagger-ui-standalone-preset.js.map +1 -0
  39. data/docs/swagger/dist/swagger-ui.css +4 -0
  40. data/docs/swagger/dist/swagger-ui.css.map +1 -0
  41. data/docs/swagger/dist/swagger-ui.js +3 -0
  42. data/docs/swagger/dist/swagger-ui.js.map +1 -0
  43. data/docs/swagger/index.html +60 -0
  44. data/emass_client/eMASSRestOpenApi.yaml +5698 -0
  45. data/emass_client/ruby_client/.gitignore +39 -0
  46. data/emass_client/ruby_client/.rspec +2 -0
  47. data/emass_client/ruby_client/.rubocop.yml +154 -0
  48. data/emass_client/ruby_client/.swagger-codegen/VERSION +1 -0
  49. data/emass_client/ruby_client/.swagger-codegen-ignore +23 -0
  50. data/emass_client/ruby_client/Gemfile +9 -0
  51. data/emass_client/ruby_client/README.md +1284 -0
  52. data/emass_client/ruby_client/Rakefile +8 -0
  53. data/emass_client/ruby_client/docs/ArtifactsApi.md +284 -0
  54. data/emass_client/ruby_client/docs/ArtifactsDelete.md +6 -0
  55. data/emass_client/ruby_client/docs/ArtifactsDeleteInner.md +7 -0
  56. data/emass_client/ruby_client/docs/ArtifactsExportApi.md +76 -0
  57. data/emass_client/ruby_client/docs/ArtifactsGet.md +20 -0
  58. data/emass_client/ruby_client/docs/ArtifactsRequestPutBody.md +16 -0
  59. data/emass_client/ruby_client/docs/ArtifactsResponseDel.md +8 -0
  60. data/emass_client/ruby_client/docs/ArtifactsResponseDelData.md +9 -0
  61. data/emass_client/ruby_client/docs/ArtifactsResponseGet.md +8 -0
  62. data/emass_client/ruby_client/docs/ArtifactsResponsePutPost.md +8 -0
  63. data/emass_client/ruby_client/docs/CACApi.md +140 -0
  64. data/emass_client/ruby_client/docs/CMMCAssessmentsApi.md +71 -0
  65. data/emass_client/ruby_client/docs/CacGet.md +13 -0
  66. data/emass_client/ruby_client/docs/CacRequestPostBody.md +8 -0
  67. data/emass_client/ruby_client/docs/CacResponseGet.md +8 -0
  68. data/emass_client/ruby_client/docs/CacResponsePost.md +8 -0
  69. data/emass_client/ruby_client/docs/CacResponsePostData.md +9 -0
  70. data/emass_client/ruby_client/docs/CmmcGet.md +19 -0
  71. data/emass_client/ruby_client/docs/CmmcResponseGet.md +8 -0
  72. data/emass_client/ruby_client/docs/ConnectivityCcsd.md +8 -0
  73. data/emass_client/ruby_client/docs/ControlsApi.md +140 -0
  74. data/emass_client/ruby_client/docs/ControlsGet.md +36 -0
  75. data/emass_client/ruby_client/docs/ControlsPut.md +9 -0
  76. data/emass_client/ruby_client/docs/ControlsRequestPutBody.md +29 -0
  77. data/emass_client/ruby_client/docs/ControlsResponseGet.md +8 -0
  78. data/emass_client/ruby_client/docs/ControlsResponsePut.md +8 -0
  79. data/emass_client/ruby_client/docs/DefinitionTransitions.md +9 -0
  80. data/emass_client/ruby_client/docs/DeleteMilestone.md +7 -0
  81. data/emass_client/ruby_client/docs/DeletePoam.md +7 -0
  82. data/emass_client/ruby_client/docs/Empty200Response.md +6 -0
  83. data/emass_client/ruby_client/docs/Error.md +8 -0
  84. data/emass_client/ruby_client/docs/InstancesTransitions.md +12 -0
  85. data/emass_client/ruby_client/docs/MilestoneResponseGet.md +8 -0
  86. data/emass_client/ruby_client/docs/MilestoneResponsePost.md +8 -0
  87. data/emass_client/ruby_client/docs/MilestoneResponsePut.md +8 -0
  88. data/emass_client/ruby_client/docs/MilestonesApi.md +350 -0
  89. data/emass_client/ruby_client/docs/MilestonesDelete.md +6 -0
  90. data/emass_client/ruby_client/docs/MilestonesGet.md +12 -0
  91. data/emass_client/ruby_client/docs/MilestonesPost.md +6 -0
  92. data/emass_client/ruby_client/docs/MilestonesPut.md +6 -0
  93. data/emass_client/ruby_client/docs/MilestonesPutPostDelete.md +11 -0
  94. data/emass_client/ruby_client/docs/MilestonesRequestPostBody.md +9 -0
  95. data/emass_client/ruby_client/docs/MilestonesRequestPutBody.md +9 -0
  96. data/emass_client/ruby_client/docs/MilestonesRequiredPost.md +8 -0
  97. data/emass_client/ruby_client/docs/MilestonesRequiredPut.md +9 -0
  98. data/emass_client/ruby_client/docs/Model200.md +7 -0
  99. data/emass_client/ruby_client/docs/Model201.md +7 -0
  100. data/emass_client/ruby_client/docs/Model201Meta.md +8 -0
  101. data/emass_client/ruby_client/docs/Model400.md +7 -0
  102. data/emass_client/ruby_client/docs/Model400Meta.md +8 -0
  103. data/emass_client/ruby_client/docs/Model400Response.md +7 -0
  104. data/emass_client/ruby_client/docs/Model401.md +7 -0
  105. data/emass_client/ruby_client/docs/Model401Meta.md +8 -0
  106. data/emass_client/ruby_client/docs/Model403.md +7 -0
  107. data/emass_client/ruby_client/docs/Model403Meta.md +8 -0
  108. data/emass_client/ruby_client/docs/Model404.md +8 -0
  109. data/emass_client/ruby_client/docs/Model404Response.md +7 -0
  110. data/emass_client/ruby_client/docs/Model405.md +7 -0
  111. data/emass_client/ruby_client/docs/Model405Meta.md +8 -0
  112. data/emass_client/ruby_client/docs/Model411.md +7 -0
  113. data/emass_client/ruby_client/docs/Model411Meta.md +8 -0
  114. data/emass_client/ruby_client/docs/Model490.md +7 -0
  115. data/emass_client/ruby_client/docs/Model490Meta.md +8 -0
  116. data/emass_client/ruby_client/docs/Model500.md +7 -0
  117. data/emass_client/ruby_client/docs/Model500Meta.md +8 -0
  118. data/emass_client/ruby_client/docs/PACApi.md +137 -0
  119. data/emass_client/ruby_client/docs/POAMApi.md +346 -0
  120. data/emass_client/ruby_client/docs/PacGet.md +14 -0
  121. data/emass_client/ruby_client/docs/PacPost.md +9 -0
  122. data/emass_client/ruby_client/docs/PacRequestPostBody.md +9 -0
  123. data/emass_client/ruby_client/docs/PacResponseGet.md +8 -0
  124. data/emass_client/ruby_client/docs/PacResponsePost.md +8 -0
  125. data/emass_client/ruby_client/docs/PoamDelete.md +6 -0
  126. data/emass_client/ruby_client/docs/PoamGet.md +39 -0
  127. data/emass_client/ruby_client/docs/PoamPost.md +6 -0
  128. data/emass_client/ruby_client/docs/PoamPostPutDel.md +10 -0
  129. data/emass_client/ruby_client/docs/PoamPut.md +6 -0
  130. data/emass_client/ruby_client/docs/PoamRequestPostBody.md +6 -0
  131. data/emass_client/ruby_client/docs/PoamRequestPutBody.md +6 -0
  132. data/emass_client/ruby_client/docs/PoamRequiredPost.md +32 -0
  133. data/emass_client/ruby_client/docs/PoamRequiredPut.md +35 -0
  134. data/emass_client/ruby_client/docs/PoamResponseDelete.md +8 -0
  135. data/emass_client/ruby_client/docs/PoamResponseGet.md +8 -0
  136. data/emass_client/ruby_client/docs/PoamResponsePost.md +8 -0
  137. data/emass_client/ruby_client/docs/PoamResponsePut.md +8 -0
  138. data/emass_client/ruby_client/docs/Register.md +8 -0
  139. data/emass_client/ruby_client/docs/RegisterData.md +7 -0
  140. data/emass_client/ruby_client/docs/RegisterUserRequestPostBody.md +7 -0
  141. data/emass_client/ruby_client/docs/RegistrationApi.md +71 -0
  142. data/emass_client/ruby_client/docs/RoleCategory.md +10 -0
  143. data/emass_client/ruby_client/docs/Roles.md +9 -0
  144. data/emass_client/ruby_client/docs/Ssps.md +9 -0
  145. data/emass_client/ruby_client/docs/Stage.md +8 -0
  146. data/emass_client/ruby_client/docs/StaticCodeApplication.md +12 -0
  147. data/emass_client/ruby_client/docs/StaticCodeRequestPostBody.md +6 -0
  148. data/emass_client/ruby_client/docs/StaticCodeRequiredPost.md +8 -0
  149. data/emass_client/ruby_client/docs/StaticCodeRequiredPostApplication.md +8 -0
  150. data/emass_client/ruby_client/docs/StaticCodeScansApi.md +73 -0
  151. data/emass_client/ruby_client/docs/Success200Response.md +8 -0
  152. data/emass_client/ruby_client/docs/SystemIdArtifactsBody.md +10 -0
  153. data/emass_client/ruby_client/docs/SystemResponse.md +8 -0
  154. data/emass_client/ruby_client/docs/SystemRolesApi.md +137 -0
  155. data/emass_client/ruby_client/docs/SystemRolesCategoryResponse.md +8 -0
  156. data/emass_client/ruby_client/docs/SystemRolesResponse.md +8 -0
  157. data/emass_client/ruby_client/docs/SystemRolesResponseData.md +8 -0
  158. data/emass_client/ruby_client/docs/Systems.md +70 -0
  159. data/emass_client/ruby_client/docs/SystemsApi.md +155 -0
  160. data/emass_client/ruby_client/docs/Test.md +8 -0
  161. data/emass_client/ruby_client/docs/TestApi.md +66 -0
  162. data/emass_client/ruby_client/docs/TestData.md +7 -0
  163. data/emass_client/ruby_client/docs/TestResultsApi.md +144 -0
  164. data/emass_client/ruby_client/docs/TestResultsGet.md +15 -0
  165. data/emass_client/ruby_client/docs/TestResultsPost.md +9 -0
  166. data/emass_client/ruby_client/docs/TestResultsRequestPostBody.md +11 -0
  167. data/emass_client/ruby_client/docs/TestResultsResponseGet.md +8 -0
  168. data/emass_client/ruby_client/docs/TestResultsResponsePost.md +8 -0
  169. data/emass_client/ruby_client/docs/Users.md +9 -0
  170. data/emass_client/ruby_client/docs/WorkflowDefinitionGet.md +11 -0
  171. data/emass_client/ruby_client/docs/WorkflowDefinitionResponseGet.md +8 -0
  172. data/emass_client/ruby_client/docs/WorkflowDefinitionsApi.md +74 -0
  173. data/emass_client/ruby_client/docs/WorkflowInstancesApi.md +146 -0
  174. data/emass_client/ruby_client/docs/WorkflowInstancesGet.md +16 -0
  175. data/emass_client/ruby_client/docs/WorkflowInstancesResponseGet.md +8 -0
  176. data/emass_client/ruby_client/git_push.sh +55 -0
  177. data/emass_client/ruby_client/lib/swagger_client/api/artifacts_api.rb +310 -0
  178. data/emass_client/ruby_client/lib/swagger_client/api/artifacts_export_api.rb +86 -0
  179. data/emass_client/ruby_client/lib/swagger_client/api/cac_api.rb +143 -0
  180. data/emass_client/ruby_client/lib/swagger_client/api/cmmc_assessments_api.rb +77 -0
  181. data/emass_client/ruby_client/lib/swagger_client/api/controls_api.rb +143 -0
  182. data/emass_client/ruby_client/lib/swagger_client/api/milestones_api.rb +366 -0
  183. data/emass_client/ruby_client/lib/swagger_client/api/pac_api.rb +140 -0
  184. data/emass_client/ruby_client/lib/swagger_client/api/poam_api.rb +345 -0
  185. data/emass_client/ruby_client/lib/swagger_client/api/registration_api.rb +78 -0
  186. data/emass_client/ruby_client/lib/swagger_client/api/static_code_scans_api.rb +84 -0
  187. data/emass_client/ruby_client/lib/swagger_client/api/system_roles_api.rb +150 -0
  188. data/emass_client/ruby_client/lib/swagger_client/api/systems_api.rb +162 -0
  189. data/emass_client/ruby_client/lib/swagger_client/api/test_api.rb +70 -0
  190. data/emass_client/ruby_client/lib/swagger_client/api/test_results_api.rb +149 -0
  191. data/emass_client/ruby_client/lib/swagger_client/api/workflow_definitions_api.rb +76 -0
  192. data/emass_client/ruby_client/lib/swagger_client/api/workflow_instances_api.rb +153 -0
  193. data/emass_client/ruby_client/lib/swagger_client/api_client.rb +389 -0
  194. data/emass_client/ruby_client/lib/swagger_client/api_error.rb +57 -0
  195. data/emass_client/ruby_client/lib/swagger_client/configuration.rb +224 -0
  196. data/emass_client/ruby_client/lib/swagger_client/models/artifacts_delete.rb +201 -0
  197. data/emass_client/ruby_client/lib/swagger_client/models/artifacts_delete_inner.rb +207 -0
  198. data/emass_client/ruby_client/lib/swagger_client/models/artifacts_get.rb +383 -0
  199. data/emass_client/ruby_client/lib/swagger_client/models/artifacts_request_put_body.rb +363 -0
  200. data/emass_client/ruby_client/lib/swagger_client/models/artifacts_response_del.rb +217 -0
  201. data/emass_client/ruby_client/lib/swagger_client/models/artifacts_response_del_data.rb +225 -0
  202. data/emass_client/ruby_client/lib/swagger_client/models/artifacts_response_get.rb +217 -0
  203. data/emass_client/ruby_client/lib/swagger_client/models/artifacts_response_put_post.rb +217 -0
  204. data/emass_client/ruby_client/lib/swagger_client/models/cac_get.rb +301 -0
  205. data/emass_client/ruby_client/lib/swagger_client/models/cac_request_post_body.rb +217 -0
  206. data/emass_client/ruby_client/lib/swagger_client/models/cac_response_get.rb +217 -0
  207. data/emass_client/ruby_client/lib/swagger_client/models/cac_response_post.rb +217 -0
  208. data/emass_client/ruby_client/lib/swagger_client/models/cac_response_post_data.rb +225 -0
  209. data/emass_client/ruby_client/lib/swagger_client/models/cmmc_get.rb +398 -0
  210. data/emass_client/ruby_client/lib/swagger_client/models/cmmc_response_get.rb +217 -0
  211. data/emass_client/ruby_client/lib/swagger_client/models/connectivity_ccsd.rb +217 -0
  212. data/emass_client/ruby_client/lib/swagger_client/models/controls_get.rb +663 -0
  213. data/emass_client/ruby_client/lib/swagger_client/models/controls_put.rb +227 -0
  214. data/emass_client/ruby_client/lib/swagger_client/models/controls_request_put_body.rb +606 -0
  215. data/emass_client/ruby_client/lib/swagger_client/models/controls_response_get.rb +217 -0
  216. data/emass_client/ruby_client/lib/swagger_client/models/controls_response_put.rb +217 -0
  217. data/emass_client/ruby_client/lib/swagger_client/models/definition_transitions.rb +274 -0
  218. data/emass_client/ruby_client/lib/swagger_client/models/delete_milestone.rb +212 -0
  219. data/emass_client/ruby_client/lib/swagger_client/models/delete_poam.rb +212 -0
  220. data/emass_client/ruby_client/lib/swagger_client/models/empty200_response.rb +197 -0
  221. data/emass_client/ruby_client/lib/swagger_client/models/error.rb +225 -0
  222. data/emass_client/ruby_client/lib/swagger_client/models/instances_transitions.rb +327 -0
  223. data/emass_client/ruby_client/lib/swagger_client/models/milestone_response_get.rb +217 -0
  224. data/emass_client/ruby_client/lib/swagger_client/models/milestone_response_post.rb +217 -0
  225. data/emass_client/ruby_client/lib/swagger_client/models/milestone_response_put.rb +217 -0
  226. data/emass_client/ruby_client/lib/swagger_client/models/milestones_delete.rb +197 -0
  227. data/emass_client/ruby_client/lib/swagger_client/models/milestones_get.rb +291 -0
  228. data/emass_client/ruby_client/lib/swagger_client/models/milestones_post.rb +197 -0
  229. data/emass_client/ruby_client/lib/swagger_client/models/milestones_put.rb +197 -0
  230. data/emass_client/ruby_client/lib/swagger_client/models/milestones_put_post_delete.rb +247 -0
  231. data/emass_client/ruby_client/lib/swagger_client/models/milestones_request_post_body.rb +242 -0
  232. data/emass_client/ruby_client/lib/swagger_client/models/milestones_request_put_body.rb +242 -0
  233. data/emass_client/ruby_client/lib/swagger_client/models/milestones_required_post.rb +227 -0
  234. data/emass_client/ruby_client/lib/swagger_client/models/milestones_required_put.rb +242 -0
  235. data/emass_client/ruby_client/lib/swagger_client/models/model_200.rb +208 -0
  236. data/emass_client/ruby_client/lib/swagger_client/models/model_201.rb +206 -0
  237. data/emass_client/ruby_client/lib/swagger_client/models/model_201_meta.rb +219 -0
  238. data/emass_client/ruby_client/lib/swagger_client/models/model_400.rb +206 -0
  239. data/emass_client/ruby_client/lib/swagger_client/models/model_400_meta.rb +219 -0
  240. data/emass_client/ruby_client/lib/swagger_client/models/model_400_response.rb +206 -0
  241. data/emass_client/ruby_client/lib/swagger_client/models/model_401.rb +206 -0
  242. data/emass_client/ruby_client/lib/swagger_client/models/model_401_meta.rb +219 -0
  243. data/emass_client/ruby_client/lib/swagger_client/models/model_403.rb +206 -0
  244. data/emass_client/ruby_client/lib/swagger_client/models/model_403_meta.rb +219 -0
  245. data/emass_client/ruby_client/lib/swagger_client/models/model_404.rb +219 -0
  246. data/emass_client/ruby_client/lib/swagger_client/models/model_404_response.rb +206 -0
  247. data/emass_client/ruby_client/lib/swagger_client/models/model_405.rb +206 -0
  248. data/emass_client/ruby_client/lib/swagger_client/models/model_405_meta.rb +219 -0
  249. data/emass_client/ruby_client/lib/swagger_client/models/model_411.rb +206 -0
  250. data/emass_client/ruby_client/lib/swagger_client/models/model_411_meta.rb +219 -0
  251. data/emass_client/ruby_client/lib/swagger_client/models/model_490.rb +206 -0
  252. data/emass_client/ruby_client/lib/swagger_client/models/model_490_meta.rb +219 -0
  253. data/emass_client/ruby_client/lib/swagger_client/models/model_500.rb +206 -0
  254. data/emass_client/ruby_client/lib/swagger_client/models/model_500_meta.rb +219 -0
  255. data/emass_client/ruby_client/lib/swagger_client/models/pac_get.rb +311 -0
  256. data/emass_client/ruby_client/lib/swagger_client/models/pac_post.rb +259 -0
  257. data/emass_client/ruby_client/lib/swagger_client/models/pac_request_post_body.rb +261 -0
  258. data/emass_client/ruby_client/lib/swagger_client/models/pac_response_get.rb +217 -0
  259. data/emass_client/ruby_client/lib/swagger_client/models/pac_response_post.rb +217 -0
  260. data/emass_client/ruby_client/lib/swagger_client/models/poam_delete.rb +197 -0
  261. data/emass_client/ruby_client/lib/swagger_client/models/poam_get.rb +646 -0
  262. data/emass_client/ruby_client/lib/swagger_client/models/poam_post.rb +197 -0
  263. data/emass_client/ruby_client/lib/swagger_client/models/poam_post_put_del.rb +237 -0
  264. data/emass_client/ruby_client/lib/swagger_client/models/poam_put.rb +197 -0
  265. data/emass_client/ruby_client/lib/swagger_client/models/poam_request_post_body.rb +197 -0
  266. data/emass_client/ruby_client/lib/swagger_client/models/poam_request_put_body.rb +197 -0
  267. data/emass_client/ruby_client/lib/swagger_client/models/poam_required_post.rb +564 -0
  268. data/emass_client/ruby_client/lib/swagger_client/models/poam_required_put.rb +594 -0
  269. data/emass_client/ruby_client/lib/swagger_client/models/poam_response_delete.rb +217 -0
  270. data/emass_client/ruby_client/lib/swagger_client/models/poam_response_get.rb +217 -0
  271. data/emass_client/ruby_client/lib/swagger_client/models/poam_response_post.rb +217 -0
  272. data/emass_client/ruby_client/lib/swagger_client/models/poam_response_put.rb +217 -0
  273. data/emass_client/ruby_client/lib/swagger_client/models/register.rb +215 -0
  274. data/emass_client/ruby_client/lib/swagger_client/models/register_data.rb +206 -0
  275. data/emass_client/ruby_client/lib/swagger_client/models/register_user_request_post_body.rb +211 -0
  276. data/emass_client/ruby_client/lib/swagger_client/models/role_category.rb +272 -0
  277. data/emass_client/ruby_client/lib/swagger_client/models/roles.rb +274 -0
  278. data/emass_client/ruby_client/lib/swagger_client/models/ssps.rb +227 -0
  279. data/emass_client/ruby_client/lib/swagger_client/models/stage.rb +252 -0
  280. data/emass_client/ruby_client/lib/swagger_client/models/static_code_application.rb +303 -0
  281. data/emass_client/ruby_client/lib/swagger_client/models/static_code_request_post_body.rb +197 -0
  282. data/emass_client/ruby_client/lib/swagger_client/models/static_code_required_post.rb +217 -0
  283. data/emass_client/ruby_client/lib/swagger_client/models/static_code_required_post_application.rb +217 -0
  284. data/emass_client/ruby_client/lib/swagger_client/models/success200_response.rb +217 -0
  285. data/emass_client/ruby_client/lib/swagger_client/models/system_id_artifacts_body.rb +284 -0
  286. data/emass_client/ruby_client/lib/swagger_client/models/system_response.rb +217 -0
  287. data/emass_client/ruby_client/lib/swagger_client/models/system_roles_category_response.rb +217 -0
  288. data/emass_client/ruby_client/lib/swagger_client/models/system_roles_response.rb +217 -0
  289. data/emass_client/ruby_client/lib/swagger_client/models/system_roles_response_data.rb +219 -0
  290. data/emass_client/ruby_client/lib/swagger_client/models/systems.rb +1137 -0
  291. data/emass_client/ruby_client/lib/swagger_client/models/test.rb +215 -0
  292. data/emass_client/ruby_client/lib/swagger_client/models/test_data.rb +206 -0
  293. data/emass_client/ruby_client/lib/swagger_client/models/test_results_get.rb +333 -0
  294. data/emass_client/ruby_client/lib/swagger_client/models/test_results_post.rb +227 -0
  295. data/emass_client/ruby_client/lib/swagger_client/models/test_results_request_post_body.rb +306 -0
  296. data/emass_client/ruby_client/lib/swagger_client/models/test_results_response_get.rb +217 -0
  297. data/emass_client/ruby_client/lib/swagger_client/models/test_results_response_post.rb +217 -0
  298. data/emass_client/ruby_client/lib/swagger_client/models/users.rb +224 -0
  299. data/emass_client/ruby_client/lib/swagger_client/models/workflow_definition_get.rb +282 -0
  300. data/emass_client/ruby_client/lib/swagger_client/models/workflow_definition_response_get.rb +217 -0
  301. data/emass_client/ruby_client/lib/swagger_client/models/workflow_instances_get.rb +368 -0
  302. data/emass_client/ruby_client/lib/swagger_client/models/workflow_instances_response_get.rb +217 -0
  303. data/emass_client/ruby_client/lib/swagger_client/version.rb +14 -0
  304. data/emass_client/ruby_client/lib/swagger_client.rb +161 -0
  305. data/emass_client/ruby_client/spec/api/artifacts_api_spec.rb +92 -0
  306. data/emass_client/ruby_client/spec/api/artifacts_export_api_spec.rb +48 -0
  307. data/emass_client/ruby_client/spec/api/cac_api_spec.rb +60 -0
  308. data/emass_client/ruby_client/spec/api/cmmc_assessments_api_spec.rb +46 -0
  309. data/emass_client/ruby_client/spec/api/controls_api_spec.rb +60 -0
  310. data/emass_client/ruby_client/spec/api/milestones_api_spec.rb +105 -0
  311. data/emass_client/ruby_client/spec/api/pac_api_spec.rb +59 -0
  312. data/emass_client/ruby_client/spec/api/poam_api_spec.rb +103 -0
  313. data/emass_client/ruby_client/spec/api/registration_api_spec.rb +46 -0
  314. data/emass_client/ruby_client/spec/api/static_code_scans_api_spec.rb +47 -0
  315. data/emass_client/ruby_client/spec/api/system_roles_api_spec.rb +60 -0
  316. data/emass_client/ruby_client/spec/api/systems_api_spec.rb +67 -0
  317. data/emass_client/ruby_client/spec/api/test_api_spec.rb +45 -0
  318. data/emass_client/ruby_client/spec/api/test_results_api_spec.rb +62 -0
  319. data/emass_client/ruby_client/spec/api/workflow_definitions_api_spec.rb +47 -0
  320. data/emass_client/ruby_client/spec/api/workflow_instances_api_spec.rb +63 -0
  321. data/emass_client/ruby_client/spec/api_client_spec.rb +225 -0
  322. data/emass_client/ruby_client/spec/base_object_spec.rb +109 -0
  323. data/emass_client/ruby_client/spec/configuration_spec.rb +41 -0
  324. data/emass_client/ruby_client/spec/models/artifacts_delete_inner_spec.rb +40 -0
  325. data/emass_client/ruby_client/spec/models/artifacts_delete_spec.rb +34 -0
  326. data/emass_client/ruby_client/spec/models/artifacts_get_spec.rb +126 -0
  327. data/emass_client/ruby_client/spec/models/artifacts_request_put_body_spec.rb +102 -0
  328. data/emass_client/ruby_client/spec/models/artifacts_response_del_data_spec.rb +52 -0
  329. data/emass_client/ruby_client/spec/models/artifacts_response_del_spec.rb +46 -0
  330. data/emass_client/ruby_client/spec/models/artifacts_response_get_spec.rb +46 -0
  331. data/emass_client/ruby_client/spec/models/artifacts_response_put_post_spec.rb +46 -0
  332. data/emass_client/ruby_client/spec/models/cac_get_spec.rb +80 -0
  333. data/emass_client/ruby_client/spec/models/cac_request_post_body_spec.rb +46 -0
  334. data/emass_client/ruby_client/spec/models/cac_response_get_spec.rb +46 -0
  335. data/emass_client/ruby_client/spec/models/cac_response_post_data_spec.rb +52 -0
  336. data/emass_client/ruby_client/spec/models/cac_response_post_spec.rb +46 -0
  337. data/emass_client/ruby_client/spec/models/cmmc_get_spec.rb +128 -0
  338. data/emass_client/ruby_client/spec/models/cmmc_response_get_spec.rb +46 -0
  339. data/emass_client/ruby_client/spec/models/connectivity_ccsd_spec.rb +46 -0
  340. data/emass_client/ruby_client/spec/models/controls_get_spec.rb +262 -0
  341. data/emass_client/ruby_client/spec/models/controls_put_spec.rb +52 -0
  342. data/emass_client/ruby_client/spec/models/controls_request_put_body_spec.rb +216 -0
  343. data/emass_client/ruby_client/spec/models/controls_response_get_spec.rb +46 -0
  344. data/emass_client/ruby_client/spec/models/controls_response_put_spec.rb +46 -0
  345. data/emass_client/ruby_client/spec/models/definition_transitions_spec.rb +64 -0
  346. data/emass_client/ruby_client/spec/models/delete_milestone_spec.rb +40 -0
  347. data/emass_client/ruby_client/spec/models/delete_poam_spec.rb +40 -0
  348. data/emass_client/ruby_client/spec/models/empty200_response_spec.rb +34 -0
  349. data/emass_client/ruby_client/spec/models/error_spec.rb +46 -0
  350. data/emass_client/ruby_client/spec/models/instances_transitions_spec.rb +86 -0
  351. data/emass_client/ruby_client/spec/models/milestone_response_get_spec.rb +46 -0
  352. data/emass_client/ruby_client/spec/models/milestone_response_post_spec.rb +46 -0
  353. data/emass_client/ruby_client/spec/models/milestone_response_put_spec.rb +46 -0
  354. data/emass_client/ruby_client/spec/models/milestones_delete_spec.rb +34 -0
  355. data/emass_client/ruby_client/spec/models/milestones_get_spec.rb +74 -0
  356. data/emass_client/ruby_client/spec/models/milestones_post_spec.rb +34 -0
  357. data/emass_client/ruby_client/spec/models/milestones_put_post_delete_spec.rb +64 -0
  358. data/emass_client/ruby_client/spec/models/milestones_put_spec.rb +34 -0
  359. data/emass_client/ruby_client/spec/models/milestones_request_post_body_spec.rb +52 -0
  360. data/emass_client/ruby_client/spec/models/milestones_request_put_body_spec.rb +52 -0
  361. data/emass_client/ruby_client/spec/models/milestones_required_post_spec.rb +46 -0
  362. data/emass_client/ruby_client/spec/models/milestones_required_put_spec.rb +52 -0
  363. data/emass_client/ruby_client/spec/models/model_200_spec.rb +40 -0
  364. data/emass_client/ruby_client/spec/models/model_201_meta_spec.rb +46 -0
  365. data/emass_client/ruby_client/spec/models/model_201_spec.rb +40 -0
  366. data/emass_client/ruby_client/spec/models/model_400_meta_spec.rb +46 -0
  367. data/emass_client/ruby_client/spec/models/model_400_response_spec.rb +40 -0
  368. data/emass_client/ruby_client/spec/models/model_400_spec.rb +40 -0
  369. data/emass_client/ruby_client/spec/models/model_401_meta_spec.rb +46 -0
  370. data/emass_client/ruby_client/spec/models/model_401_spec.rb +40 -0
  371. data/emass_client/ruby_client/spec/models/model_403_meta_spec.rb +46 -0
  372. data/emass_client/ruby_client/spec/models/model_403_spec.rb +40 -0
  373. data/emass_client/ruby_client/spec/models/model_404_response_spec.rb +40 -0
  374. data/emass_client/ruby_client/spec/models/model_404_spec.rb +46 -0
  375. data/emass_client/ruby_client/spec/models/model_405_meta_spec.rb +46 -0
  376. data/emass_client/ruby_client/spec/models/model_405_spec.rb +40 -0
  377. data/emass_client/ruby_client/spec/models/model_411_meta_spec.rb +46 -0
  378. data/emass_client/ruby_client/spec/models/model_411_spec.rb +40 -0
  379. data/emass_client/ruby_client/spec/models/model_490_meta_spec.rb +46 -0
  380. data/emass_client/ruby_client/spec/models/model_490_spec.rb +40 -0
  381. data/emass_client/ruby_client/spec/models/model_500_meta_spec.rb +46 -0
  382. data/emass_client/ruby_client/spec/models/model_500_spec.rb +40 -0
  383. data/emass_client/ruby_client/spec/models/pac_get_spec.rb +86 -0
  384. data/emass_client/ruby_client/spec/models/pac_post_spec.rb +56 -0
  385. data/emass_client/ruby_client/spec/models/pac_request_post_body_spec.rb +56 -0
  386. data/emass_client/ruby_client/spec/models/pac_response_get_spec.rb +46 -0
  387. data/emass_client/ruby_client/spec/models/pac_response_post_spec.rb +46 -0
  388. data/emass_client/ruby_client/spec/models/poam_delete_spec.rb +34 -0
  389. data/emass_client/ruby_client/spec/models/poam_get_spec.rb +264 -0
  390. data/emass_client/ruby_client/spec/models/poam_post_put_del_spec.rb +58 -0
  391. data/emass_client/ruby_client/spec/models/poam_post_spec.rb +34 -0
  392. data/emass_client/ruby_client/spec/models/poam_put_spec.rb +34 -0
  393. data/emass_client/ruby_client/spec/models/poam_request_post_body_spec.rb +34 -0
  394. data/emass_client/ruby_client/spec/models/poam_request_put_body_spec.rb +34 -0
  395. data/emass_client/ruby_client/spec/models/poam_required_post_spec.rb +218 -0
  396. data/emass_client/ruby_client/spec/models/poam_required_put_spec.rb +236 -0
  397. data/emass_client/ruby_client/spec/models/poam_response_delete_spec.rb +46 -0
  398. data/emass_client/ruby_client/spec/models/poam_response_get_spec.rb +46 -0
  399. data/emass_client/ruby_client/spec/models/poam_response_post_spec.rb +46 -0
  400. data/emass_client/ruby_client/spec/models/poam_response_put_spec.rb +46 -0
  401. data/emass_client/ruby_client/spec/models/register_data_spec.rb +40 -0
  402. data/emass_client/ruby_client/spec/models/register_spec.rb +46 -0
  403. data/emass_client/ruby_client/spec/models/register_user_request_post_body_spec.rb +40 -0
  404. data/emass_client/ruby_client/spec/models/role_category_spec.rb +62 -0
  405. data/emass_client/ruby_client/spec/models/roles_spec.rb +60 -0
  406. data/emass_client/ruby_client/spec/models/ssps_spec.rb +52 -0
  407. data/emass_client/ruby_client/spec/models/stage_spec.rb +50 -0
  408. data/emass_client/ruby_client/spec/models/static_code_application_spec.rb +78 -0
  409. data/emass_client/ruby_client/spec/models/static_code_request_post_body_spec.rb +34 -0
  410. data/emass_client/ruby_client/spec/models/static_code_required_post_application_spec.rb +46 -0
  411. data/emass_client/ruby_client/spec/models/static_code_required_post_spec.rb +46 -0
  412. data/emass_client/ruby_client/spec/models/success200_response_spec.rb +46 -0
  413. data/emass_client/ruby_client/spec/models/system_id_artifacts_body_spec.rb +66 -0
  414. data/emass_client/ruby_client/spec/models/system_response_spec.rb +46 -0
  415. data/emass_client/ruby_client/spec/models/system_roles_category_response_spec.rb +46 -0
  416. data/emass_client/ruby_client/spec/models/system_roles_response_data_spec.rb +46 -0
  417. data/emass_client/ruby_client/spec/models/system_roles_response_spec.rb +46 -0
  418. data/emass_client/ruby_client/spec/models/systems_spec.rb +510 -0
  419. data/emass_client/ruby_client/spec/models/test_data_spec.rb +40 -0
  420. data/emass_client/ruby_client/spec/models/test_results_get_spec.rb +96 -0
  421. data/emass_client/ruby_client/spec/models/test_results_post_spec.rb +52 -0
  422. data/emass_client/ruby_client/spec/models/test_results_request_post_body_spec.rb +68 -0
  423. data/emass_client/ruby_client/spec/models/test_results_response_get_spec.rb +46 -0
  424. data/emass_client/ruby_client/spec/models/test_results_response_post_spec.rb +46 -0
  425. data/emass_client/ruby_client/spec/models/test_spec.rb +46 -0
  426. data/emass_client/ruby_client/spec/models/users_spec.rb +52 -0
  427. data/emass_client/ruby_client/spec/models/workflow_definition_get_spec.rb +68 -0
  428. data/emass_client/ruby_client/spec/models/workflow_definition_response_get_spec.rb +46 -0
  429. data/emass_client/ruby_client/spec/models/workflow_instances_get_spec.rb +110 -0
  430. data/emass_client/ruby_client/spec/models/workflow_instances_response_get_spec.rb +46 -0
  431. data/emass_client/ruby_client/spec/spec_helper.rb +110 -0
  432. data/emass_client/ruby_client/swagger_client.gemspec +38 -0
  433. data/emass_client/swagger-codegen/ruby_template/api_client.mustache +384 -0
  434. data/emass_client/swagger-codegen/ruby_template/api_info.mustache +12 -0
  435. data/emass_client/swagger-codegen/ruby_template/configuration.mustache +234 -0
  436. data/emass_client/swagger-codegen/ruby_template/gemspec.mustache +37 -0
  437. data/emasser.gemspec +40 -0
  438. data/exe/emasser +5 -0
  439. data/lib/emasser/cli.rb +25 -0
  440. data/lib/emasser/configuration.rb +34 -0
  441. data/lib/emasser/constants.rb +18 -0
  442. data/lib/emasser/delete.rb +146 -0
  443. data/lib/emasser/errors.rb +14 -0
  444. data/lib/emasser/get.rb +675 -0
  445. data/lib/emasser/help/approvalCac_post_mapper.md +20 -0
  446. data/lib/emasser/help/approvalPac_post_mapper.md +20 -0
  447. data/lib/emasser/help/artifacts_del_mapper.md +9 -0
  448. data/lib/emasser/help/artifacts_post_mapper.md +59 -0
  449. data/lib/emasser/help/artifacts_put_mapper.md +34 -0
  450. data/lib/emasser/help/cmmc_get_mapper.md +4 -0
  451. data/lib/emasser/help/controls_put_mapper.md +74 -0
  452. data/lib/emasser/help/milestone_del_mapper.md +11 -0
  453. data/lib/emasser/help/milestone_post_mapper.md +14 -0
  454. data/lib/emasser/help/milestone_put_mapper.md +23 -0
  455. data/lib/emasser/help/poam_del_mapper.md +5 -0
  456. data/lib/emasser/help/poam_post_mapper.md +93 -0
  457. data/lib/emasser/help/poam_put_mapper.md +107 -0
  458. data/lib/emasser/help/staticcode_clear_mapper.md +16 -0
  459. data/lib/emasser/help/staticcode_post_mapper.md +21 -0
  460. data/lib/emasser/help/testresults_post_mapper.md +21 -0
  461. data/lib/emasser/help.rb +11 -0
  462. data/lib/emasser/input_converters.rb +21 -0
  463. data/lib/emasser/options_parser.rb +20 -0
  464. data/lib/emasser/output_converters.rb +14 -0
  465. data/lib/emasser/post.rb +609 -0
  466. data/lib/emasser/put.rb +581 -0
  467. data/lib/emasser/version.rb +5 -0
  468. data/lib/emasser.rb +19 -0
  469. metadata +725 -0
@@ -0,0 +1,609 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Hack class that properly formats the CLI help
4
+ class SubCommandBase < Thor
5
+ include OptionsParser
6
+ include InputConverters
7
+ include OutputConverters
8
+
9
+ # We do not control the method declaration for the banner
10
+
11
+ # rubocop:disable Style/OptionalBooleanParameter
12
+ def self.banner(command, _namespace = nil, subcommand = false)
13
+ # Use the $thor_runner (declared by the Thor CLI framework)
14
+ # to properly format the help text of sub-sub-commands.
15
+
16
+ # rubocop:disable Style/GlobalVars
17
+ if ancestors[0].to_s.include? '::Post'
18
+ "#{basename} #{command.formatted_usage(self, $thor_runner, subcommand)}"
19
+ else
20
+ "#{basename} post #{command.formatted_usage(self, $thor_runner, subcommand)}"
21
+ end
22
+ # rubocop:enable Style/GlobalVars
23
+ end
24
+ # rubocop:enable Style/OptionalBooleanParameter
25
+ end
26
+
27
+ # Override thor's long_desc identation behavior
28
+ class Thor
29
+ module Shell
30
+ class Basic
31
+ def print_wrapped(message, _options = {})
32
+ message = "\n#{message}\n" unless message[0] == "\n"
33
+ stdout.puts message
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ module Emasser
40
+ POAMS_POST_HELP_MESSAGE = "\nInvoke \"bundle exec exe/emasser post poams help add\" for additional help"
41
+ # The Test Results endpoints provide the ability to add test results for a
42
+ # system's Assessment Procedures (CCIs) which determine Security Control compliance.
43
+ #
44
+ # Endpoint:
45
+ # /api/systems/{systemId}/test-results - Add one or many test results for a system
46
+ class TestResults < SubCommandBase
47
+ def self.exit_on_failure?
48
+ true
49
+ end
50
+
51
+ desc 'add', 'Post a test result for a system'
52
+ long_desc Help.text(:testresults_post_mapper)
53
+
54
+ # Required fields
55
+ option :systemId, type: :numeric, required: true,
56
+ desc: 'A numeric value representing the system identification'
57
+ option :cci, type: :string, required: true, desc: 'The system CCI string numerical value'
58
+ option :testedBy, type: :string, required: true, desc: 'The person that conducted the test (Last Name, First)'
59
+ option :testDate, type: :numeric, required: true, desc: 'The date test was conducted, Unix time format.'
60
+ option :description, type: :string, required: true, desc: 'The description of test result. 4000 Characters.'
61
+ option :complianceStatus, type: :string, required: true, enum: ['Compliant', 'Non-Compliant', 'Not Applicable']
62
+
63
+ def add
64
+ body = SwaggerClient::TestResultsRequestPostBody.new
65
+ body.cci = options[:cci]
66
+ body.tested_by = options[:testedBy]
67
+ body.test_date = options[:testDate]
68
+ body.description = options[:description]
69
+ body.compliance_status = options[:complianceStatus]
70
+
71
+ body_array = Array.new(1, body)
72
+
73
+ begin
74
+ result = SwaggerClient::TestResultsApi
75
+ .new.add_test_results_by_system_id(body_array, options[:systemId])
76
+ puts to_output_hash(result).green
77
+ rescue SwaggerClient::ApiError => e
78
+ puts 'Exception when calling TestResultsApi->add_test_results_by_system_id'.red
79
+ puts to_output_hash(e)
80
+ end
81
+ end
82
+ end
83
+
84
+ # The POA&M endpoints provide the ability to add Plan of Action and Milestones (POA&M)
85
+ # items to a system.
86
+ #
87
+ # Endpoint:
88
+ # /api/systems/{systemId}/poams - Add one or many poa&m items in a system
89
+ class Poams < SubCommandBase
90
+ def self.exit_on_failure?
91
+ true
92
+ end
93
+
94
+ # POAM --------------------------------------------------------------------
95
+ #
96
+ # The following fields are required based on the contents of the status field
97
+ # status Required Fields
98
+ # -------------------------------------------------------------------------
99
+ # Risk Accepted comments, resources
100
+ # Ongoing scheduledCompletionDate, resources, milestones (at least 1)
101
+ # Completed scheduledCompletionDate, comments, resources,
102
+ # completionDate, milestones (at least 1)
103
+ # Not Applicable POAM can not be created
104
+ #--------------------------------------------------------------------------
105
+ #
106
+ # If a POC email is supplied, the application will attempt to locate a user
107
+ # already registered within the application and pre-populate any information
108
+ # not explicitly supplied in the request. If no such user is found, these
109
+ # fields are required within the request:
110
+ # pocFirstName, pocLastName, pocPhoneNumber
111
+
112
+ desc 'add', 'Add one or many POA&M items in a system'
113
+ long_desc Help.text(:poam_post_mapper)
114
+
115
+ # Required parameters/fields (the poamId and displayPoamId are generated by the PUT call)
116
+ option :systemId, type: :numeric, required: true, desc: 'A numeric value representing the system identification'
117
+ option :status, type: :string, required: true, enum: ['Ongoing', 'Risk Accepted', 'Completed', 'Not Applicable']
118
+ option :vulnerabilityDescription, type: :string, required: true, desc: 'POA&M vulnerability description'
119
+ option :sourceIdentVuln,
120
+ type: :string, required: true, desc: 'Source that identifies the vulnerability'
121
+ option :pocOrganization, type: :string, required: true, desc: 'Organization/Office represented'
122
+ option :resources, type: :string, required: true, desc: 'List of resources used'
123
+
124
+ # Conditional parameters/fields
125
+ option :milestone, type: :hash, required: false, desc: 'key:values are: description and scheduledCompletionDate'
126
+ option :pocFirstName, type: :string, required: false, desc: 'First name of POC'
127
+ option :pocLastName, type: :string, required: false, desc: 'Last name of POC.'
128
+ option :pocEmail, type: :string, required: false, desc: 'Email address of POC'
129
+ option :pocPhoneNumber, type: :string, required: false, desc: 'Phone number of POC (area code) ***-**** format'
130
+ option :severity, type: :string, required: false, enum: ['Very Low', 'Low', 'Moderate', 'High', 'Very High']
131
+ option :scheduledCompletionDate,
132
+ type: :numeric, required: false, desc: 'The scheduled completion date - Unix time format'
133
+ option :completionDate,
134
+ type: :numeric, required: false, desc: 'The schedule completion date - Unix time format'
135
+ option :comments, type: :string, required: false, desc: 'Comments for completed and risk accepted POA&M items'
136
+
137
+ # Optional parameters/fields
138
+ option :externalUid, type: :string, required: false, desc: 'External ID associated with the POA&M'
139
+ option :controlAcronym, type: :string, required: false, desc: 'The system acronym(s) e.g "AC-1, AC-2"'
140
+ option :cci, type: :string, required: false, desc: 'The system CCIS string numerical value'
141
+ option :securityChecks, type: :string, required: false, desc: 'Security Checks that are associated with the POA&M'
142
+ option :rawSeverity, type: :string, required: false, enum: %w[I II III]
143
+ option :relevanceOfThreat,
144
+ type: :string, required: false, enum: ['Very Low', 'Low', 'Moderate', 'High', 'Very High']
145
+ option :likelihood, type: :string, required: false, enum: ['Very Low', 'Low', 'Moderate', 'High', 'Very High']
146
+ option :impact, type: :string, required: false, desc: 'Description of Security Control’s impact'
147
+ option :impactDescription, type: :string, required: false, desc: 'Description of the security control impact'
148
+ option :residualRiskLevel,
149
+ type: :string, required: false, enum: ['Very Low', 'Low', 'Moderate', 'High', 'Very High']
150
+ option :recommendations, type: :string, required: false, desc: 'Recomendations'
151
+ option :mitigation, type: :string, required: false, desc: 'Mitigation explanation'
152
+
153
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
154
+ def add
155
+ # Required fields
156
+ body = SwaggerClient::PoamRequiredPost.new
157
+ body.status = options[:status]
158
+ body.vulnerability_description = options[:vulnerabilityDescription]
159
+ body.source_ident_vuln = options[:sourceIdentVuln]
160
+ body.poc_organization = options[:pocOrganization]
161
+ body.resources = options[:resources]
162
+
163
+ process_business_logic(body)
164
+
165
+ # Add conditional fields
166
+ body.poc_first_name = options[:pocFirstName] if options[:pocFirstName]
167
+ body.poc_last_name = options[:pocLastName] if options[:pocLastName]
168
+ body.poc_email = options[:pocEmail] if options[:pocEmail]
169
+ body.poc_phone_number = options[:pocPhoneNumber] if options[:pocPhoneNumber]
170
+ body.severity = options[:severity] if options[:severity]
171
+
172
+ # Add optional fields
173
+ body.external_uid = options[:externalUid] if options[:externalUid]
174
+ body.control_acronyms = options[:controlAcronym] if options[:controlAcronym]
175
+ body.cci = options[:cci] if options[:cci]
176
+ body.security_checks = options[:securityChecks] if options[:securityChecks]
177
+ body.raw_severity = options[:rawSeverity] if options[:rawSeverity]
178
+ body.relevance_of_threat = options[:relevanceOfThreat] if options[:relevanceOfThreat]
179
+ body.likelihood = options[:likelihood] if options[:likelihood]
180
+ body.impact = options[:impact] if options[:impact]
181
+ body.impact_description = options[:impactDescription] if options[:impactDescription]
182
+ body.residual_risk_level = options[:residualRiskLevel] if options[:residualRiskLevel]
183
+ body.recommendations = options[:recommendations] if options[:recommendations]
184
+ body.mitigation = options[:mitigation] if options[:mitigation]
185
+
186
+ body_array = Array.new(1, body)
187
+
188
+ begin
189
+ result = SwaggerClient::POAMApi.new.add_poam_by_system_id(body_array, options[:systemId])
190
+ puts to_output_hash(result).green
191
+ rescue SwaggerClient::ApiError => e
192
+ puts 'Exception when calling POAMApi->add_poam_by_system_id'.red
193
+ puts to_output_hash(e)
194
+ end
195
+ end
196
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
197
+
198
+ # rubocop:disable Metrics/BlockLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
199
+ no_commands do
200
+ def process_business_logic(body)
201
+ #-----------------------------------------------------------------------------
202
+ # Conditional fields based on the status field values
203
+ # "Risk Accepted" comments, resources
204
+ # "Ongoing" scheduledCompletionDate, resources, milestones (at least 1)
205
+ # "Completed" scheduledCompletionDate, comments, resources,
206
+ # completionDate, milestones (at least 1)
207
+ # "Not Applicable" POAM can not be created
208
+ #-----------------------------------------------------------------------------
209
+ # rubocop:disable Style/CaseLikeIf, Style/StringLiterals
210
+ if options[:status] == "Risk Accepted"
211
+ if options[:comments].nil?
212
+ puts 'When status = "Risk Accepted" the following parameters/fields are required:'.red
213
+ puts ' comments'.red
214
+ puts POAMS_POST_HELP_MESSAGE.yellow
215
+ exit
216
+ else
217
+ body.comments = options[:comments]
218
+ end
219
+ elsif options[:status] == "Ongoing"
220
+ if options[:scheduledCompletionDate].nil? || options[:milestone].nil?
221
+ puts 'When status = "Ongoing" the following parameters/fields are required:'.red
222
+ puts ' scheduledCompletionDate, or milestone'.red
223
+ print_milestone_help
224
+ puts POAMS_POST_HELP_MESSAGE.yellow
225
+ exit
226
+ elsif options[:milestone]["description"].nil? || options[:milestone]["scheduledCompletionDate"].nil?
227
+ puts 'Missing milstone parameters/fields'.red
228
+ print_milestone_help
229
+ exit
230
+ else
231
+ body.scheduled_completion_date = options[:scheduledCompletionDate]
232
+
233
+ milestone = SwaggerClient::MilestonesRequiredPost.new
234
+ milestone.description = options[:milestone]["description"]
235
+ milestone.scheduled_completion_date = options[:milestone]["scheduledCompletionDate"]
236
+ milestone_array = Array.new(1, milestone)
237
+ body.milestones = milestone_array
238
+ end
239
+ elsif options[:status] == "Completed"
240
+ if options[:scheduledCompletionDate].nil? || options[:comments].nil? ||
241
+ options[:completionDate].nil? || options[:milestone].nil?
242
+ puts 'When status = "Completed" the following parameters/fields are required:'.red
243
+ puts ' scheduledCompletionDate, comments, completionDate, or milestone'.red
244
+ print_milestone_help
245
+ puts POAMS_POST_HELP_MESSAGE.yellow
246
+ exit
247
+ else
248
+ body.scheduled_completion_date = options[:scheduledCompletionDate]
249
+ body.comments = options[:comments]
250
+ body.completion_date = options[:completionDate]
251
+
252
+ milestone = SwaggerClient::MilestonesRequiredPost.new
253
+ milestone.description = options[:milestone]["description"]
254
+ milestone.scheduled_completion_date = options[:milestone]["scheduledCompletionDate"]
255
+ milestone_array = Array.new(1, milestone)
256
+ body.milestones = milestone_array
257
+ end
258
+ end
259
+
260
+ # POC checks: If any poc information is provided all POC fields are required
261
+ if options[:pocFirstName]
262
+ if options[:pocLastName].nil? || options[:pocEmail].nil? || options[:pocPhoneNumber].nil?
263
+ puts 'If a POC first name is given, then all POC information must be entered:'.red
264
+ puts ' pocLastName, pocEmail, pocPhoneNumber'.red
265
+ puts POAMS_POST_HELP_MESSAGE.yellow
266
+ exit
267
+ end
268
+ elsif options[:pocLastName]
269
+ if options[:pocFirstName].nil? || options[:pocEmail].nil? || options[:pocPhoneNumber].nil?
270
+ puts 'If a POC last name is given, then all POC information must be entered:'.red
271
+ puts ' pocFirstName, pocEmail, pocPhoneNumber'.red
272
+ puts POAMS_POST_HELP_MESSAGE.yellow
273
+ exit
274
+ end
275
+ elsif options[:pocEmail]
276
+ if options[:pocFirstName].nil? || options[:pocLastName].nil? || options[:pocPhoneNumber].nil?
277
+ puts 'If a POC email is given, then all POC information must be entered:'.red
278
+ puts ' pocFirstName, pocLastName, pocPhoneNumber'.red
279
+ puts POAMS_POST_HELP_MESSAGE.yellow
280
+ exit
281
+ end
282
+ elsif options[:pocPhoneNumber]
283
+ if options[:pocFirstName].nil? || options[:pocLastName].nil? || options[:pocEmail].nil?
284
+ puts 'If a POC phone number is given, then all POC information must be entered:'.red
285
+ puts ' pocFirstName, pocLastName, pocEmail'.red
286
+ puts POAMS_POST_HELP_MESSAGE.yellow
287
+ exit
288
+ end
289
+ end
290
+ # rubocop:enable Style/CaseLikeIf, Style/StringLiterals
291
+ end
292
+
293
+ def print_milestone_help
294
+ puts 'Milestone format is:'.yellow
295
+ puts ' --milestone description:"[value]" scheduledCompletionDate:"[value]"'.yellow
296
+ end
297
+ end
298
+ # rubocop:enable Metrics/BlockLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
299
+ end
300
+
301
+ # The Milestones endpoints provide the ability add milestones that are associated with
302
+ # Plan of Action and Milestones (POA&M) items for a system.
303
+ #
304
+ # Endpoint:
305
+ # /api/systems/{systemId}/poams/{poamId}/milestones - Add milestones in one or many poa&m items in a system
306
+ class Milestones < SubCommandBase
307
+ def self.exit_on_failure?
308
+ true
309
+ end
310
+
311
+ desc 'add', 'Add milestones to one or many POA&M items in a system'
312
+ long_desc Help.text(:milestone_post_mapper)
313
+
314
+ # Required parameters/fields
315
+ option :systemId, type: :numeric, required: true, desc: 'A numeric value representing the system identification'
316
+ option :poamId, type: :numeric, required: true, desc: 'A numeric value representing the poam identification'
317
+ option :description, type: :string, required: true, desc: 'The milestone description'
318
+ option :scheduledCompletionDate,
319
+ type: :numeric, required: false, desc: 'The scheduled completion date - Unix time format'
320
+
321
+ def add
322
+ body = SwaggerClient::MilestonesRequestPostBody.new
323
+ body.poam_id = options[:poamId]
324
+ body.description = options[:description]
325
+ body.scheduled_completion_date = options[:scheduledCompletionDate]
326
+ body_array = Array.new(1, body)
327
+
328
+ begin
329
+ result = SwaggerClient::MilestonesApi
330
+ .new.add_milestone_by_system_id_and_poam_id(body_array, options[:systemId], options[:poamId])
331
+ puts to_output_hash(result).green
332
+ rescue SwaggerClient::ApiError => e
333
+ puts 'Exception when calling MilestonesApi->add_milestone_by_system_id_and_poam_id'.red
334
+ puts to_output_hash(e)
335
+ end
336
+ end
337
+ end
338
+
339
+ # Add one or many artifacts for a system (delivery method must be a zip file)
340
+ #
341
+ # Endpoints:
342
+ # /api/systems/{systemId}/artifacts - Post one or many artifacts to a system
343
+ class Artifacts < SubCommandBase
344
+ def self.exit_on_failure?
345
+ true
346
+ end
347
+
348
+ desc 'upload SYSTEM_ID FILE [FILE ...]', 'Uploads [FILES] to the given [SYSTEM_ID] as artifacts'
349
+ long_desc Help.text(:artifacts_post_mapper)
350
+
351
+ # Required parameters/fields
352
+ option :systemId, type: :numeric, required: true, desc: 'A numeric value representing the system identification'
353
+ option :files, type: :array, required: true, desc: 'Artifact file(s) to post to the given system'
354
+ option :type,
355
+ type: :string, required: true,
356
+ enum: ['Procedure', 'Diagram', 'Policy', 'Labor', 'Document',
357
+ 'Image', 'Other', 'Scan Result', 'Auditor Report']
358
+ option :category, type: :string, required: true, enum: ['Implementation Guidance', 'Evidence']
359
+ option :isTemplate, type: :boolean, required: false, default: false, desc: 'BOOLEAN - true or false.'
360
+ # NOTE: compress is a required parameter, however Thor does not allow a boolean type to be required because it
361
+ # automatically creates a --no-isTemplate option for isTemplate=false
362
+
363
+ # Optional parameters/fields
364
+ option :description, type: :string, required: false, desc: 'Artifact description'
365
+ option :refPageNumber, type: :string, required: false, desc: 'Artifact reference page number'
366
+ option :ccis, type: :string, required: false, desc: 'The system CCIs string numerical value'
367
+ option :controls,
368
+ type: :string, required: false,
369
+ desc: 'Control acronym associated with the artifact. NIST SP 800-53 Revision 4 defined'
370
+ option :artifactExpirationDate,
371
+ type: :numeric, required: false, desc: 'Date Artifact expires and requires review - Unix time format'
372
+ option :lastReviewedDate,
373
+ type: :numeric, required: false, desc: 'Date Artifact was last reviewed - Unix time format'
374
+
375
+ def upload
376
+ optional_options_keys = optional_options(@_initializer).keys
377
+ optional_options = to_input_hash(optional_options_keys, options)
378
+ # Remove the isTemplate as we can't use the required = true.
379
+ optional_options.delete(:is_template)
380
+
381
+ opts = {}
382
+ opts[:form_params] = optional_options
383
+
384
+ tempfile = Tempfile.create(['artifacts', '.zip'])
385
+
386
+ Zip::OutputStream.open(tempfile.path) do |z|
387
+ options[:files].each do |file|
388
+ # Add file name to the archive: Don't use the full path
389
+ z.put_next_entry(File.basename(file))
390
+ # Add the file to the archive
391
+ z.print File.read(file)
392
+ end
393
+ end
394
+
395
+ begin
396
+ result = SwaggerClient::ArtifactsApi
397
+ .new
398
+ .add_artifacts_by_system_id(options[:isTemplate], options[:type],
399
+ options[:category], tempfile, options[:systemId], opts)
400
+ puts to_output_hash(result).green
401
+ rescue SwaggerClient::ApiError => e
402
+ puts 'Exception when calling ArtifactsApi->add_artifacts_by_system_id'.red
403
+ puts to_output_hash(e)
404
+ ensure
405
+ # Delete the temp file
406
+ unless File.exist? tempfile
407
+ tempfile.close
408
+ FileUtils.remove_file(tempfile, true)
409
+ end
410
+ end
411
+ end
412
+ end
413
+
414
+ # Add a Control Approval Chain (CAC)
415
+ #
416
+ # Endpoints:
417
+ # /api/systems/{systemId}/approval/cac - Submit control to second stage of CAC
418
+ class CAC < SubCommandBase
419
+ def self.exit_on_failure?
420
+ true
421
+ end
422
+
423
+ desc 'add', 'Submit control to second stage of CAC'
424
+ long_desc Help.text(:approvalCac_post_mapper)
425
+
426
+ # Required parameters/fields
427
+ option :systemId, type: :numeric, required: true, desc: 'A numeric value representing the system identification'
428
+ option :controlAcronym, type: :string, required: true, desc: 'The system acronym "AC-1, AC-2"'
429
+
430
+ # Conditional parameters/fields
431
+ option :comments, type: :string, required: false, desc: 'The control approval chain comments'
432
+
433
+ def add
434
+ body = SwaggerClient::CacRequestPostBody.new
435
+ body.control_acronym = options[:controlAcronym]
436
+ body.comments = options[:comments]
437
+
438
+ body_array = Array.new(1, body)
439
+
440
+ begin
441
+ # Get location of one or many controls in CAC
442
+ result = SwaggerClient::CacApi.new.add_s_ystem_c_ac(body_array, options[:systemId])
443
+ puts to_output_hash(result).green
444
+ rescue SwaggerClient::ApiError => e
445
+ puts 'Exception when calling ApprovalChainApi->add_s_ystem_c_ac'.red
446
+ puts to_output_hash(e)
447
+ end
448
+ end
449
+ end
450
+
451
+ # Add a Package Approval Chain (PAC)
452
+ #
453
+ # Endpoints:
454
+ # /api/systems/{systemId}/approval/pac - Initiate system workflow for review
455
+ class PAC < SubCommandBase
456
+ def self.exit_on_failure?
457
+ true
458
+ end
459
+
460
+ desc 'add', 'Initiate system workflow for review'
461
+ long_desc Help.text(:approvalPac_post_mapper)
462
+
463
+ # Required parameters/fields
464
+ option :systemId, type: :numeric, required: true,
465
+ desc: 'A numeric value representing the system identification'
466
+ option :workflow, type: :string, required: true,
467
+ enum: ['Assess and Authorize', 'Assess Only', 'Security Plan Approval']
468
+ option :name, type: :string, required: true, desc: 'The control package name'
469
+ option :comments, type: :string, required: true,
470
+ desc: 'Comments submitted upon initiation of the indicated workflow'
471
+
472
+ def add
473
+ body = SwaggerClient::PacRequestBodyPost.new
474
+ body.name = options[:name]
475
+ body.type = options[:type]
476
+ body.comments = options[:comments]
477
+
478
+ body_array = Array.new(1, body)
479
+
480
+ result = SwaggerClient::PacApi.new.add_s_ystem_p_ac(body_array, options[:systemId])
481
+ puts to_output_hash(result).green
482
+ rescue SwaggerClient::ApiError => e
483
+ puts 'Exception when calling ApprovalChainApi->add_s_ystem_c_ac'.red
484
+ puts to_output_hash(e)
485
+ end
486
+ end
487
+
488
+ # TThe Static Code Scans endpoint provides the ability to upload application
489
+ # scan findings into a system's assets module.
490
+ #
491
+ # Application findings can also be cleared from the system.
492
+ #
493
+ # Endpoint:
494
+ # /api/systems/{systemId}/static-code-scans - Upload static code scans
495
+ class ScanFindings < SubCommandBase
496
+ def self.exit_on_failure?
497
+ true
498
+ end
499
+
500
+ desc 'add', 'Upload static code scans'
501
+ long_desc Help.text(:staticcode_post_mapper)
502
+
503
+ # Required parameters/fields
504
+ option :systemId, type: :numeric, required: true, desc: 'A numeric value representing the system identification'
505
+ option :applicationName, type: :string, required: true, desc: 'Name of the software application that was assessed'
506
+ option :version, type: :string, required: true, desc: 'The version of the application'
507
+ option :codeCheckName, type: :string, required: true, desc: 'Name of the software vulnerability or weakness'
508
+ option :scanDate, type: :numeric, required: false, desc: 'The findings scan date - Unix time format'
509
+ option :cweId, type: :string, required: true, desc: 'The Common Weakness Enumerator (CWE) identifier'
510
+
511
+ # Optional parameter/fields
512
+ option :rawSeverity, type: :string, required: false, enum: %w[Low Medium Moderate High Critical]
513
+ option :count, type: :numeric, required: false, desc: 'Number of instances observed for a specified finding'
514
+
515
+ def add
516
+ application = SwaggerClient::StaticCodeRequiredPostApplication.new
517
+ application.application_name = options[:applicationName]
518
+ application.version = options[:version]
519
+
520
+ application_findings = SwaggerClient::StaticCodeApplication.new
521
+ application_findings.code_check_name = options[:codeCheckName]
522
+ application_findings.scan_date = options[:scanDate]
523
+ application_findings.cwe_id = options[:cweId]
524
+
525
+ application_findings.raw_severity = options[:rawSeverity] if options[:rawSeverity]
526
+ application_findings.count = options[:count] if options[:count]
527
+
528
+ body = SwaggerClient::StaticCodeRequiredPost.new
529
+ body.application = application
530
+ body.application_findings = application_findings
531
+
532
+ body_array = Array.new(1, body)
533
+
534
+ begin
535
+ result = SwaggerClient::StaticCodeScansApi
536
+ .new.add_static_code_scans_by_system_id(body_array, options[:systemId])
537
+ puts to_output_hash(result).green
538
+ rescue SwaggerClient::ApiError => e
539
+ puts 'Exception when calling StaticCodeScansApi->add_static_code_scans_by_system_id'.red
540
+ puts to_output_hash(e)
541
+ end
542
+ end
543
+
544
+ # CLEAR ------------------------------------------------------------------------------------
545
+ desc 'clear', 'Clear an application findings'
546
+ long_desc Help.text(:staticcode_clear_mapper)
547
+
548
+ # Required parameters/fields
549
+ option :systemId, type: :numeric, required: true, desc: 'A numeric value representing the system identification'
550
+ option :applicationName, type: :string, required: true, desc: 'Name of the software application that was assessed'
551
+ option :version, type: :string, required: true, desc: 'The version of the application'
552
+ option :clearFindings, type: :boolean, required: false, default: false, desc: 'BOOLEAN - true or false'
553
+ # NOTE: clearFindings is a required parameter to clear an application's findings, however Thor does not allow
554
+ # a boolean type to be required because it automatically creates a --no-clearFindings option for clearFindings=false
555
+
556
+ def clear
557
+ unless options[:clearFindings]
558
+ puts 'To clear an application findings, the field clearFindings (--clearFindings) is required'.red
559
+ puts NEW_LINE + 'Invoke "bundle exec exe/emasser post scan_findings help clear" for additional help'.yellow
560
+ exit
561
+ end
562
+
563
+ application = SwaggerClient::StaticCodeRequiredPostApplication.new
564
+ application.application_name = options[:applicationName]
565
+ application.version = options[:version]
566
+
567
+ application_findings = SwaggerClient::StaticCodeApplication.new
568
+ application_findings.clear_findings = options[:clearFindings]
569
+
570
+ body = SwaggerClient::StaticCodeRequiredPost.new
571
+ body.application = application
572
+ body.application_findings = application_findings
573
+
574
+ body_array = Array.new(1, body)
575
+
576
+ begin
577
+ result = SwaggerClient::StaticCodeScansApi
578
+ .new.add_static_code_scans_by_system_id(body_array, options[:systemId])
579
+ puts to_output_hash(result).green
580
+ rescue SwaggerClient::ApiError => e
581
+ puts 'Exception when calling StaticCodeScansApi->add_static_code_scans_by_system_id'.red
582
+ puts to_output_hash(e)
583
+ end
584
+ end
585
+ end
586
+
587
+ class Post < SubCommandBase
588
+ desc 'test_results', 'Add system Test Results'
589
+ subcommand 'test_results', TestResults
590
+
591
+ desc 'poams', 'Add Plan of Action and Milestones (POA&M) items to a system'
592
+ subcommand 'poams', Poams
593
+
594
+ desc 'milestones', 'Add milestone(s) to one or many POA&M items in a system'
595
+ subcommand 'milestones', Milestones
596
+
597
+ desc 'artifacts', 'Add system Artifacts'
598
+ subcommand 'artifacts', Artifacts
599
+
600
+ desc 'cac', 'Add Control Approval Chain (CAC) security content'
601
+ subcommand 'cac', CAC
602
+
603
+ desc 'pac', 'Add Package Approval Chain (PAC) security content'
604
+ subcommand 'pac', PAC
605
+
606
+ desc 'scan_findings', 'Upload static code scans'
607
+ subcommand 'scan_findings', ScanFindings
608
+ end
609
+ end