metasploit-model 0.24.1.pre.semantic.pre.versioning.pre.2.pre.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 (380) hide show
  1. checksums.yaml +15 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +27 -0
  4. data/.rspec +4 -0
  5. data/.simplecov +38 -0
  6. data/.travis.yml +6 -0
  7. data/.yardopts +5 -0
  8. data/Gemfile +43 -0
  9. data/LICENSE +27 -0
  10. data/README.md +33 -0
  11. data/Rakefile +52 -0
  12. data/app/models/metasploit/model/association/reflection.rb +46 -0
  13. data/app/models/metasploit/model/module/ancestor/spec/template.rb +125 -0
  14. data/app/models/metasploit/model/module/class/spec/template.rb +92 -0
  15. data/app/models/metasploit/model/module/instance/spec/template.rb +97 -0
  16. data/app/models/metasploit/model/search/group/base.rb +21 -0
  17. data/app/models/metasploit/model/search/group/intersection.rb +4 -0
  18. data/app/models/metasploit/model/search/group/union.rb +4 -0
  19. data/app/models/metasploit/model/search/operation/base.rb +39 -0
  20. data/app/models/metasploit/model/search/operation/boolean.rb +36 -0
  21. data/app/models/metasploit/model/search/operation/date.rb +37 -0
  22. data/app/models/metasploit/model/search/operation/integer.rb +14 -0
  23. data/app/models/metasploit/model/search/operation/null.rb +26 -0
  24. data/app/models/metasploit/model/search/operation/set.rb +34 -0
  25. data/app/models/metasploit/model/search/operation/set/integer.rb +5 -0
  26. data/app/models/metasploit/model/search/operation/set/string.rb +5 -0
  27. data/app/models/metasploit/model/search/operation/string.rb +11 -0
  28. data/app/models/metasploit/model/search/operation/union.rb +59 -0
  29. data/app/models/metasploit/model/search/operator/association.rb +43 -0
  30. data/app/models/metasploit/model/search/operator/attribute.rb +60 -0
  31. data/app/models/metasploit/model/search/operator/base.rb +34 -0
  32. data/app/models/metasploit/model/search/operator/delegation.rb +40 -0
  33. data/app/models/metasploit/model/search/operator/deprecated/app.rb +27 -0
  34. data/app/models/metasploit/model/search/operator/deprecated/author.rb +33 -0
  35. data/app/models/metasploit/model/search/operator/deprecated/authority.rb +43 -0
  36. data/app/models/metasploit/model/search/operator/deprecated/platform.rb +45 -0
  37. data/app/models/metasploit/model/search/operator/deprecated/ref.rb +50 -0
  38. data/app/models/metasploit/model/search/operator/deprecated/text.rb +32 -0
  39. data/app/models/metasploit/model/search/operator/null.rb +44 -0
  40. data/app/models/metasploit/model/search/operator/single.rb +98 -0
  41. data/app/models/metasploit/model/search/operator/union.rb +33 -0
  42. data/app/models/metasploit/model/search/query.rb +171 -0
  43. data/app/models/metasploit/model/spec/template.rb +273 -0
  44. data/app/models/metasploit/model/visitation/visitor.rb +69 -0
  45. data/app/validators/derivation_validator.rb +17 -0
  46. data/app/validators/dynamic_length_validator.rb +45 -0
  47. data/app/validators/ip_format_validator.rb +31 -0
  48. data/app/validators/nil_validator.rb +16 -0
  49. data/app/validators/parameters_validator.rb +147 -0
  50. data/app/validators/password_is_strong_validator.rb +115 -0
  51. data/config/locales/en.yml +209 -0
  52. data/lib/metasploit/model.rb +38 -0
  53. data/lib/metasploit/model/architecture.rb +346 -0
  54. data/lib/metasploit/model/association.rb +49 -0
  55. data/lib/metasploit/model/association/error.rb +40 -0
  56. data/lib/metasploit/model/author.rb +58 -0
  57. data/lib/metasploit/model/authority.rb +134 -0
  58. data/lib/metasploit/model/authority/bid.rb +10 -0
  59. data/lib/metasploit/model/authority/cve.rb +10 -0
  60. data/lib/metasploit/model/authority/msb.rb +10 -0
  61. data/lib/metasploit/model/authority/osvdb.rb +10 -0
  62. data/lib/metasploit/model/authority/pmasa.rb +10 -0
  63. data/lib/metasploit/model/authority/secunia.rb +10 -0
  64. data/lib/metasploit/model/authority/us_cert_vu.rb +10 -0
  65. data/lib/metasploit/model/authority/waraxe.rb +31 -0
  66. data/lib/metasploit/model/authority/zdi.rb +10 -0
  67. data/lib/metasploit/model/base.rb +25 -0
  68. data/lib/metasploit/model/configuration.rb +72 -0
  69. data/lib/metasploit/model/configuration/autoload.rb +109 -0
  70. data/lib/metasploit/model/configuration/child.rb +12 -0
  71. data/lib/metasploit/model/configuration/error.rb +4 -0
  72. data/lib/metasploit/model/configuration/i18n.rb +54 -0
  73. data/lib/metasploit/model/configuration/parent.rb +50 -0
  74. data/lib/metasploit/model/configured.rb +46 -0
  75. data/lib/metasploit/model/derivation.rb +110 -0
  76. data/lib/metasploit/model/derivation/full_name.rb +25 -0
  77. data/lib/metasploit/model/email_address.rb +128 -0
  78. data/lib/metasploit/model/engine.rb +34 -0
  79. data/lib/metasploit/model/error.rb +7 -0
  80. data/lib/metasploit/model/file.rb +49 -0
  81. data/lib/metasploit/model/invalid.rb +17 -0
  82. data/lib/metasploit/model/module.rb +8 -0
  83. data/lib/metasploit/model/module/action.rb +58 -0
  84. data/lib/metasploit/model/module/ancestor.rb +494 -0
  85. data/lib/metasploit/model/module/architecture.rb +40 -0
  86. data/lib/metasploit/model/module/author.rb +47 -0
  87. data/lib/metasploit/model/module/class.rb +406 -0
  88. data/lib/metasploit/model/module/handler.rb +35 -0
  89. data/lib/metasploit/model/module/instance.rb +626 -0
  90. data/lib/metasploit/model/module/path.rb +165 -0
  91. data/lib/metasploit/model/module/platform.rb +38 -0
  92. data/lib/metasploit/model/module/rank.rb +91 -0
  93. data/lib/metasploit/model/module/reference.rb +38 -0
  94. data/lib/metasploit/model/module/stance.rb +22 -0
  95. data/lib/metasploit/model/module/target.rb +80 -0
  96. data/lib/metasploit/model/module/target/architecture.rb +42 -0
  97. data/lib/metasploit/model/module/target/platform.rb +42 -0
  98. data/lib/metasploit/model/module/type.rb +44 -0
  99. data/lib/metasploit/model/nilify_blanks.rb +53 -0
  100. data/lib/metasploit/model/platform.rb +250 -0
  101. data/lib/metasploit/model/real_pathname.rb +18 -0
  102. data/lib/metasploit/model/reference.rb +108 -0
  103. data/lib/metasploit/model/search.rb +63 -0
  104. data/lib/metasploit/model/search/association.rb +32 -0
  105. data/lib/metasploit/model/search/attribute.rb +51 -0
  106. data/lib/metasploit/model/search/operation.rb +31 -0
  107. data/lib/metasploit/model/search/operation/integer/value.rb +33 -0
  108. data/lib/metasploit/model/search/operation/string/value.rb +14 -0
  109. data/lib/metasploit/model/search/operator.rb +10 -0
  110. data/lib/metasploit/model/search/operator/help.rb +47 -0
  111. data/lib/metasploit/model/search/with.rb +40 -0
  112. data/lib/metasploit/model/spec.rb +140 -0
  113. data/lib/metasploit/model/spec/error.rb +9 -0
  114. data/lib/metasploit/model/spec/i18n_exception_handler.rb +19 -0
  115. data/lib/metasploit/model/spec/pathname_collision.rb +28 -0
  116. data/lib/metasploit/model/spec/template/write.rb +42 -0
  117. data/lib/metasploit/model/spec/temporary_pathname.rb +59 -0
  118. data/lib/metasploit/model/translation.rb +31 -0
  119. data/lib/metasploit/model/version.rb +33 -0
  120. data/lib/metasploit/model/visitation.rb +9 -0
  121. data/lib/metasploit/model/visitation/visit.rb +103 -0
  122. data/lib/tasks/yard.rake +30 -0
  123. data/metasploit-model.gemspec +39 -0
  124. data/script/rails +9 -0
  125. data/spec/app/models/metasploit/model/association/reflection_spec.rb +48 -0
  126. data/spec/app/models/metasploit/model/module/ancestor/spec/template_spec.rb +174 -0
  127. data/spec/app/models/metasploit/model/module/class/spec/template_spec.rb +222 -0
  128. data/spec/app/models/metasploit/model/module/instance/spec/template_spec.rb +201 -0
  129. data/spec/app/models/metasploit/model/search/group/base_spec.rb +5 -0
  130. data/spec/app/models/metasploit/model/search/group/intersection_spec.rb +5 -0
  131. data/spec/app/models/metasploit/model/search/group/union_spec.rb +5 -0
  132. data/spec/app/models/metasploit/model/search/operation/base_spec.rb +70 -0
  133. data/spec/app/models/metasploit/model/search/operation/boolean_spec.rb +56 -0
  134. data/spec/app/models/metasploit/model/search/operation/date_spec.rb +89 -0
  135. data/spec/app/models/metasploit/model/search/operation/integer_spec.rb +9 -0
  136. data/spec/app/models/metasploit/model/search/operation/null_spec.rb +64 -0
  137. data/spec/app/models/metasploit/model/search/operation/set/integer_spec.rb +7 -0
  138. data/spec/app/models/metasploit/model/search/operation/set/string_spec.rb +7 -0
  139. data/spec/app/models/metasploit/model/search/operation/set_spec.rb +126 -0
  140. data/spec/app/models/metasploit/model/search/operation/string_spec.rb +9 -0
  141. data/spec/app/models/metasploit/model/search/operation/union_spec.rb +124 -0
  142. data/spec/app/models/metasploit/model/search/operator/association_spec.rb +108 -0
  143. data/spec/app/models/metasploit/model/search/operator/attribute_spec.rb +104 -0
  144. data/spec/app/models/metasploit/model/search/operator/base_spec.rb +34 -0
  145. data/spec/app/models/metasploit/model/search/operator/delegation_spec.rb +108 -0
  146. data/spec/app/models/metasploit/model/search/operator/deprecated/app_spec.rb +62 -0
  147. data/spec/app/models/metasploit/model/search/operator/deprecated/author_spec.rb +161 -0
  148. data/spec/app/models/metasploit/model/search/operator/deprecated/authority_spec.rb +123 -0
  149. data/spec/app/models/metasploit/model/search/operator/deprecated/platform_spec.rb +112 -0
  150. data/spec/app/models/metasploit/model/search/operator/deprecated/ref_spec.rb +327 -0
  151. data/spec/app/models/metasploit/model/search/operator/deprecated/text_spec.rb +357 -0
  152. data/spec/app/models/metasploit/model/search/operator/null_spec.rb +41 -0
  153. data/spec/app/models/metasploit/model/search/operator/single_spec.rb +327 -0
  154. data/spec/app/models/metasploit/model/search/operator/union_spec.rb +92 -0
  155. data/spec/app/models/metasploit/model/search/query_spec.rb +742 -0
  156. data/spec/app/models/metasploit/model/spec/template_spec.rb +23 -0
  157. data/spec/app/models/metasploit/model/visitation/visitor_spec.rb +45 -0
  158. data/spec/app/validators/derivation_validator_spec.rb +92 -0
  159. data/spec/app/validators/dynamic_length_validator_spec.rb +293 -0
  160. data/spec/app/validators/ip_format_validator_spec.rb +124 -0
  161. data/spec/app/validators/nil_validator_spec.rb +69 -0
  162. data/spec/app/validators/parameters_validator_spec.rb +342 -0
  163. data/spec/app/validators/password_is_strong_validator_spec.rb +250 -0
  164. data/spec/dummy/Rakefile +7 -0
  165. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  166. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  167. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  168. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  169. data/spec/dummy/app/mailers/.gitkeep +0 -0
  170. data/spec/dummy/app/models/dummy/architecture.rb +92 -0
  171. data/spec/dummy/app/models/dummy/author.rb +15 -0
  172. data/spec/dummy/app/models/dummy/authority.rb +130 -0
  173. data/spec/dummy/app/models/dummy/email_address.rb +27 -0
  174. data/spec/dummy/app/models/dummy/module/action.rb +25 -0
  175. data/spec/dummy/app/models/dummy/module/ancestor.rb +67 -0
  176. data/spec/dummy/app/models/dummy/module/architecture.rb +19 -0
  177. data/spec/dummy/app/models/dummy/module/author.rb +28 -0
  178. data/spec/dummy/app/models/dummy/module/class.rb +69 -0
  179. data/spec/dummy/app/models/dummy/module/instance.rb +209 -0
  180. data/spec/dummy/app/models/dummy/module/path.rb +64 -0
  181. data/spec/dummy/app/models/dummy/module/platform.rb +19 -0
  182. data/spec/dummy/app/models/dummy/module/rank.rb +44 -0
  183. data/spec/dummy/app/models/dummy/module/reference.rb +19 -0
  184. data/spec/dummy/app/models/dummy/module/target.rb +62 -0
  185. data/spec/dummy/app/models/dummy/module/target/architecture.rb +19 -0
  186. data/spec/dummy/app/models/dummy/module/target/platform.rb +19 -0
  187. data/spec/dummy/app/models/dummy/platform.rb +58 -0
  188. data/spec/dummy/app/models/dummy/reference.rb +31 -0
  189. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  190. data/spec/dummy/config.ru +4 -0
  191. data/spec/dummy/config/application.rb +43 -0
  192. data/spec/dummy/config/boot.rb +10 -0
  193. data/spec/dummy/config/environment.rb +5 -0
  194. data/spec/dummy/config/environments/development.rb +27 -0
  195. data/spec/dummy/config/environments/production.rb +63 -0
  196. data/spec/dummy/config/environments/test.rb +29 -0
  197. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  198. data/spec/dummy/config/initializers/inflections.rb +15 -0
  199. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  200. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  201. data/spec/dummy/config/initializers/session_store.rb +3 -0
  202. data/spec/dummy/config/initializers/wrap_parameters.rb +9 -0
  203. data/spec/dummy/config/locales/en.yml +1 -0
  204. data/spec/dummy/config/routes.rb +2 -0
  205. data/spec/dummy/db/schema.rb +707 -0
  206. data/spec/dummy/lib/assets/.gitkeep +0 -0
  207. data/spec/dummy/log/.gitkeep +0 -0
  208. data/spec/dummy/public/404.html +26 -0
  209. data/spec/dummy/public/422.html +26 -0
  210. data/spec/dummy/public/500.html +25 -0
  211. data/spec/dummy/public/favicon.ico +0 -0
  212. data/spec/dummy/script/rails +6 -0
  213. data/spec/dummy/spec/factories/dummy/architectures.rb +13 -0
  214. data/spec/dummy/spec/factories/dummy/authorities.rb +32 -0
  215. data/spec/dummy/spec/factories/dummy/authors.rb +8 -0
  216. data/spec/dummy/spec/factories/dummy/email_addresses.rb +8 -0
  217. data/spec/dummy/spec/factories/dummy/module/actions.rb +13 -0
  218. data/spec/dummy/spec/factories/dummy/module/ancestors.rb +45 -0
  219. data/spec/dummy/spec/factories/dummy/module/architectures.rb +35 -0
  220. data/spec/dummy/spec/factories/dummy/module/authors.rb +10 -0
  221. data/spec/dummy/spec/factories/dummy/module/classes.rb +40 -0
  222. data/spec/dummy/spec/factories/dummy/module/instances.rb +86 -0
  223. data/spec/dummy/spec/factories/dummy/module/paths.rb +16 -0
  224. data/spec/dummy/spec/factories/dummy/module/platforms.rb +35 -0
  225. data/spec/dummy/spec/factories/dummy/module/ranks.rb +14 -0
  226. data/spec/dummy/spec/factories/dummy/module/references.rb +17 -0
  227. data/spec/dummy/spec/factories/dummy/module/target/architectures.rb +40 -0
  228. data/spec/dummy/spec/factories/dummy/module/target/platforms.rb +41 -0
  229. data/spec/dummy/spec/factories/dummy/module/targets.rb +46 -0
  230. data/spec/dummy/spec/factories/dummy/platforms.rb +3 -0
  231. data/spec/dummy/spec/factories/dummy/references.rb +26 -0
  232. data/spec/factories/metasploit/model/architectures.rb +6 -0
  233. data/spec/factories/metasploit/model/association/reflections.rb +9 -0
  234. data/spec/factories/metasploit/model/authorities.rb +28 -0
  235. data/spec/factories/metasploit/model/authors.rb +9 -0
  236. data/spec/factories/metasploit/model/bases.rb +10 -0
  237. data/spec/factories/metasploit/model/email_addresses.rb +14 -0
  238. data/spec/factories/metasploit/model/module/actions.rb +9 -0
  239. data/spec/factories/metasploit/model/module/ancestors.rb +180 -0
  240. data/spec/factories/metasploit/model/module/architectures.rb +15 -0
  241. data/spec/factories/metasploit/model/module/classes.rb +47 -0
  242. data/spec/factories/metasploit/model/module/handlers.rb +3 -0
  243. data/spec/factories/metasploit/model/module/instances.rb +83 -0
  244. data/spec/factories/metasploit/model/module/paths.rb +51 -0
  245. data/spec/factories/metasploit/model/module/platforms.rb +15 -0
  246. data/spec/factories/metasploit/model/module/ranks.rb +9 -0
  247. data/spec/factories/metasploit/model/module/references.rb +11 -0
  248. data/spec/factories/metasploit/model/module/stances.rb +3 -0
  249. data/spec/factories/metasploit/model/module/targets.rb +22 -0
  250. data/spec/factories/metasploit/model/module/types.rb +5 -0
  251. data/spec/factories/metasploit/model/references.rb +88 -0
  252. data/spec/factories/metasploit/model/search/operator/associations.rb +5 -0
  253. data/spec/factories/metasploit/model/search/operator/attributes.rb +7 -0
  254. data/spec/factories/metasploit/model/search/operator/bases.rb +5 -0
  255. data/spec/lib/metasploit/model/architecture_spec.rb +52 -0
  256. data/spec/lib/metasploit/model/association/error_spec.rb +48 -0
  257. data/spec/lib/metasploit/model/association_spec.rb +145 -0
  258. data/spec/lib/metasploit/model/author_spec.rb +6 -0
  259. data/spec/lib/metasploit/model/authority/bid_spec.rb +17 -0
  260. data/spec/lib/metasploit/model/authority/cve_spec.rb +17 -0
  261. data/spec/lib/metasploit/model/authority/msb_spec.rb +17 -0
  262. data/spec/lib/metasploit/model/authority/osvdb_spec.rb +17 -0
  263. data/spec/lib/metasploit/model/authority/pmasa_spec.rb +17 -0
  264. data/spec/lib/metasploit/model/authority/secunia_spec.rb +17 -0
  265. data/spec/lib/metasploit/model/authority/us_cert_vu_spec.rb +17 -0
  266. data/spec/lib/metasploit/model/authority/waraxe_spec.rb +51 -0
  267. data/spec/lib/metasploit/model/authority/zdi_spec.rb +21 -0
  268. data/spec/lib/metasploit/model/authority_spec.rb +10 -0
  269. data/spec/lib/metasploit/model/base_spec.rb +58 -0
  270. data/spec/lib/metasploit/model/configuration/autoload_spec.rb +165 -0
  271. data/spec/lib/metasploit/model/configuration/child_spec.rb +24 -0
  272. data/spec/lib/metasploit/model/configuration/error_spec.rb +5 -0
  273. data/spec/lib/metasploit/model/configuration/i18n_spec.rb +103 -0
  274. data/spec/lib/metasploit/model/configuration_spec.rb +106 -0
  275. data/spec/lib/metasploit/model/configured_spec.rb +41 -0
  276. data/spec/lib/metasploit/model/derivation/full_name_spec.rb +75 -0
  277. data/spec/lib/metasploit/model/derivation_spec.rb +217 -0
  278. data/spec/lib/metasploit/model/email_address_spec.rb +19 -0
  279. data/spec/lib/metasploit/model/engine_spec.rb +84 -0
  280. data/spec/lib/metasploit/model/file_spec.rb +43 -0
  281. data/spec/lib/metasploit/model/invalid_spec.rb +54 -0
  282. data/spec/lib/metasploit/model/module/action_spec.rb +6 -0
  283. data/spec/lib/metasploit/model/module/ancestor_spec.rb +6 -0
  284. data/spec/lib/metasploit/model/module/architecture_spec.rb +9 -0
  285. data/spec/lib/metasploit/model/module/author_spec.rb +6 -0
  286. data/spec/lib/metasploit/model/module/class_spec.rb +19 -0
  287. data/spec/lib/metasploit/model/module/handler_spec.rb +61 -0
  288. data/spec/lib/metasploit/model/module/instance_spec.rb +183 -0
  289. data/spec/lib/metasploit/model/module/path_spec.rb +6 -0
  290. data/spec/lib/metasploit/model/module/platform_spec.rb +9 -0
  291. data/spec/lib/metasploit/model/module/rank_spec.rb +29 -0
  292. data/spec/lib/metasploit/model/module/reference_spec.rb +9 -0
  293. data/spec/lib/metasploit/model/module/stance_spec.rb +30 -0
  294. data/spec/lib/metasploit/model/module/target/architecture_spec.rb +9 -0
  295. data/spec/lib/metasploit/model/module/target/platform_spec.rb +9 -0
  296. data/spec/lib/metasploit/model/module/target_spec.rb +9 -0
  297. data/spec/lib/metasploit/model/module/type_spec.rb +125 -0
  298. data/spec/lib/metasploit/model/nilify_blanks_spec.rb +156 -0
  299. data/spec/lib/metasploit/model/platform_spec.rb +100 -0
  300. data/spec/lib/metasploit/model/reference_spec.rb +21 -0
  301. data/spec/lib/metasploit/model/search/association_spec.rb +33 -0
  302. data/spec/lib/metasploit/model/search/attribute_spec.rb +99 -0
  303. data/spec/lib/metasploit/model/search/operation/integer/value_spec.rb +20 -0
  304. data/spec/lib/metasploit/model/search/operation/string/value_spec.rb +20 -0
  305. data/spec/lib/metasploit/model/search/operation_spec.rb +144 -0
  306. data/spec/lib/metasploit/model/search/operator/help_spec.rb +41 -0
  307. data/spec/lib/metasploit/model/search/with_spec.rb +81 -0
  308. data/spec/lib/metasploit/model/search_spec.rb +230 -0
  309. data/spec/lib/metasploit/model/spec/error_spec.rb +5 -0
  310. data/spec/lib/metasploit/model/spec/i18n_exception_handler_spec.rb +42 -0
  311. data/spec/lib/metasploit/model/spec/pathname_collision_spec.rb +55 -0
  312. data/spec/lib/metasploit/model/spec_spec.rb +114 -0
  313. data/spec/lib/metasploit/model/translation_spec.rb +82 -0
  314. data/spec/lib/metasploit/model/version_spec.rb +141 -0
  315. data/spec/lib/metasploit/model/visitation/visit_spec.rb +316 -0
  316. data/spec/lib/metasploit/model_spec.rb +68 -0
  317. data/spec/spec_helper.rb +48 -0
  318. data/spec/support/shared/contexts/metasploit/model/configuration.rb +11 -0
  319. data/spec/support/shared/contexts/metasploit/model/module/ancestor/contents/metasploit_module.rb +12 -0
  320. data/spec/support/shared/contexts/metasploit/model/module/ancestor/factory/contents.rb +10 -0
  321. data/spec/support/shared/contexts/metasploit/model/module/ancestor/factory/contents/metasploit_module.rb +15 -0
  322. data/spec/support/shared/contexts/metasploit/model/search/operator/union/children.rb +13 -0
  323. data/spec/support/shared/examples/derives.rb +115 -0
  324. data/spec/support/shared/examples/metasploit/model/architecture.rb +425 -0
  325. data/spec/support/shared/examples/metasploit/model/architecture/seed.rb +25 -0
  326. data/spec/support/shared/examples/metasploit/model/author.rb +27 -0
  327. data/spec/support/shared/examples/metasploit/model/authority.rb +124 -0
  328. data/spec/support/shared/examples/metasploit/model/authority/seed.rb +49 -0
  329. data/spec/support/shared/examples/metasploit/model/configuration/parent/child.rb +60 -0
  330. data/spec/support/shared/examples/metasploit/model/email_address.rb +220 -0
  331. data/spec/support/shared/examples/metasploit/model/module/action.rb +26 -0
  332. data/spec/support/shared/examples/metasploit/model/module/ancestor.rb +2004 -0
  333. data/spec/support/shared/examples/metasploit/model/module/ancestor/payload_factory.rb +63 -0
  334. data/spec/support/shared/examples/metasploit/model/module/architecture.rb +36 -0
  335. data/spec/support/shared/examples/metasploit/model/module/author.rb +29 -0
  336. data/spec/support/shared/examples/metasploit/model/module/class.rb +1514 -0
  337. data/spec/support/shared/examples/metasploit/model/module/handler.rb +21 -0
  338. data/spec/support/shared/examples/metasploit/model/module/instance.rb +1384 -0
  339. data/spec/support/shared/examples/metasploit/model/module/instance/class_methods.rb +537 -0
  340. data/spec/support/shared/examples/metasploit/model/module/instance/is_not_stanced_with_module_type.rb +22 -0
  341. data/spec/support/shared/examples/metasploit/model/module/instance/is_stanced_with_module_type.rb +38 -0
  342. data/spec/support/shared/examples/metasploit/model/module/instance/validates/dynamic_length_of.rb +131 -0
  343. data/spec/support/shared/examples/metasploit/model/module/path.rb +493 -0
  344. data/spec/support/shared/examples/metasploit/model/module/platform.rb +36 -0
  345. data/spec/support/shared/examples/metasploit/model/module/rank.rb +92 -0
  346. data/spec/support/shared/examples/metasploit/model/module/reference.rb +16 -0
  347. data/spec/support/shared/examples/metasploit/model/module/target.rb +29 -0
  348. data/spec/support/shared/examples/metasploit/model/module/target/architecture.rb +56 -0
  349. data/spec/support/shared/examples/metasploit/model/module/target/platform.rb +56 -0
  350. data/spec/support/shared/examples/metasploit/model/platform.rb +213 -0
  351. data/spec/support/shared/examples/metasploit/model/real_pathname.rb +29 -0
  352. data/spec/support/shared/examples/metasploit/model/reference.rb +410 -0
  353. data/spec/support/shared/examples/metasploit/model/search/operation/integer/value.rb +79 -0
  354. data/spec/support/shared/examples/metasploit/model/search/operation/string/value.rb +53 -0
  355. data/spec/support/shared/examples/metasploit/model/search/operator/help.rb +134 -0
  356. data/spec/support/shared/examples/metasploit/model/translation.rb +37 -0
  357. data/spec/support/shared/examples/search/query.rb +43 -0
  358. data/spec/support/shared/examples/search/query/metasploit/model/search/operator/deprecated/app.rb +44 -0
  359. data/spec/support/shared/examples/search/query/metasploit/model/search/operator/deprecated/authority.rb +60 -0
  360. data/spec/support/shared/examples/search_association.rb +13 -0
  361. data/spec/support/shared/examples/search_attribute.rb +27 -0
  362. data/spec/support/shared/examples/search_with.rb +36 -0
  363. data/spec/support/shared/matchers/allow_attribute.rb +17 -0
  364. data/spec/support/templates/metasploit/model/module/ancestors/_attributes.rb.erb +9 -0
  365. data/spec/support/templates/metasploit/model/module/ancestors/_methods.rb.erb +8 -0
  366. data/spec/support/templates/metasploit/model/module/ancestors/_validations.rb.erb +6 -0
  367. data/spec/support/templates/metasploit/model/module/ancestors/base.rb.erb +3 -0
  368. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_auxiliary.rb.erb +1 -0
  369. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_encoder.rb.erb +1 -0
  370. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_exploit.rb.erb +1 -0
  371. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_non_payload.rb.erb +5 -0
  372. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_nop.rb.erb +1 -0
  373. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_payload.rb.erb +4 -0
  374. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_post.rb.erb +1 -0
  375. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_handled.rb.erb +20 -0
  376. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_single.rb.erb +1 -0
  377. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_stage.rb.erb +0 -0
  378. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_stager.rb.erb +1 -0
  379. data/spec/support/templates/metasploit/model/module/classes/_methods.rb.erb +9 -0
  380. metadata +748 -0
@@ -0,0 +1,6 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Action do
4
+ it_should_behave_like 'Metasploit::Model::Module::Action',
5
+ namespace_name: 'Dummy'
6
+ end
@@ -0,0 +1,6 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Ancestor do
4
+ it_should_behave_like 'Metasploit::Model::Module::Ancestor',
5
+ namespace_name: 'Dummy'
6
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Architecture,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Architecture',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,6 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Author do
4
+ it_should_behave_like 'Metasploit::Model::Module::Author',
5
+ namespace_name: 'Dummy'
6
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Class do
4
+ it_should_behave_like 'Metasploit::Model::Module::Class',
5
+ namespace_name: 'Dummy' do
6
+ def attribute_type(attribute)
7
+ type_by_attribute = {
8
+ :full_name => :text,
9
+ :module_type => :string,
10
+ :payload_type => :string,
11
+ :reference_name => :text
12
+ }
13
+
14
+ type = type_by_attribute.fetch(attribute)
15
+
16
+ type
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Handler do
4
+ context 'CONSTANTS' do
5
+ context 'GENERAL_TYPES' do
6
+ subject(:general_types) do
7
+ described_class::GENERAL_TYPES
8
+ end
9
+
10
+ it { should include 'bind' }
11
+ it { should include 'find' }
12
+ it { should include 'none' }
13
+ it { should include 'reverse' }
14
+ it { should include 'tunnel' }
15
+ end
16
+
17
+ context 'GENERAL_TYPE_BY_TYPE' do
18
+ subject(:general_type_by_type) do
19
+ described_class::GENERAL_TYPE_BY_TYPE
20
+ end
21
+
22
+ its(['bind_tcp']) { should == 'bind' }
23
+ its(['find_port']) { should == 'find' }
24
+ its(['find_shell']) { should == 'find' }
25
+ its(['find_tag']) { should == 'find' }
26
+ its(['none']) { should == 'none' }
27
+ its(['reverse_http']) { should == 'tunnel' }
28
+ its(['reverse_https']) { should == 'tunnel' }
29
+ its(['reverse_https_proxy']) { should == 'tunnel' }
30
+ its(['reverse_ipv6_http']) { should == 'tunnel' }
31
+ its(['reverse_ipv6_https']) { should == 'tunnel' }
32
+ its(['reverse_tcp']) { should == 'reverse' }
33
+ its(['reverse_tcp_allports']) { should == 'reverse' }
34
+ its(['reverse_tcp_double']) { should == 'reverse' }
35
+ its(['reverse_tcp_double_ssl']) { should == 'reverse' }
36
+ its(['reverse_tcp_ssl']) { should == 'reverse' }
37
+ end
38
+
39
+ context 'TYPES' do
40
+ subject(:types) do
41
+ described_class::TYPES
42
+ end
43
+
44
+ it { should include 'bind_tcp' }
45
+ it { should include 'find_port' }
46
+ it { should include 'find_shell' }
47
+ it { should include 'find_tag' }
48
+ it { should include 'none' }
49
+ it { should include 'reverse_http' }
50
+ it { should include 'reverse_https' }
51
+ it { should include 'reverse_https_proxy' }
52
+ it { should include 'reverse_ipv6_http' }
53
+ it { should include 'reverse_ipv6_https' }
54
+ it { should include 'reverse_tcp' }
55
+ it { should include 'reverse_tcp_allports' }
56
+ it { should include 'reverse_tcp_double' }
57
+ it { should include 'reverse_tcp_double_ssl' }
58
+ it { should include 'reverse_tcp_ssl' }
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,183 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Instance,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ subject(:module_instance) do
8
+ FactoryGirl.build(:dummy_module_instance)
9
+ end
10
+
11
+ it_should_behave_like 'Metasploit::Model::Module::Instance',
12
+ namespace_name: 'Dummy'
13
+
14
+ it_should_behave_like 'Metasploit::Model::Module::Instance::ClassMethods' do
15
+ let(:singleton_class) do
16
+ described_class
17
+ end
18
+ end
19
+
20
+ context 'module_types_that_allow' do
21
+ subject(:module_types_that_allow) do
22
+ described_class.module_types_that_allow(attribute)
23
+ end
24
+
25
+ context 'with actions' do
26
+ let(:attribute) do
27
+ :actions
28
+ end
29
+
30
+ it { should include 'auxiliary' }
31
+ it { should_not include 'encoder' }
32
+ it { should_not include 'exploit' }
33
+ it { should_not include 'nop' }
34
+ it { should_not include 'payload' }
35
+ it { should include 'post' }
36
+ end
37
+
38
+ context 'with module_architectures' do
39
+ let(:attribute) do
40
+ :module_architectures
41
+ end
42
+
43
+ it { should_not include 'auxiliary' }
44
+ it { should include 'encoder' }
45
+ it { should include 'exploit' }
46
+ it { should include 'nop' }
47
+ it { should include 'payload' }
48
+ it { should include 'post' }
49
+ end
50
+
51
+ context 'with module_platforms' do
52
+ let(:attribute) do
53
+ :module_platforms
54
+ end
55
+
56
+ it { should_not include 'auxiliary' }
57
+ it { should_not include 'encoder' }
58
+ it { should include 'exploit' }
59
+ it { should_not include 'nop' }
60
+ it { should include 'payload' }
61
+ it { should include 'post' }
62
+ end
63
+
64
+ context 'with module_references' do
65
+ let(:attribute) do
66
+ :module_references
67
+ end
68
+
69
+ it { should include 'auxiliary' }
70
+ it { should_not include 'encoder' }
71
+ it { should include 'exploit' }
72
+ it { should_not include 'nop' }
73
+ it { should_not include 'payload' }
74
+ it { should include 'post' }
75
+ end
76
+
77
+ context 'with targets' do
78
+ let(:attribute) do
79
+ :targets
80
+ end
81
+
82
+ it { should_not include 'auxiliary' }
83
+ it { should_not include 'encoder' }
84
+ it { should include 'exploit' }
85
+ it { should_not include 'nop' }
86
+ it { should_not include 'payload' }
87
+ it { should_not include 'post' }
88
+ end
89
+
90
+ context 'DYNAMIC_LENGTH_VALIDATION_OPTIONS_BY_MODULE_TYPE_BY_ATTRIBUTE' do
91
+ let(:attribute) do
92
+ :attribute
93
+ end
94
+
95
+ let(:module_type) do
96
+ FactoryGirl.generate :metasploit_model_module_type
97
+ end
98
+
99
+ before(:each) do
100
+ described_class::DYNAMIC_LENGTH_VALIDATION_OPTIONS_BY_MODULE_TYPE_BY_ATTRIBUTE.should_receive(:fetch).with(
101
+ attribute
102
+ ).and_return(
103
+ dynamic_length_validation_options_by_module_type
104
+ )
105
+ end
106
+
107
+ context 'with :is' do
108
+ let(:dynamic_length_validation_options_by_module_type) do
109
+ {
110
+ module_type => {
111
+ is: is
112
+ }
113
+ }
114
+ end
115
+
116
+ context '> 0' do
117
+ let(:is) do
118
+ 1
119
+ end
120
+
121
+ it 'includes module type' do
122
+ expect(module_types_that_allow).to include(module_type)
123
+ end
124
+ end
125
+
126
+ context '<= 0' do
127
+ let(:is) do
128
+ 0
129
+ end
130
+
131
+ it 'does not include module type' do
132
+ expect(module_types_that_allow).not_to include(module_type)
133
+ end
134
+ end
135
+ end
136
+
137
+ context 'without :is' do
138
+ context 'with :maximum' do
139
+ let(:dynamic_length_validation_options_by_module_type) do
140
+ {
141
+ module_type => {
142
+ maximum: maximum
143
+ }
144
+ }
145
+ end
146
+
147
+ context '> 0' do
148
+ let(:maximum) do
149
+ 1
150
+ end
151
+
152
+ it 'includes module type' do
153
+ expect(module_types_that_allow).to include(module_type)
154
+ end
155
+ end
156
+
157
+ context '<= 0' do
158
+ let(:maximum) do
159
+ 0
160
+ end
161
+
162
+ it 'does not include module type' do
163
+ expect(module_types_that_allow).not_to include(module_type)
164
+ end
165
+ end
166
+
167
+ end
168
+
169
+ context 'without :maximum' do
170
+ let(:dynamic_length_validation_options_by_module_type) do
171
+ {
172
+ module_type => {}
173
+ }
174
+ end
175
+
176
+ it 'includes module type' do
177
+ expect(module_types_that_allow).to include(module_type)
178
+ end
179
+ end
180
+ end
181
+ end
182
+ end
183
+ end
@@ -0,0 +1,6 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Path do
4
+ it_should_behave_like 'Metasploit::Model::Module::Path',
5
+ namespace_name: 'Dummy'
6
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Platform,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Platform',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Rank do
4
+ it_should_behave_like 'Metasploit::Model::Module::Rank',
5
+ namespace_name: 'Dummy'
6
+
7
+ # Not in 'Metasploit::Model::Module::Rank' shared example since sequence should not be overridden in namespaces.
8
+ context 'sequences' do
9
+ context 'metasploit_model_module_rank_name' do
10
+ subject(:metasploit_model_module_rank_name) do
11
+ FactoryGirl.generate :metasploit_model_module_rank_name
12
+ end
13
+
14
+ it 'should be key in Metasploit::Model::Module::Rank::NUMBER_BY_NAME' do
15
+ Metasploit::Model::Module::Rank::NUMBER_BY_NAME.should have_key(metasploit_model_module_rank_name)
16
+ end
17
+ end
18
+
19
+ context 'metasploit_model_module_rank_number' do
20
+ subject(:metasploit_model_module_rank_number) do
21
+ FactoryGirl.generate :metasploit_model_module_rank_number
22
+ end
23
+
24
+ it 'should be value in Metasploit::Model::Module::Rank::NUMBER_BY_NAME' do
25
+ Metasploit::Model::Module::Rank::NUMBER_BY_NAME.should have_value(metasploit_model_module_rank_number)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Reference,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Reference',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Stance do
4
+ context 'CONSTANTS' do
5
+ context 'ALL' do
6
+ subject(:all) do
7
+ described_class::ALL
8
+ end
9
+
10
+ it { should include(described_class::AGGRESSIVE) }
11
+ it { should include(described_class::PASSIVE) }
12
+ end
13
+
14
+ context 'AGGRESSIVE' do
15
+ subject(:aggressive) do
16
+ described_class::AGGRESSIVE
17
+ end
18
+
19
+ it { should == 'aggressive' }
20
+ end
21
+
22
+ context 'PASSIVE' do
23
+ subject(:passive) do
24
+ described_class::PASSIVE
25
+ end
26
+
27
+ it { should == 'passive' }
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Target::Architecture,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Target::Architecture',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Target::Platform,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Target::Platform',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Target,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Target',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,125 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Type do
4
+ context 'CONSTANTS' do
5
+ context 'ALL' do
6
+ subject(:all) do
7
+ described_class::ALL
8
+ end
9
+
10
+ it 'should not include ANY' do
11
+ all.should_not include(described_class::ANY)
12
+ end
13
+
14
+ it 'should include AUX' do
15
+ all.should include(described_class::AUX)
16
+ end
17
+
18
+ it 'should include ENCODER' do
19
+ all.should include(described_class::ENCODER)
20
+ end
21
+
22
+ it 'should include EXPLOIT' do
23
+ all.should include(described_class::EXPLOIT)
24
+ end
25
+
26
+ it 'should include NOP' do
27
+ all.should include(described_class::NOP)
28
+ end
29
+
30
+ it 'should include PAYLOAD' do
31
+ all.should include(described_class::PAYLOAD)
32
+ end
33
+
34
+ it 'should include POST' do
35
+ all.should include(described_class::POST)
36
+ end
37
+ end
38
+
39
+ context 'ANY' do
40
+ subject(:any) do
41
+ described_class::ANY
42
+ end
43
+
44
+ it { should == '_any_' }
45
+ end
46
+
47
+ context 'AUX' do
48
+ subject(:aux) do
49
+ described_class::AUX
50
+ end
51
+
52
+ it { should == 'auxiliary' }
53
+ end
54
+
55
+ context 'ENCODER' do
56
+ subject(:encoder) do
57
+ described_class::ENCODER
58
+ end
59
+
60
+ it { should == 'encoder' }
61
+ end
62
+
63
+ context 'EXPLOIT' do
64
+ subject(:exploit) do
65
+ described_class::EXPLOIT
66
+ end
67
+
68
+ it { should == 'exploit' }
69
+ end
70
+
71
+ context 'NON_PAYLOAD' do
72
+ subject(:non_payload) do
73
+ described_class::NON_PAYLOAD
74
+ end
75
+
76
+ it 'should include AUX' do
77
+ non_payload.should include(described_class::AUX)
78
+ end
79
+
80
+ it 'should include ENCODER' do
81
+ non_payload.should include(described_class::ENCODER)
82
+ end
83
+
84
+ it 'should include EXPLOIT' do
85
+ non_payload.should include(described_class::EXPLOIT)
86
+ end
87
+
88
+ it 'should include NOP' do
89
+ non_payload.should include(described_class::NOP)
90
+ end
91
+
92
+ it 'should not include PAYLOAD' do
93
+ non_payload.should_not include(described_class::PAYLOAD)
94
+ end
95
+
96
+ it 'should include POST' do
97
+ non_payload.should include(described_class::POST)
98
+ end
99
+ end
100
+
101
+ context 'NOP' do
102
+ subject(:nop) do
103
+ described_class::NOP
104
+ end
105
+
106
+ it { should == 'nop' }
107
+ end
108
+
109
+ context 'PAYLOAD' do
110
+ subject(:payload_types) do
111
+ described_class::PAYLOAD
112
+ end
113
+
114
+ it { should == 'payload' }
115
+ end
116
+
117
+ context 'POST' do
118
+ subject(:post) do
119
+ described_class::POST
120
+ end
121
+
122
+ it { should == 'post'}
123
+ end
124
+ end
125
+ end