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,6 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Path do
4
+ it_should_behave_like 'Metasploit::Model::Module::Path',
5
+ namespace_name: 'Dummy'
6
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Platform,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Platform',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Rank do
4
+ it_should_behave_like 'Metasploit::Model::Module::Rank',
5
+ namespace_name: 'Dummy'
6
+
7
+ # Not in 'Metasploit::Model::Module::Rank' shared example since sequence should not be overridden in namespaces.
8
+ context 'sequences' do
9
+ context 'metasploit_model_module_rank_name' do
10
+ subject(:metasploit_model_module_rank_name) do
11
+ FactoryGirl.generate :metasploit_model_module_rank_name
12
+ end
13
+
14
+ it 'should be key in Metasploit::Model::Module::Rank::NUMBER_BY_NAME' do
15
+ Metasploit::Model::Module::Rank::NUMBER_BY_NAME.should have_key(metasploit_model_module_rank_name)
16
+ end
17
+ end
18
+
19
+ context 'metasploit_model_module_rank_number' do
20
+ subject(:metasploit_model_module_rank_number) do
21
+ FactoryGirl.generate :metasploit_model_module_rank_number
22
+ end
23
+
24
+ it 'should be value in Metasploit::Model::Module::Rank::NUMBER_BY_NAME' do
25
+ Metasploit::Model::Module::Rank::NUMBER_BY_NAME.should have_value(metasploit_model_module_rank_number)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Reference,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Reference',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Stance do
4
+ context 'CONSTANTS' do
5
+ context 'ALL' do
6
+ subject(:all) do
7
+ described_class::ALL
8
+ end
9
+
10
+ it { should include(described_class::AGGRESSIVE) }
11
+ it { should include(described_class::PASSIVE) }
12
+ end
13
+
14
+ context 'AGGRESSIVE' do
15
+ subject(:aggressive) do
16
+ described_class::AGGRESSIVE
17
+ end
18
+
19
+ it { should == 'aggressive' }
20
+ end
21
+
22
+ context 'PASSIVE' do
23
+ subject(:passive) do
24
+ described_class::PASSIVE
25
+ end
26
+
27
+ it { should == 'passive' }
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Target::Architecture,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Target::Architecture',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Target::Platform,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Target::Platform',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Target,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Module::Target',
8
+ namespace_name: 'Dummy'
9
+ end
@@ -0,0 +1,125 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Module::Type do
4
+ context 'CONSTANTS' do
5
+ context 'ALL' do
6
+ subject(:all) do
7
+ described_class::ALL
8
+ end
9
+
10
+ it 'should not include ANY' do
11
+ all.should_not include(described_class::ANY)
12
+ end
13
+
14
+ it 'should include AUX' do
15
+ all.should include(described_class::AUX)
16
+ end
17
+
18
+ it 'should include ENCODER' do
19
+ all.should include(described_class::ENCODER)
20
+ end
21
+
22
+ it 'should include EXPLOIT' do
23
+ all.should include(described_class::EXPLOIT)
24
+ end
25
+
26
+ it 'should include NOP' do
27
+ all.should include(described_class::NOP)
28
+ end
29
+
30
+ it 'should include PAYLOAD' do
31
+ all.should include(described_class::PAYLOAD)
32
+ end
33
+
34
+ it 'should include POST' do
35
+ all.should include(described_class::POST)
36
+ end
37
+ end
38
+
39
+ context 'ANY' do
40
+ subject(:any) do
41
+ described_class::ANY
42
+ end
43
+
44
+ it { should == '_any_' }
45
+ end
46
+
47
+ context 'AUX' do
48
+ subject(:aux) do
49
+ described_class::AUX
50
+ end
51
+
52
+ it { should == 'auxiliary' }
53
+ end
54
+
55
+ context 'ENCODER' do
56
+ subject(:encoder) do
57
+ described_class::ENCODER
58
+ end
59
+
60
+ it { should == 'encoder' }
61
+ end
62
+
63
+ context 'EXPLOIT' do
64
+ subject(:exploit) do
65
+ described_class::EXPLOIT
66
+ end
67
+
68
+ it { should == 'exploit' }
69
+ end
70
+
71
+ context 'NON_PAYLOAD' do
72
+ subject(:non_payload) do
73
+ described_class::NON_PAYLOAD
74
+ end
75
+
76
+ it 'should include AUX' do
77
+ non_payload.should include(described_class::AUX)
78
+ end
79
+
80
+ it 'should include ENCODER' do
81
+ non_payload.should include(described_class::ENCODER)
82
+ end
83
+
84
+ it 'should include EXPLOIT' do
85
+ non_payload.should include(described_class::EXPLOIT)
86
+ end
87
+
88
+ it 'should include NOP' do
89
+ non_payload.should include(described_class::NOP)
90
+ end
91
+
92
+ it 'should not include PAYLOAD' do
93
+ non_payload.should_not include(described_class::PAYLOAD)
94
+ end
95
+
96
+ it 'should include POST' do
97
+ non_payload.should include(described_class::POST)
98
+ end
99
+ end
100
+
101
+ context 'NOP' do
102
+ subject(:nop) do
103
+ described_class::NOP
104
+ end
105
+
106
+ it { should == 'nop' }
107
+ end
108
+
109
+ context 'PAYLOAD' do
110
+ subject(:payload_types) do
111
+ described_class::PAYLOAD
112
+ end
113
+
114
+ it { should == 'payload' }
115
+ end
116
+
117
+ context 'POST' do
118
+ subject(:post) do
119
+ described_class::POST
120
+ end
121
+
122
+ it { should == 'post'}
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,156 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::NilifyBlanks 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 #nilify_blanks as a before validation callback' do
27
+ base_class.should_receive(:before_validation).with(:nilify_blanks)
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 'nilify_blank' do
39
+ it 'should support adding multiple attributes' do
40
+ attributes = [:a, :b]
41
+
42
+ base_class.nilify_blank *attributes
43
+
44
+ attributes.each do |attribute|
45
+ base_class.nilify_blank_attribute_set.should include(attribute)
46
+ end
47
+ end
48
+
49
+ it 'should not add duplicate attributes' do
50
+ attribute = :a
51
+
52
+ base_class.nilify_blank attribute
53
+ base_class.nilify_blank attribute
54
+
55
+ base_class.nilify_blank_attribute_set.length.should == 1
56
+ end
57
+ end
58
+
59
+ context '#nilify_blanks' do
60
+ subject(:nilify_blanks) do
61
+ base_instance.nilify_blanks
62
+ end
63
+
64
+ let(:base_instance) do
65
+ base_class.new
66
+ end
67
+
68
+ let(:value) do
69
+ 'value'
70
+ end
71
+
72
+ before(:each) do
73
+ base_class.class_eval do
74
+ #
75
+ # Attributes
76
+ #
77
+
78
+ # @!attribute [rw] blank
79
+ # @return [String, nil]
80
+ attr_accessor :blank
81
+
82
+ #
83
+ # Callbacks
84
+ #
85
+
86
+ nilify_blank :blank
87
+ end
88
+
89
+ base_instance.blank = value
90
+ end
91
+
92
+ it 'should check if value responds to blank?' do
93
+ value.should_receive(:respond_to?).with(:blank?)
94
+
95
+ nilify_blanks
96
+ end
97
+
98
+ context 'with value responds to blank?' do
99
+ it 'should call blank?' do
100
+ value.should_receive(:blank?)
101
+
102
+ nilify_blanks
103
+ end
104
+
105
+ context 'with blank' do
106
+ let(:value) do
107
+ ''
108
+ end
109
+
110
+ it 'should set attribute to nil' do
111
+ nilify_blanks
112
+
113
+ base_instance.blank.should be_nil
114
+ end
115
+ end
116
+
117
+ context 'without blank' do
118
+ let(:value) do
119
+ 'value'
120
+ end
121
+
122
+ it 'should not change attribute' do
123
+ expect {
124
+ nilify_blanks
125
+ }.to_not change(base_instance, :blank)
126
+ end
127
+ end
128
+ end
129
+
130
+ context 'without value responds to blank?' do
131
+ let(:value) do
132
+ double('Value')
133
+ end
134
+
135
+ before(:each) do
136
+ value.stub(:respond_to?).with(:blank?).and_return(false)
137
+ end
138
+
139
+ it 'should not call blank?' do
140
+ value.should_not_receive(:blank?)
141
+
142
+ nilify_blanks
143
+ end
144
+ end
145
+ end
146
+
147
+ context 'nilify_blank_attribute_set' do
148
+ subject(:nilify_blank_attribute_set) do
149
+ base_class.nilify_blank_attribute_set
150
+ end
151
+
152
+ it 'should default to an empty Set' do
153
+ nilify_blank_attribute_set.should == Set.new
154
+ end
155
+ end
156
+ end
@@ -0,0 +1,100 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Model::Platform,
4
+ # setting the metadata type makes rspec-rails include RSpec::Rails::ModelExampleGroup, which includes a better
5
+ # be_valid matcher that will print full error messages
6
+ type: :model do
7
+ it_should_behave_like 'Metasploit::Model::Platform',
8
+ namespace_name: 'Dummy' do
9
+ def attribute_type(attribute)
10
+ type_by_attribute = {
11
+ fully_qualified_name: :string
12
+ }
13
+
14
+ type_by_attribute.fetch(attribute)
15
+ end
16
+ end
17
+
18
+ # @note Not tested in 'Metasploit::Model::Platform' shared example because it is a module method and not a class
19
+ # method because seeding should always refer back to {Metasploit::Model::Platform} and not the classes in which
20
+ # it is included.
21
+ context 'fully_qualified_names' do
22
+ subject(:fully_qualified_name_set) do
23
+ described_class.fully_qualified_name_set
24
+ end
25
+
26
+ it { should include 'AIX' }
27
+ it { should include 'Android' }
28
+ it { should include 'BSD' }
29
+ it { should include 'BSDi' }
30
+ it { should include 'Cisco' }
31
+ it { should include 'Firefox' }
32
+ it { should include 'FreeBSD' }
33
+ it { should include 'HPUX' }
34
+ it { should include 'IRIX' }
35
+ it { should include 'Java' }
36
+ it { should include 'Javascript' }
37
+ it { should include 'NetBSD' }
38
+ it { should include 'Netware' }
39
+ it { should include 'NodeJS' }
40
+ it { should include 'OpenBSD' }
41
+ it { should include 'OSX' }
42
+ it { should include 'PHP' }
43
+ it { should include 'Python' }
44
+ it { should include 'Ruby' }
45
+
46
+ it { should include 'Solaris'}
47
+ it { should include 'Solaris 4' }
48
+ it { should include 'Solaris 5' }
49
+ it { should include 'Solaris 6' }
50
+ it { should include 'Solaris 7' }
51
+ it { should include 'Solaris 8' }
52
+ it { should include 'Solaris 9' }
53
+ it { should include 'Solaris 10' }
54
+
55
+ it { should include 'Windows' }
56
+
57
+ it { should include 'Windows 95' }
58
+
59
+ it { should include 'Windows 98' }
60
+ it { should include 'Windows 98 FE' }
61
+ it { should include 'Windows 98 SE' }
62
+
63
+ it { should include 'Windows ME' }
64
+
65
+ it { should include 'Windows NT' }
66
+ it { should include 'Windows NT SP0' }
67
+ it { should include 'Windows NT SP1' }
68
+ it { should include 'Windows NT SP2' }
69
+ it { should include 'Windows NT SP3' }
70
+ it { should include 'Windows NT SP4' }
71
+ it { should include 'Windows NT SP5' }
72
+ it { should include 'Windows NT SP6' }
73
+ it { should include 'Windows NT SP6a' }
74
+
75
+ it { should include 'Windows 2000' }
76
+ it { should include 'Windows 2000 SP0' }
77
+ it { should include 'Windows 2000 SP1' }
78
+ it { should include 'Windows 2000 SP2' }
79
+ it { should include 'Windows 2000 SP3' }
80
+ it { should include 'Windows 2000 SP4' }
81
+
82
+ it { should include 'Windows XP' }
83
+ it { should include 'Windows XP SP0' }
84
+ it { should include 'Windows XP SP1' }
85
+ it { should include 'Windows XP SP2' }
86
+ it { should include 'Windows XP SP3' }
87
+
88
+ it { should include 'Windows 2003' }
89
+ it { should include 'Windows 2003 SP0' }
90
+ it { should include 'Windows 2003 SP1' }
91
+
92
+ it { should include 'Windows Vista' }
93
+ it { should include 'Windows Vista SP0' }
94
+ it { should include 'Windows Vista SP1' }
95
+
96
+ it { should include 'Windows 7' }
97
+
98
+ it { should include 'UNIX' }
99
+ end
100
+ end