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,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Configuration::Child do
4
+ subject(:child) do
5
+ described_class.new
6
+ end
7
+
8
+ context '#configuration' do
9
+ subject(:configuration) do
10
+ child.configuration
11
+ end
12
+
13
+ context 'default' do
14
+ it { should be_nil }
15
+ end
16
+
17
+ it 'should be settable' do
18
+ expected_configuration = double('Configuration')
19
+ child.configuration = expected_configuration
20
+
21
+ expect(child.configuration).to eq expected_configuration
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Configuration::Error do
4
+ it { should be_a Metasploit::Model::Error }
5
+ end
@@ -0,0 +1,103 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Configuration::I18n do
4
+ include_context 'Metasploit::Model::Configuration'
5
+
6
+ let(:i18n) do
7
+ described_class.new.tap { |i18n|
8
+ i18n.configuration = configuration
9
+ }
10
+ end
11
+
12
+ context '#directories' do
13
+ subject(:directories) do
14
+ i18n.directories
15
+ end
16
+
17
+ it 'should use configuration.root to convert #relative_directories to absolute paths' do
18
+ relative_directories = [
19
+ 'foo/bar'
20
+ ]
21
+
22
+ i18n.stub(relative_directories: relative_directories)
23
+
24
+ directories.should == [Metasploit::Model.root.join('spec', 'dummy', 'foo', 'bar').to_path]
25
+ end
26
+ end
27
+
28
+ context '#paths' do
29
+ subject(:paths) do
30
+ i18n.paths
31
+ end
32
+
33
+ it 'should be a flat Array' do
34
+ nested_array = ['a', 'b']
35
+ Dir.stub(:glob).and_return(nested_array)
36
+ i18n.stub(directories: ['d1', 'd2'])
37
+
38
+ expect(paths).to match_array(nested_array + nested_array)
39
+ end
40
+
41
+ it 'should look for yml files' do
42
+ Dir.should_receive(:glob) do |glob|
43
+ glob.should end_with('*.yml')
44
+ end
45
+
46
+ paths
47
+ end
48
+ end
49
+
50
+ context '#relative_directories' do
51
+ subject(:relative_directories) do
52
+ i18n.relative_directories
53
+ end
54
+
55
+ it { should include('config/locales') }
56
+ end
57
+
58
+ context '#setup' do
59
+ subject(:setup) do
60
+ i18n.setup
61
+ end
62
+
63
+ let(:path) do
64
+ Metasploit::Model.root.join('spec', 'dummy', 'config', 'locales', 'en.yml').to_path
65
+ end
66
+
67
+ let(:paths) do
68
+ [
69
+ path
70
+ ]
71
+ end
72
+
73
+ before(:each) do
74
+ @before_i18n_load_path = ::I18n.load_path
75
+
76
+ i18n.stub(paths: paths)
77
+ end
78
+
79
+ after(:each) do
80
+ ::I18n.load_path = @before_i18n_load_path
81
+ end
82
+
83
+ context 'with in I18n.load_path already' do
84
+ before(:each) do
85
+ ::I18n.load_path << path
86
+ end
87
+
88
+ it 'should not add path to I18n.load_path' do
89
+ expect {
90
+ setup
91
+ }.to_not change(::I18n, :load_path)
92
+ end
93
+ end
94
+
95
+ context 'without in I18n.load_path already' do
96
+ it 'should add path to I18n.load_path' do
97
+ setup
98
+
99
+ ::I18n.load_path.should include(path)
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Configuration do
4
+ include_context 'Metasploit::Model::Configuration'
5
+
6
+ subject do
7
+ configuration
8
+ end
9
+
10
+ it_should_behave_like 'Metasploit::Model::Configuration::Parent#child',
11
+ :autoload,
12
+ class: Metasploit::Model::Configuration::Autoload
13
+
14
+ it_should_behave_like 'Metasploit::Model::Configuration::Parent#child',
15
+ :i18n,
16
+ class: Metasploit::Model::Configuration::I18n
17
+
18
+ context '#root' do
19
+ subject(:root) do
20
+ configuration.root
21
+ end
22
+
23
+ let(:configuration) do
24
+ described_class.new
25
+ end
26
+
27
+ context 'with setting first' do
28
+ #
29
+ # lets
30
+ #
31
+
32
+ let(:expected_root_pathname) do
33
+ Metasploit::Model.root.join('spec', 'dummy')
34
+ end
35
+
36
+ #
37
+ # Callbacks
38
+ #
39
+
40
+ before(:each) do
41
+ configuration.root = expected_root
42
+ end
43
+
44
+ context 'with Pathname' do
45
+ let(:expected_root) do
46
+ expected_root_pathname
47
+ end
48
+
49
+ it { should be_a Pathname }
50
+
51
+ it 'should return set Pathname' do
52
+ root.should == expected_root
53
+ end
54
+ end
55
+
56
+ context 'with String' do
57
+ let(:expected_root) do
58
+ expected_root_pathname.to_s
59
+ end
60
+
61
+ it { should be_a Pathname }
62
+
63
+ it 'should return String as Pathname' do
64
+ root.should == expected_root_pathname
65
+ end
66
+ end
67
+ end
68
+
69
+ context 'without setting first' do
70
+ specify {
71
+ expect {
72
+ root
73
+ }.to raise_error Metasploit::Model::Configuration::Error
74
+ }
75
+ end
76
+ end
77
+
78
+ context '#setup' do
79
+ subject(:setup) do
80
+ configuration.setup
81
+ end
82
+
83
+ before(:each) do
84
+ @before_autoload_paths = ActiveSupport::Dependencies.autoload_paths.dup
85
+ ActiveSupport::Dependencies.autoload_paths.clear
86
+
87
+ @before_autoload_once_paths = ActiveSupport::Dependencies.autoload_once_paths.dup
88
+ ActiveSupport::Dependencies.autoload_once_paths.clear
89
+
90
+ @before_i18n_load_path = ::I18n.load_path
91
+ end
92
+
93
+ after(:each) do
94
+ ActiveSupport::Dependencies.autoload_paths = @before_autoload_paths
95
+ ActiveSupport::Dependencies.autoload_once_paths = @before_autoload_once_paths
96
+
97
+ ::I18n.load_path = @before_i18n_load_path
98
+ end
99
+
100
+ it 'should setup autoload' do
101
+ configuration.autoload.should_receive(:setup)
102
+
103
+ setup
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Configured do
4
+ subject(:configured) do
5
+ Module.new.tap { |m|
6
+ m.extend described_class
7
+ }
8
+ end
9
+
10
+ context 'configuration' do
11
+ subject(:configuration) do
12
+ configured.configuration
13
+ end
14
+
15
+ it { should be_a Metasploit::Model::Configuration }
16
+ end
17
+
18
+ context 'root' do
19
+ subject(:root) do
20
+ configured.root
21
+ end
22
+
23
+ it 'should delegate to configuration' do
24
+ configured.configuration.should_receive(:root)
25
+
26
+ root
27
+ end
28
+ end
29
+
30
+ context 'setup' do
31
+ subject(:setup) do
32
+ configured.setup
33
+ end
34
+
35
+ it 'should delegate to configuration' do
36
+ configured.configuration.should_receive(:setup)
37
+
38
+ setup
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Derivation::FullName do
4
+ subject(:base_instance) do
5
+ base_class.new
6
+ end
7
+
8
+ let(:base_class) do
9
+ # capture for Class.new scope
10
+ described_class = self.described_class
11
+
12
+ Class.new do
13
+ include described_class
14
+
15
+ #
16
+ # Attributes
17
+ #
18
+
19
+ # @!attribute [rw] module_type
20
+ # The type of module.
21
+ #
22
+ # @return [String]
23
+ attr_accessor :module_type
24
+
25
+ # @!attribute [rw] reference_name
26
+ # The name of the module scoped to the {#module_type}
27
+ #
28
+ # @return [String]
29
+ attr_accessor :reference_name
30
+ end
31
+ end
32
+
33
+ context '#derived_full_name' do
34
+ subject(:derived_full_name) do
35
+ base_instance.derived_full_name
36
+ end
37
+
38
+ let(:module_type) do
39
+ nil
40
+ end
41
+
42
+ let(:reference_name) do
43
+ nil
44
+ end
45
+
46
+ before(:each) do
47
+ base_instance.module_type = module_type
48
+ base_instance.reference_name = reference_name
49
+ end
50
+
51
+ context 'with module_type' do
52
+ let(:module_type) do
53
+ FactoryGirl.generate :metasploit_model_module_type
54
+ end
55
+
56
+ context 'with reference_name' do
57
+ let(:reference_name) do
58
+ FactoryGirl.generate :metasploit_model_module_ancestor_reference_name
59
+ end
60
+
61
+ it 'should be <module_type>/<reference_name>' do
62
+ derived_full_name.should == "#{module_type}/#{reference_name}"
63
+ end
64
+ end
65
+
66
+ context 'without reference_name' do
67
+ it { should be_nil }
68
+ end
69
+ end
70
+
71
+ context 'without module_type' do
72
+ it { should be_nil }
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,217 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Derivation do
4
+ let(:base_class) do
5
+ # capture for class_eval scope
6
+ described_class = self.described_class
7
+
8
+ Class.new do
9
+ extend ActiveModel::Callbacks
10
+ include ActiveModel::Validations
11
+ include ActiveModel::Validations::Callbacks
12
+
13
+ include described_class
14
+ end
15
+ end
16
+
17
+ context 'included' do
18
+ let(:base_class) do
19
+ Class.new do
20
+ extend ActiveModel::Callbacks
21
+ include ActiveModel::Validations
22
+ include ActiveModel::Validations::Callbacks
23
+ end
24
+ end
25
+
26
+ it 'should register #derive as a before validation callback' do
27
+ base_class.should_receive(:before_validation).with(:derive)
28
+
29
+ # capture for class_eval scope
30
+ described_class = self.described_class
31
+
32
+ base_class.class_eval do
33
+ include described_class
34
+ end
35
+ end
36
+ end
37
+
38
+ context '#derive' do
39
+ subject(:derive) do
40
+ base_instance.send(:derive)
41
+ end
42
+
43
+ let(:attributes) do
44
+ [
45
+ :derivation,
46
+ :formula
47
+ ]
48
+ end
49
+
50
+ let(:base_instance) do
51
+ base_class.new
52
+ end
53
+
54
+ let(:derivation) do
55
+ 'derivation'
56
+ end
57
+
58
+ let(:formula) do
59
+ nil
60
+ end
61
+
62
+ before(:each) do
63
+ # capture for class_eval scope
64
+ attributes = self.attributes
65
+
66
+ base_class.class_eval do
67
+ #
68
+ # Attributes
69
+ #
70
+
71
+ # @!attribute [rw] derivation
72
+ # @return [String]
73
+ attr_accessor :derivation
74
+
75
+ # @!attribute [rw] formula
76
+ # @return [String]
77
+ attr_accessor :formula
78
+
79
+ #
80
+ # Derivations
81
+ #
82
+
83
+ derives :derivation
84
+ derives :formula
85
+
86
+ #
87
+ # Methods
88
+ #
89
+
90
+ # Derives #derivation.
91
+ #
92
+ # @return [String]
93
+ def derived_derivation
94
+ 'derived_derivation'
95
+ end
96
+
97
+ # Derives #formula.
98
+ #
99
+ # @return [String]
100
+ def derived_formula
101
+ 'derived_formula'
102
+ end
103
+ end
104
+
105
+ base_instance.derivation = derivation
106
+ base_instance.formula = formula
107
+ end
108
+
109
+ it 'should test value with nil?' do
110
+ derivation.should_receive(:nil?).and_return(false)
111
+
112
+ derive
113
+ end
114
+
115
+ context 'with nil value' do
116
+ it 'should set attribute to derived_<attribute>' do
117
+ derive
118
+
119
+ base_instance.formula.should == base_instance.derived_formula
120
+ end
121
+ end
122
+
123
+ context 'without nil value' do
124
+ it 'should not set attribute to derived_<attribute>' do
125
+ derive
126
+
127
+ base_instance.derivation.should_not == base_instance.derived_derivation
128
+ end
129
+ end
130
+ end
131
+
132
+ context 'derives' do
133
+ let(:attribute) do
134
+ :derivative
135
+ end
136
+
137
+ context 'with :validate' do
138
+ subject(:derives) do
139
+ base_class.derives attribute, :validate => validate
140
+ end
141
+
142
+ context 'false' do
143
+ let(:validate) do
144
+ false
145
+ end
146
+
147
+ it 'should record :validate in validate_by_derived_attribute' do
148
+ derives
149
+
150
+ base_class.validate_by_derived_attribute[attribute].should == validate
151
+ end
152
+
153
+ it 'should not add derivation validation on attribute' do
154
+ base_class.should_not_receive(:validates).with(
155
+ attribute,
156
+ hash_including(
157
+ :derivation => true
158
+ )
159
+ )
160
+
161
+ derives
162
+ end
163
+ end
164
+
165
+ context 'true' do
166
+ let(:validate) do
167
+ true
168
+ end
169
+
170
+ it 'should record :validate in validate_by_derived_attribute' do
171
+ derives
172
+
173
+ base_class.validate_by_derived_attribute[attribute].should == validate
174
+ end
175
+
176
+ it 'should not add derivation validation on attribute' do
177
+ base_class.should_receive(:validates).with(
178
+ attribute,
179
+ hash_including(
180
+ :derivation => true
181
+ )
182
+ )
183
+
184
+ derives
185
+ end
186
+ end
187
+ end
188
+
189
+ context 'without :validate' do
190
+ subject(:derives) do
191
+ base_class.derives attribute
192
+ end
193
+
194
+ it 'should default to false' do
195
+ derives
196
+
197
+ base_class.validate_by_derived_attribute[attribute].should be_false
198
+ end
199
+
200
+ it 'should not call validates' do
201
+ base_class.should_not_receive(:validates)
202
+
203
+ derives
204
+ end
205
+ end
206
+ end
207
+
208
+ context 'validate_by_derived_attribute' do
209
+ subject(:validate_by_derived_attribute) do
210
+ base_class.validate_by_derived_attribute
211
+ end
212
+
213
+ it 'should default to {}' do
214
+ validate_by_derived_attribute.should == {}
215
+ end
216
+ end
217
+ end