metasploit-model 0.24.1-java

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 +7 -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 +31 -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 +747 -0
@@ -0,0 +1,36 @@
1
+ Metasploit::Model::Spec.shared_examples_for 'Module::Platform' do
2
+ context 'factories' do
3
+ context module_platform_factory.to_s do
4
+ subject(module_platform_factory) do
5
+ FactoryGirl.build(module_platform_factory)
6
+ end
7
+
8
+ it { should be_valid }
9
+
10
+ context '#module_instance' do
11
+ subject(:module_instance) do
12
+ send(module_platform_factory).module_instance
13
+ end
14
+
15
+ it { should be_valid }
16
+
17
+ context '#module_platforms' do
18
+ subject(:module_platforms) do
19
+ module_instance.module_platforms
20
+ end
21
+
22
+ its(:length) { should == 1 }
23
+
24
+ it "should include #{module_platform_factory}" do
25
+ expect(module_platforms).to include send(module_platform_factory)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ context 'validations' do
33
+ it { should validate_presence_of :module_instance }
34
+ it { should validate_presence_of :platform }
35
+ end
36
+ end
@@ -0,0 +1,92 @@
1
+ Metasploit::Model::Spec.shared_examples_for 'Module::Rank' do
2
+ subject(:module_rank) do
3
+ # need non-factory subject since ranks are only seeded and so a sequence.
4
+ # The sequence elements can't be used as they are frozen.
5
+ module_rank_class.new
6
+ end
7
+
8
+ context 'CONSTANTS' do
9
+ context 'NAME_BY_NUMBER' do
10
+ subject(:name_by_numnber) do
11
+ described_class::NAME_BY_NUMBER
12
+ end
13
+
14
+ its([0]) { should == 'Manual' }
15
+ its([100]) { should == 'Low' }
16
+ its([200]) { should == 'Average' }
17
+ its([300]) { should == 'Normal' }
18
+ its([400]) { should == 'Good' }
19
+ its([500]) { should == 'Great' }
20
+ its([600]) { should == 'Excellent' }
21
+ end
22
+
23
+ context 'NAME_REGEXP' do
24
+ subject(:name_regexp) do
25
+ described_class::NAME_REGEXP
26
+ end
27
+
28
+ it 'should not match a #name starting with a lowercase letter' do
29
+ name_regexp.should_not match('good')
30
+ end
31
+
32
+ it 'should match a #name starting with a capital letter' do
33
+ name_regexp.should match('Good')
34
+ end
35
+
36
+ it 'should not match a #name with a space' do
37
+ name_regexp.should_not match('Super Effective')
38
+ end
39
+ end
40
+
41
+ context 'NUMBER_BY_NAME' do
42
+ subject(:number_by_name) do
43
+ described_class::NUMBER_BY_NAME
44
+ end
45
+
46
+ its(['Manual']) { should == 0 }
47
+ its(['Low']) { should == 100 }
48
+ its(['Average']) { should == 200 }
49
+ its(['Normal']) { should == 300 }
50
+ its(['Good']) { should == 400 }
51
+ its(['Great']) { should == 500 }
52
+ its(['Excellent']) { should == 600 }
53
+ end
54
+ end
55
+
56
+ context 'mass assignment security' do
57
+ it { should allow_mass_assignment_of(:name) }
58
+ it { should allow_mass_assignment_of(:number) }
59
+ end
60
+
61
+ context 'search' do
62
+ context 'attributes' do
63
+ it_should_behave_like 'search_attribute', :name, :type => :string
64
+ it_should_behave_like 'search_attribute', :number, :type => :integer
65
+ end
66
+ end
67
+
68
+ context 'validations' do
69
+ context 'name' do
70
+ it { should ensure_inclusion_of(:name).in_array(described_class::NUMBER_BY_NAME.keys) }
71
+
72
+ context 'format' do
73
+ it 'should not allow #name starting with a lowercase letter' do
74
+ module_rank.should_not allow_value('good').for(:name)
75
+ end
76
+
77
+ it 'should allow #name starting with a capital letter' do
78
+ module_rank.should allow_value('Good').for(:name)
79
+ end
80
+
81
+ it 'should not allow #name with a space' do
82
+ module_rank.should_not allow_value('Super Effective').for(:name)
83
+ end
84
+ end
85
+ end
86
+
87
+ context 'number' do
88
+ it { should ensure_inclusion_of(:number).in_array(described_class::NUMBER_BY_NAME.values) }
89
+ it { should validate_numericality_of(:number).only_integer }
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,16 @@
1
+ Metasploit::Model::Spec.shared_examples_for 'Module::Reference' do
2
+ context 'factories' do
3
+ context module_reference_factory.to_s do
4
+ subject(module_reference_factory) do
5
+ FactoryGirl.build(module_reference_factory)
6
+ end
7
+
8
+ it { should be_valid }
9
+ end
10
+ end
11
+
12
+ context 'validations' do
13
+ it { should validate_presence_of :module_instance }
14
+ it { should validate_presence_of :reference }
15
+ end
16
+ end
@@ -0,0 +1,29 @@
1
+
2
+ Metasploit::Model::Spec.shared_examples_for 'Module::Target' do
3
+ context 'factories' do
4
+ context module_target_factory do
5
+ subject(module_target_factory) do
6
+ FactoryGirl.build(module_target_factory)
7
+ end
8
+
9
+ it { should be_valid }
10
+ end
11
+ end
12
+
13
+ context 'mass assignment security' do
14
+ it { should allow_mass_assignment_of(:name) }
15
+ end
16
+
17
+ context 'search' do
18
+ context 'attributes' do
19
+ it_should_behave_like 'search_attribute', :name, :type => :string
20
+ end
21
+ end
22
+
23
+ context 'validations' do
24
+ it { should validate_presence_of(:module_instance) }
25
+ it { should validate_presence_of(:name) }
26
+ it { should validate_presence_of :target_architectures }
27
+ it { should validate_presence_of :target_platforms }
28
+ end
29
+ end
@@ -0,0 +1,56 @@
1
+ Metasploit::Model::Spec.shared_examples_for 'Module::Target::Architecture' do
2
+ context 'factories' do
3
+ context module_target_architecture_factory do
4
+ subject(module_target_architecture_factory) do
5
+ FactoryGirl.build(module_target_architecture_factory)
6
+ end
7
+
8
+ it { should be_valid }
9
+
10
+ context '#module_target' do
11
+ subject(:module_target) do
12
+ send(module_target_architecture_factory).module_target
13
+ end
14
+
15
+ it { should be_valid }
16
+
17
+ context '#module_instance' do
18
+ subject(:module_instance) do
19
+ module_target.module_instance
20
+ end
21
+
22
+ it { should be_valid }
23
+
24
+ context '#targets' do
25
+ subject(:targets) do
26
+ module_instance.targets
27
+ end
28
+
29
+ its(:length) { should == 1 }
30
+
31
+ it 'should include #module_target' do
32
+ expect(targets).to include module_target
33
+ end
34
+ end
35
+ end
36
+
37
+ context '#target_architectures' do
38
+ subject(:target_architectures) do
39
+ module_target.target_architectures
40
+ end
41
+
42
+ its(:length) { should == 1}
43
+
44
+ it "should include #{module_target_architecture_factory}" do
45
+ expect(target_architectures).to include send(module_target_architecture_factory)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ context 'validations' do
53
+ it { should validate_presence_of :architecture }
54
+ it { should validate_presence_of :module_target }
55
+ end
56
+ end
@@ -0,0 +1,56 @@
1
+ Metasploit::Model::Spec.shared_examples_for 'Module::Target::Platform' do
2
+ context 'factories' do
3
+ context module_target_platform_factory do
4
+ subject(module_target_platform_factory) do
5
+ FactoryGirl.build(module_target_platform_factory)
6
+ end
7
+
8
+ it { should be_valid }
9
+
10
+ context '#module_target' do
11
+ subject(:module_target) do
12
+ send(module_target_platform_factory).module_target
13
+ end
14
+
15
+ it { should be_valid }
16
+
17
+ context '#module_instance' do
18
+ subject(:module_instance) do
19
+ module_target.module_instance
20
+ end
21
+
22
+ it { should be_valid }
23
+
24
+ context '#targets' do
25
+ subject(:targets) do
26
+ module_instance.targets
27
+ end
28
+
29
+ its(:length) { should == 1 }
30
+
31
+ it 'should include #module_target' do
32
+ expect(targets).to include module_target
33
+ end
34
+ end
35
+ end
36
+
37
+ context '#target_platforms' do
38
+ subject(:target_platforms) do
39
+ module_target.target_platforms
40
+ end
41
+
42
+ its(:length) { should == 1}
43
+
44
+ it "should include #{module_target_platform_factory}" do
45
+ expect(target_platforms).to include send(module_target_platform_factory)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ context 'validations' do
53
+ it { should validate_presence_of :module_target }
54
+ it { should validate_presence_of :platform }
55
+ end
56
+ end
@@ -0,0 +1,213 @@
1
+ Metasploit::Model::Spec.shared_examples_for 'Platform' do
2
+ platform_sequence = "#{factory_namespace}_#{relative_variable_name}"
3
+
4
+ subject(:platform) do
5
+ FactoryGirl.generate platform_sequence
6
+ end
7
+
8
+ context 'CONSTANTS' do
9
+ context 'SEED_RELATIVE_NAME_TRIE' do
10
+ subject(:seed_relative_name_tree) do
11
+ described_class::SEED_RELATIVE_NAME_TREE
12
+ end
13
+
14
+ it { should include('AIX') }
15
+ it { should include('Android') }
16
+ it { should include('BSD') }
17
+ it { should include('BSDi') }
18
+ it { should include('Cisco') }
19
+ it { should include('Firefox') }
20
+ it { should include('FreeBSD') }
21
+ it { should include('HPUX') }
22
+ it { should include('IRIX') }
23
+ it { should include('Java') }
24
+ it { should include('Javascript') }
25
+ it { should include('Linux') }
26
+ it { should include('NetBSD') }
27
+ it { should include('Netware') }
28
+ it { should include('NodeJS') }
29
+ it { should include('OpenBSD') }
30
+ it { should include('OSX') }
31
+ it { should include('PHP') }
32
+ it { should include('Python') }
33
+ it { should include('Ruby') }
34
+
35
+ context "['Solaris']" do
36
+ subject(:solaris) do
37
+ seed_relative_name_tree['Solaris']
38
+ end
39
+
40
+ it { should include('4') }
41
+ it { should include('5') }
42
+ it { should include('6') }
43
+ it { should include('7') }
44
+ it { should include('8') }
45
+ it { should include('9') }
46
+ it { should include('10') }
47
+ end
48
+
49
+ context "['Windows']" do
50
+ subject(:windows) do
51
+ seed_relative_name_tree['Windows']
52
+ end
53
+
54
+ it { should include('95') }
55
+
56
+ context "['98']" do
57
+ subject(:ninety_eight) do
58
+ windows['98']
59
+ end
60
+
61
+ it { should include('FE') }
62
+ it { should include('SE') }
63
+ end
64
+
65
+ it { should include('ME') }
66
+
67
+ context "['NT']" do
68
+ subject(:nt) do
69
+ windows['NT']
70
+ end
71
+
72
+ it { should include('SP0') }
73
+ it { should include('SP1') }
74
+ it { should include('SP2') }
75
+ it { should include('SP3') }
76
+ it { should include('SP4') }
77
+ it { should include('SP5') }
78
+ it { should include('SP6') }
79
+ it { should include('SP6a') }
80
+ end
81
+
82
+ context "['2000']" do
83
+ subject(:two_thousand) do
84
+ windows['2000']
85
+ end
86
+
87
+ it { should include('SP0') }
88
+ it { should include('SP1') }
89
+ it { should include('SP2') }
90
+ it { should include('SP3') }
91
+ it { should include('SP4') }
92
+ end
93
+
94
+ context "['XP']" do
95
+ subject(:xp) do
96
+ windows['XP']
97
+ end
98
+
99
+ it { should include('SP0') }
100
+ it { should include('SP1') }
101
+ it { should include('SP2') }
102
+ it { should include('SP3') }
103
+ end
104
+
105
+ context "['2003']" do
106
+ subject(:two_thousand_three) do
107
+ windows['2003']
108
+ end
109
+
110
+ it { should include('SP0') }
111
+ it { should include('SP1') }
112
+ end
113
+
114
+ context "['Vista']" do
115
+ subject(:vista) do
116
+ windows['Vista']
117
+ end
118
+
119
+ it { should include('SP0') }
120
+ it { should include('SP1') }
121
+ end
122
+
123
+ it { should include('7') }
124
+ end
125
+
126
+ it { should include('UNIX') }
127
+ end
128
+ end
129
+
130
+ context 'derivations' do
131
+ subject(:platform) do
132
+ # can't use seeded platforms because they are frozen
133
+ # have to tap to bypass mass-assignment security
134
+ platform_class.new.tap { |platform|
135
+ platform.parent = windows
136
+ # need to use a real name or derivation won't be valid because it won't be in fully_qualified_names.
137
+ platform.relative_name = 'XP'
138
+ }
139
+ end
140
+
141
+ let(:windows) do
142
+ platform_class.all.find { |platform|
143
+ # need to use a real name or derivation won't be valid because it won't be in fully_qualified_names.
144
+ platform.fully_qualified_name == 'Windows'
145
+ }
146
+ end
147
+
148
+ it_should_behave_like 'derives', :fully_qualified_name, :validates => true
149
+ end
150
+
151
+ context 'mass assignment security' do
152
+ it { should allow_mass_assignment_of(:relative_name) }
153
+ end
154
+
155
+ context 'search' do
156
+ context 'attributes' do
157
+ it_should_behave_like 'search_attribute',
158
+ :fully_qualified_name,
159
+ type: {
160
+ set: :string
161
+ }
162
+ end
163
+ end
164
+
165
+ context 'validations' do
166
+ subject(:platform) do
167
+ # can't use seeded platforms because they are frozen
168
+ platform_class.new
169
+ end
170
+
171
+ it { should validate_presence_of(:relative_name) }
172
+ end
173
+
174
+ context '#derived_fully_qualified_name' do
175
+ subject(:derived_fully_qualified_name) do
176
+ platform.derived_fully_qualified_name
177
+ end
178
+
179
+ context 'with #relative_name' do
180
+ context 'with #parent' do
181
+ let(:platform) do
182
+ base_class.all.select { |platform|
183
+ platform.parent.present?
184
+ }.sample
185
+ end
186
+
187
+ it "should be '<parent.fully_qualified_name> <relative_name>'" do
188
+ derived_fully_qualified_name.should == "#{platform.parent.fully_qualified_name} #{platform.relative_name}"
189
+ end
190
+ end
191
+
192
+ context 'without #parent' do
193
+ let(:platform) do
194
+ base_class.all.reject { |platform|
195
+ platform.parent.present?
196
+ }.sample
197
+ end
198
+
199
+ it 'should be #relative_name' do
200
+ derived_fully_qualified_name.should == platform.relative_name
201
+ end
202
+ end
203
+ end
204
+
205
+ context 'without #relative_name' do
206
+ let(:platform) do
207
+ platform_class.new
208
+ end
209
+
210
+ it { should be_nil }
211
+ end
212
+ end
213
+ end