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,145 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Association do
4
+ subject(:base_class) do
5
+ described_class = self.described_class
6
+
7
+ Class.new do
8
+ include described_class
9
+ end
10
+ end
11
+
12
+ context 'association' do
13
+ subject(:reflection) do
14
+ base_class.association name, :class_name => class_name
15
+ end
16
+
17
+ let(:class_name) do
18
+ ''
19
+ end
20
+
21
+ let(:name) do
22
+ ''
23
+ end
24
+
25
+ context 'with blank name' do
26
+ it 'should raise Metasploit::Model::Invalid' do
27
+ expect {
28
+ reflection
29
+ }.to raise_error(Metasploit::Model::Invalid)
30
+ end
31
+ end
32
+
33
+ context 'without blank name' do
34
+ let(:name) do
35
+ 'associated_things'
36
+ end
37
+
38
+ context 'with blank :class_name' do
39
+ it 'should raise Metasploit::Model::Invalid' do
40
+ expect {
41
+ reflection
42
+ }.to raise_error(Metasploit::Model::Invalid)
43
+ end
44
+ end
45
+
46
+ context 'without blank :class_name' do
47
+ let(:class_name) do
48
+ 'AssociatedThing'
49
+ end
50
+
51
+ context 'model' do
52
+ subject(:model) do
53
+ reflection.model
54
+ end
55
+
56
+ it 'should be class on which association was called' do
57
+ model.should == base_class
58
+ end
59
+ end
60
+
61
+ context 'name' do
62
+ subject(:reflection_name) do
63
+ reflection.name
64
+ end
65
+
66
+ it 'should be name passed to association as a Symbol' do
67
+ reflection_name.should == name.to_sym
68
+ end
69
+ end
70
+
71
+ context 'class_name' do
72
+ subject(:reflection_class_name) do
73
+ reflection.class_name
74
+ end
75
+
76
+ it 'should be :class_name passed to association' do
77
+ reflection_class_name.should == class_name
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+
84
+ context 'association_by_name' do
85
+ subject(:association_by_name) do
86
+ base_class.association_by_name
87
+ end
88
+
89
+ it 'should default to empty Hash' do
90
+ association_by_name.should == {}
91
+ end
92
+ end
93
+
94
+ context 'reflect_on_association' do
95
+ subject(:reflection) do
96
+ base_class.reflect_on_association(reflected_name)
97
+ end
98
+
99
+ let(:class_name) do
100
+ 'AssociatedThing'
101
+ end
102
+
103
+ let(:name) do
104
+ :associated_things
105
+ end
106
+
107
+ before(:each) do
108
+ base_class.association name, :class_name => class_name
109
+ end
110
+
111
+ context 'with named association' do
112
+ let(:reflected_name) do
113
+ name
114
+ end
115
+
116
+ context 'class_name' do
117
+ subject(:reflection_class_name) do
118
+ reflection.class_name
119
+ end
120
+
121
+ it 'should be class_name passed to association' do
122
+ reflection_class_name.should == class_name
123
+ end
124
+ end
125
+
126
+ context 'name' do
127
+ subject(:reflection_name) do
128
+ reflection.name
129
+ end
130
+
131
+ it 'should have the reflected name' do
132
+ reflection.name.should == reflected_name
133
+ end
134
+ end
135
+ end
136
+
137
+ context 'without named association' do
138
+ let(:reflected_name) do
139
+ :unassociated_things
140
+ end
141
+
142
+ it { should be_nil }
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,6 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Author do
4
+ it_should_behave_like 'Metasploit::Model::Author',
5
+ namespace_name: 'Dummy'
6
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Authority::Bid do
4
+ context 'designation_url' do
5
+ subject(:designation_url) do
6
+ described_class.designation_url(designation)
7
+ end
8
+
9
+ let(:designation) do
10
+ FactoryGirl.generate :metasploit_model_reference_bid_designation
11
+ end
12
+
13
+ it 'should be under bid directory' do
14
+ designation_url.should == "http://www.securityfocus.com/bid/#{designation}"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Authority::Cve do
4
+ context 'designation_url' do
5
+ subject(:designation_url) do
6
+ described_class.designation_url(designation)
7
+ end
8
+
9
+ let(:designation) do
10
+ FactoryGirl.generate :metasploit_model_reference_cve_designation
11
+ end
12
+
13
+ it 'should be under cve directory' do
14
+ designation_url.should == "http://cvedetails.com/cve/CVE-#{designation}"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Authority::Msb do
4
+ context 'designation_url' do
5
+ subject(:designation_url) do
6
+ described_class.designation_url(designation)
7
+ end
8
+
9
+ let(:designation) do
10
+ FactoryGirl.generate :metasploit_model_reference_msb_designation
11
+ end
12
+
13
+ it 'should be under security bulletins' do
14
+ designation_url.should == "http://www.microsoft.com/technet/security/bulletin/#{designation}"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Authority::Osvdb do
4
+ context 'designation_url' do
5
+ subject(:designation_url) do
6
+ described_class.designation_url(designation)
7
+ end
8
+
9
+ let(:designation) do
10
+ FactoryGirl.generate :metasploit_model_reference_osvdb_designation
11
+ end
12
+
13
+ it 'should be under advisories directory' do
14
+ designation_url.should == "http://www.osvdb.org/#{designation}/"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Authority::Pmasa do
4
+ context 'designation_url' do
5
+ subject(:designation_url) do
6
+ described_class.designation_url(designation)
7
+ end
8
+
9
+ let(:designation) do
10
+ FactoryGirl.generate :metasploit_model_reference_pmasa_designation
11
+ end
12
+
13
+ it 'should be under bid directory' do
14
+ designation_url.should == "http://www.phpmyadmin.net/home_page/security/PMASA-#{designation}.php"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Authority::Secunia do
4
+ context 'designation_url' do
5
+ subject(:designation_url) do
6
+ described_class.designation_url(designation)
7
+ end
8
+
9
+ let(:designation) do
10
+ FactoryGirl.generate :metasploit_model_reference_secunia_designation
11
+ end
12
+
13
+ it 'should be under advisories directory' do
14
+ designation_url.should == "https://secunia.com/advisories/#{designation}/"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Authority::UsCertVu do
4
+ context 'designation_url' do
5
+ subject(:designation_url) do
6
+ described_class.designation_url(designation)
7
+ end
8
+
9
+ let(:designation) do
10
+ FactoryGirl.generate :metasploit_model_reference_us_cert_vu_designation
11
+ end
12
+
13
+ it 'should be under bid directory' do
14
+ designation_url.should == "http://www.kb.cert.org/vuls/id/#{designation}"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Authority::Waraxe do
4
+ context 'CONSTANTS' do
5
+ context 'DESIGNATION_REGEXP' do
6
+ subject(:designation_regexp) do
7
+ described_class::DESIGNATION_REGEXP
8
+ end
9
+
10
+ let(:designation) do
11
+ FactoryGirl.generate :metasploit_model_reference_waraxe_designation
12
+ end
13
+
14
+ it 'should match sequence' do
15
+ designation.should match(designation_regexp)
16
+ end
17
+ end
18
+ end
19
+
20
+ context 'designation_url' do
21
+ subject(:designation_url) do
22
+ described_class.designation_url(designation)
23
+ end
24
+
25
+ context 'with designation that matches DESIGNATION_URL' do
26
+ let(:designation) do
27
+ "#{year}-SA##{number}"
28
+ end
29
+
30
+ let(:number) do
31
+ 103
32
+ end
33
+
34
+ let(:year) do
35
+ 2013
36
+ end
37
+
38
+ it 'should be under bid directory' do
39
+ designation_url.should == "http://www.waraxe.us/advisory-#{number}.html"
40
+ end
41
+ end
42
+
43
+ context 'without designation that matches DESIGNATION_URL' do
44
+ let(:designation) do
45
+ '#103'
46
+ end
47
+
48
+ it { should be_nil }
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Authority::Zdi do
4
+ context 'designation_url' do
5
+ subject(:designation_url) do
6
+ described_class.designation_url(designation)
7
+ end
8
+
9
+ let(:designation) do
10
+ FactoryGirl.generate :metasploit_model_reference_zdi_designation
11
+ end
12
+
13
+ it 'should be under advisories directory' do
14
+ expect(designation_url).to match_regex(/advisories\/.*#{designation}/)
15
+ end
16
+
17
+ it "should prefix designation with 'ZDI'" do
18
+ expect(designation_url).to match_regex(/ZDI-#{designation}/)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Authority do
4
+ it_should_behave_like 'Metasploit::Model::Authority',
5
+ namespace_name: 'Dummy' do
6
+ def seed_with_abbreviation(abbreviation)
7
+ Dummy::Authority.with_abbreviation(abbreviation)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Base do
4
+ subject(:base_class) do
5
+ Class.new(described_class)
6
+ end
7
+
8
+ it_should_behave_like 'Metasploit::Model::Translation',
9
+ metasploit_model_ancestor: Metasploit::Model::Base
10
+
11
+ context '#initialize' do
12
+ it 'should use public_send to set attributes' do
13
+ attribute = :attribute
14
+ value = double('Value')
15
+ base_class.any_instance.should_receive(:public_send).with("#{attribute}=", value)
16
+
17
+ base_class.new(attribute => value)
18
+ end
19
+ end
20
+
21
+ context '#valid!' do
22
+ subject(:valid!) do
23
+ base_instance.valid!
24
+ end
25
+
26
+ let(:base_instance) do
27
+ base_class.new
28
+ end
29
+
30
+ before(:each) do
31
+ base_instance.stub(:valid? => valid)
32
+ end
33
+
34
+ context 'with valid' do
35
+ let(:valid) do
36
+ true
37
+ end
38
+
39
+ it 'should not raise error' do
40
+ expect {
41
+ valid!
42
+ }.to_not raise_error
43
+ end
44
+ end
45
+
46
+ context 'without valid' do
47
+ let(:valid) do
48
+ false
49
+ end
50
+
51
+ it 'should raise Metasploit::Model::Invalid' do
52
+ expect {
53
+ valid!
54
+ }.to raise_error(Metasploit::Model::Invalid)
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,165 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Configuration::Autoload do
4
+ include_context 'Metasploit::Model::Configuration'
5
+
6
+ subject(:autoload) do
7
+ described_class.new.tap { |autoload|
8
+ autoload.configuration = configuration
9
+ }
10
+ end
11
+
12
+ context 'all_paths' do
13
+ subject(:all_paths) do
14
+ autoload.all_paths
15
+ end
16
+
17
+ it 'should include autoload_once_paths' do
18
+ all_paths.to_set.should be_superset(autoload.once_paths.to_set)
19
+ end
20
+
21
+ it 'should include paths' do
22
+ all_paths.to_set.should be_superset(autoload.paths.to_set)
23
+ end
24
+ end
25
+
26
+ context 'once_paths' do
27
+ subject(:once_paths) do
28
+ autoload.once_paths
29
+ end
30
+
31
+ it 'should call relative_once_paths' do
32
+ autoload.should_receive(:relative_once_paths).and_return([])
33
+
34
+ once_paths
35
+ end
36
+
37
+ it 'should have absolute paths' do
38
+ once_paths.each do |once_path|
39
+ once_path.should == File.absolute_path(once_path)
40
+ end
41
+ end
42
+ end
43
+
44
+ context 'paths' do
45
+ subject(:paths) do
46
+ autoload.paths
47
+ end
48
+
49
+ it 'should call relative_paths' do
50
+ autoload.should_receive(:relative_paths).and_return([])
51
+
52
+ paths
53
+ end
54
+
55
+ it 'should have absolute paths' do
56
+ paths.each do |path|
57
+ path.should == File.absolute_path(path)
58
+ end
59
+ end
60
+ end
61
+
62
+ context 'relative_once_paths' do
63
+ subject(:relative_once_paths) do
64
+ autoload.relative_once_paths
65
+ end
66
+
67
+ it { should include('lib') }
68
+ end
69
+
70
+ context 'relative_paths' do
71
+ subject(:relative_paths) do
72
+ autoload.relative_paths
73
+ end
74
+
75
+ it { should include('app/models') }
76
+ end
77
+
78
+ context 'setup' do
79
+ subject(:setup) do
80
+ autoload.setup
81
+ end
82
+
83
+ let(:autoload_once_path) do
84
+ Metasploit::Model.root.join('spec', 'dummy', 'lib').to_path
85
+ end
86
+
87
+ let(:autoload_path) do
88
+ Metasploit::Model.root.join('spec', 'dummy', 'app', 'models').to_path
89
+ end
90
+
91
+ before(:each) do
92
+ @before_autoload_paths = ActiveSupport::Dependencies.autoload_paths.dup
93
+ ActiveSupport::Dependencies.autoload_paths.clear
94
+
95
+ @before_autoload_once_paths = ActiveSupport::Dependencies.autoload_once_paths.dup
96
+ ActiveSupport::Dependencies.autoload_once_paths.clear
97
+
98
+ autoload.stub(:autoload_once_paths).and_return([autoload_once_path])
99
+ autoload.stub(:autoload_paths).and_return([])
100
+ end
101
+
102
+ after(:each) do
103
+ ActiveSupport::Dependencies.autoload_paths = @before_autoload_paths
104
+ ActiveSupport::Dependencies.autoload_once_paths = @before_autoload_once_paths
105
+ end
106
+
107
+ context 'paths' do
108
+ it 'should call all_paths' do
109
+ autoload.should_receive(:all_paths).and_return([])
110
+
111
+ setup
112
+ end
113
+
114
+ context 'with autoload_path in ActiveSupport::Dependencies.autoload_paths' do
115
+ before(:each) do
116
+ ActiveSupport::Dependencies.autoload_paths << autoload_path
117
+ ActiveSupport::Dependencies.autoload_paths << autoload_once_path
118
+ end
119
+
120
+ it 'should not add path to ActiveSupport::Dependencies.autoload_paths' do
121
+ expect {
122
+ setup
123
+ }.to_not change(ActiveSupport::Dependencies, :autoload_paths)
124
+ end
125
+ end
126
+
127
+ context 'without autoload_path in ActiveSupport::Dependencies.autoload_paths' do
128
+ it 'should add path to ActiveSupport::Dependencies.autoload_paths' do
129
+ setup
130
+
131
+ ActiveSupport::Dependencies.autoload_paths.should include(autoload_once_path)
132
+ end
133
+ end
134
+ end
135
+
136
+ context 'once_paths' do
137
+ it 'should call once_paths' do
138
+ # once in #all_paths and once when called directly
139
+ autoload.should_receive(:once_paths).twice.and_return([])
140
+
141
+ setup
142
+ end
143
+
144
+ context 'with autoload_path in ActiveSupport::Dependencies.autoload_once_paths' do
145
+ before(:each) do
146
+ ActiveSupport::Dependencies.autoload_once_paths << autoload_once_path
147
+ end
148
+
149
+ it 'should not add path to ActiveSupport::Dependencies.autoload_once_paths' do
150
+ expect {
151
+ setup
152
+ }.to_not change(ActiveSupport::Dependencies, :autoload_once_paths)
153
+ end
154
+ end
155
+
156
+ context 'without autoload_path in ActiveSupport::Dependencies.autoload_once_paths' do
157
+ it 'should add path to ActiveSupport::Dependencies.autoload_once_paths' do
158
+ setup
159
+
160
+ ActiveSupport::Dependencies.autoload_once_paths.should include(autoload_once_path)
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end