ronin 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (207) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +11 -0
  3. data/.github/workflows/ruby.yml +32 -0
  4. data/.gitignore +7 -7
  5. data/.ruby-version +1 -0
  6. data/COPYING.txt +3 -3
  7. data/ChangeLog.md +25 -11
  8. data/Gemfile +21 -20
  9. data/README.md +102 -81
  10. data/Rakefile +4 -5
  11. data/bin/ronin +7 -12
  12. data/bin/ronin-campaigns +7 -12
  13. data/bin/ronin-console +7 -12
  14. data/bin/ronin-creds +7 -12
  15. data/bin/ronin-database +7 -12
  16. data/bin/ronin-emails +7 -12
  17. data/bin/ronin-exec +7 -12
  18. data/bin/ronin-fuzzer +7 -12
  19. data/bin/ronin-help +7 -12
  20. data/bin/ronin-hosts +7 -12
  21. data/bin/ronin-install +7 -12
  22. data/bin/ronin-ips +7 -12
  23. data/bin/ronin-net-proxy +7 -12
  24. data/bin/ronin-repos +7 -12
  25. data/bin/ronin-uninstall +7 -12
  26. data/bin/ronin-update +7 -12
  27. data/bin/ronin-urls +7 -12
  28. data/bin/ronin-wordlist +7 -12
  29. data/gemspec.yml +8 -8
  30. data/lib/bond/completions/ronin.rb +23 -23
  31. data/lib/ronin.rb +3 -3
  32. data/lib/ronin/address.rb +6 -7
  33. data/lib/ronin/arch.rb +3 -3
  34. data/lib/ronin/author.rb +5 -7
  35. data/lib/ronin/auto_load.rb +5 -5
  36. data/lib/ronin/bootstrap.rb +3 -3
  37. data/lib/ronin/campaign.rb +3 -3
  38. data/lib/ronin/config.rb +5 -7
  39. data/lib/ronin/credential.rb +3 -3
  40. data/lib/ronin/database.rb +3 -3
  41. data/lib/ronin/database/database.rb +8 -12
  42. data/lib/ronin/database/exceptions.rb +3 -3
  43. data/lib/ronin/database/exceptions/invalid_config.rb +3 -3
  44. data/lib/ronin/database/exceptions/unknown_repository.rb +3 -3
  45. data/lib/ronin/database/migrations.rb +3 -3
  46. data/lib/ronin/database/migrations/1.0.0.rb +3 -3
  47. data/lib/ronin/database/migrations/1.1.0.rb +3 -3
  48. data/lib/ronin/database/migrations/exceptions.rb +3 -3
  49. data/lib/ronin/database/migrations/exceptions/duplicate_migration.rb +3 -3
  50. data/lib/ronin/database/migrations/exceptions/unknown_migration.rb +3 -3
  51. data/lib/ronin/database/migrations/graph.rb +3 -3
  52. data/lib/ronin/database/migrations/migration.rb +3 -3
  53. data/lib/ronin/database/migrations/migrations.rb +3 -3
  54. data/lib/ronin/email_address.rb +5 -7
  55. data/lib/ronin/environment.rb +3 -3
  56. data/lib/ronin/exceptions.rb +3 -3
  57. data/lib/ronin/exceptions/duplicate_repository.rb +3 -3
  58. data/lib/ronin/exceptions/repository_not_found.rb +3 -3
  59. data/lib/ronin/host_name.rb +3 -3
  60. data/lib/ronin/host_name_ip_address.rb +3 -3
  61. data/lib/ronin/installation.rb +5 -7
  62. data/lib/ronin/ip_address.rb +6 -8
  63. data/lib/ronin/ip_address_mac_address.rb +3 -3
  64. data/lib/ronin/license.rb +6 -6
  65. data/lib/ronin/mac_address.rb +3 -3
  66. data/lib/ronin/model.rb +3 -3
  67. data/lib/ronin/model/has_authors.rb +3 -3
  68. data/lib/ronin/model/has_description.rb +3 -3
  69. data/lib/ronin/model/has_license.rb +3 -3
  70. data/lib/ronin/model/has_name.rb +3 -3
  71. data/lib/ronin/model/has_title.rb +3 -3
  72. data/lib/ronin/model/has_unique_name.rb +5 -7
  73. data/lib/ronin/model/has_version.rb +3 -3
  74. data/lib/ronin/model/importable.rb +3 -3
  75. data/lib/ronin/model/model.rb +7 -8
  76. data/lib/ronin/model/types.rb +3 -3
  77. data/lib/ronin/model/types/description.rb +9 -12
  78. data/lib/ronin/open_port.rb +5 -7
  79. data/lib/ronin/organization.rb +3 -3
  80. data/lib/ronin/os.rb +5 -7
  81. data/lib/ronin/os_guess.rb +3 -3
  82. data/lib/ronin/password.rb +3 -3
  83. data/lib/ronin/port.rb +3 -3
  84. data/lib/ronin/repositories.rb +3 -3
  85. data/lib/ronin/repository.rb +3 -3
  86. data/lib/ronin/ronin.rb +3 -3
  87. data/lib/ronin/script.rb +3 -3
  88. data/lib/ronin/script/buildable.rb +3 -3
  89. data/lib/ronin/script/deployable.rb +3 -3
  90. data/lib/ronin/script/exceptions.rb +3 -3
  91. data/lib/ronin/script/exceptions/build_failed.rb +3 -3
  92. data/lib/ronin/script/exceptions/deploy_failed.rb +3 -3
  93. data/lib/ronin/script/exceptions/exception.rb +3 -3
  94. data/lib/ronin/script/exceptions/not_built.rb +3 -3
  95. data/lib/ronin/script/exceptions/test_failed.rb +3 -3
  96. data/lib/ronin/script/path.rb +3 -3
  97. data/lib/ronin/script/script.rb +3 -3
  98. data/lib/ronin/script/testable.rb +3 -3
  99. data/lib/ronin/service.rb +3 -3
  100. data/lib/ronin/service_credential.rb +3 -3
  101. data/lib/ronin/software.rb +3 -3
  102. data/lib/ronin/spec/database.rb +27 -21
  103. data/lib/ronin/target.rb +3 -3
  104. data/lib/ronin/tcp_port.rb +3 -3
  105. data/lib/ronin/udp_port.rb +3 -3
  106. data/lib/ronin/ui.rb +3 -3
  107. data/lib/ronin/ui/cli.rb +3 -3
  108. data/lib/ronin/ui/cli/class_command.rb +14 -7
  109. data/lib/ronin/ui/cli/cli.rb +5 -5
  110. data/lib/ronin/ui/cli/command.rb +5 -7
  111. data/lib/ronin/ui/cli/commands.rb +3 -3
  112. data/lib/ronin/ui/cli/commands/campaigns.rb +5 -7
  113. data/lib/ronin/ui/cli/commands/console.rb +3 -3
  114. data/lib/ronin/ui/cli/commands/creds.rb +3 -3
  115. data/lib/ronin/ui/cli/commands/database.rb +3 -3
  116. data/lib/ronin/ui/cli/commands/emails.rb +3 -3
  117. data/lib/ronin/ui/cli/commands/exec.rb +3 -3
  118. data/lib/ronin/ui/cli/commands/fuzzer.rb +16 -16
  119. data/lib/ronin/ui/cli/commands/help.rb +3 -3
  120. data/lib/ronin/ui/cli/commands/hosts.rb +5 -7
  121. data/lib/ronin/ui/cli/commands/install.rb +7 -11
  122. data/lib/ronin/ui/cli/commands/ips.rb +5 -7
  123. data/lib/ronin/ui/cli/commands/net/proxy.rb +19 -12
  124. data/lib/ronin/ui/cli/commands/repos.rb +3 -3
  125. data/lib/ronin/ui/cli/commands/uninstall.rb +3 -3
  126. data/lib/ronin/ui/cli/commands/update.rb +3 -3
  127. data/lib/ronin/ui/cli/commands/urls.rb +3 -3
  128. data/lib/ronin/ui/cli/commands/wordlist.rb +3 -3
  129. data/lib/ronin/ui/cli/exceptions.rb +3 -3
  130. data/lib/ronin/ui/cli/exceptions/unknown_command.rb +3 -3
  131. data/lib/ronin/ui/cli/model_command.rb +6 -9
  132. data/lib/ronin/ui/cli/printing.rb +3 -3
  133. data/lib/ronin/ui/cli/resources_command.rb +7 -11
  134. data/lib/ronin/ui/cli/script_command.rb +5 -10
  135. data/lib/ronin/ui/console.rb +3 -3
  136. data/lib/ronin/ui/console/commands.rb +3 -3
  137. data/lib/ronin/ui/console/console.rb +3 -3
  138. data/lib/ronin/ui/console/context.rb +3 -3
  139. data/lib/ronin/ui/console/shell.rb +3 -3
  140. data/lib/ronin/url.rb +5 -7
  141. data/lib/ronin/url_query_param.rb +3 -3
  142. data/lib/ronin/url_query_param_name.rb +6 -6
  143. data/lib/ronin/url_scheme.rb +4 -4
  144. data/lib/ronin/user_name.rb +3 -3
  145. data/lib/ronin/vendor.rb +3 -3
  146. data/lib/ronin/version.rb +5 -5
  147. data/lib/ronin/web_credential.rb +5 -7
  148. data/man/ronin-campaigns.1.md +20 -20
  149. data/man/ronin-console.1.md +17 -17
  150. data/man/ronin-creds.1.md +16 -16
  151. data/man/ronin-database.1.md +23 -23
  152. data/man/ronin-emails.1.md +18 -18
  153. data/man/ronin-exec.1.md +11 -11
  154. data/man/ronin-fuzzer.1.md +23 -23
  155. data/man/ronin-help.1.md +5 -5
  156. data/man/ronin-hosts.1.md +20 -20
  157. data/man/ronin-install.1.md +18 -18
  158. data/man/ronin-ips.1.md +21 -21
  159. data/man/ronin-net-proxy.1.md +24 -24
  160. data/man/ronin-repos.1.md +18 -18
  161. data/man/ronin-uninstall.1.md +14 -14
  162. data/man/ronin-update.1.md +14 -14
  163. data/man/ronin-urls.1.md +22 -22
  164. data/man/ronin-wordlist.1.md +14 -13
  165. data/man/ronin.1.md +1 -1
  166. data/spec/arch_spec.rb +59 -46
  167. data/spec/author_spec.rb +14 -14
  168. data/spec/campaign_spec.rb +8 -0
  169. data/spec/credential_spec.rb +11 -8
  170. data/spec/database_spec.rb +6 -6
  171. data/spec/email_address_spec.rb +23 -20
  172. data/spec/host_name_spec.rb +24 -22
  173. data/spec/installation_spec.rb +6 -6
  174. data/spec/ip_address_spec.rb +31 -26
  175. data/spec/license_spec.rb +15 -9
  176. data/spec/mac_address_spec.rb +17 -8
  177. data/spec/model/has_authors_spec.rb +56 -37
  178. data/spec/model/has_description_spec.rb +36 -23
  179. data/spec/model/has_license_spec.rb +38 -28
  180. data/spec/model/has_name_spec.rb +36 -19
  181. data/spec/model/has_title_spec.rb +27 -14
  182. data/spec/model/has_version_spec.rb +64 -35
  183. data/spec/model/model_spec.rb +57 -33
  184. data/spec/model/models/{basic_model.rb → base_model.rb} +1 -1
  185. data/spec/model/models/{custom_model.rb → inherited_model.rb} +2 -3
  186. data/spec/os_spec.rb +24 -20
  187. data/spec/password_spec.rb +17 -9
  188. data/spec/port_spec.rb +30 -22
  189. data/spec/repository_spec.rb +59 -60
  190. data/spec/ronin_spec.rb +4 -4
  191. data/spec/script/buildable_spec.rb +8 -8
  192. data/spec/script/deployable_spec.rb +7 -7
  193. data/spec/script/path_spec.rb +42 -40
  194. data/spec/script/script_spec.rb +23 -23
  195. data/spec/script/testable_spec.rb +20 -20
  196. data/spec/service_spec.rb +14 -8
  197. data/spec/software_spec.rb +30 -17
  198. data/spec/spec_helper.rb +4 -4
  199. data/spec/ui/cli/classes/test_command.rb +2 -4
  200. data/spec/ui/cli/cli_spec.rb +5 -5
  201. data/spec/ui/cli/command_spec.rb +34 -30
  202. data/spec/url_query_param_spec.rb +23 -14
  203. data/spec/url_scheme_spec.rb +12 -9
  204. data/spec/url_spec.rb +64 -61
  205. data/spec/vendor_spec.rb +15 -8
  206. metadata +122 -150
  207. data/.gemtest +0 -0
@@ -11,52 +11,52 @@ Uninstalls a Ronin Repositories.
11
11
  ## ARGUMENTS
12
12
 
13
13
  *REPO*
14
- The name of the Repository to uninstall.
14
+ The name of the Repository to uninstall.
15
15
 
16
16
  ## OPTIONS
17
17
 
18
18
  `-v`, `--[no-]verbose`
19
- Enable verbose output.
19
+ Enable verbose output.
20
20
 
21
21
  `-q`, `--[no-]quiet`
22
- Disable verbose output.
22
+ Disable verbose output.
23
23
 
24
24
  `--[no-]silent`
25
- Silence all output.
25
+ Silence all output.
26
26
 
27
27
  `--[no-]color`
28
- Enables color output.
28
+ Enables color output.
29
29
 
30
30
  ## EXAMPLES
31
31
 
32
32
  `ronin uninstall repo`
33
- Uninstalls the repository with with the name `repo`.
33
+ Uninstalls the repository with with the name `repo`.
34
34
 
35
35
  `ronin uninstall repo@github.com`
36
- Uninstalls the repository with the name `repo` and from `github.com`.
36
+ Uninstalls the repository with the name `repo` and from `github.com`.
37
37
 
38
38
  ## FILES
39
39
 
40
40
  *~/.ronin/*
41
- Ronin configuration directory.
41
+ Ronin configuration directory.
42
42
 
43
43
  *~/.ronin/repos/*
44
- Installation directory for Ronin Repositories.
44
+ Installation directory for Ronin Repositories.
45
45
 
46
46
  *~/.ronin/database.log*
47
- Database log.
47
+ Database log.
48
48
 
49
49
  *~/.ronin/database.sqlite3*
50
- The default sqlite3 Database file.
50
+ The default sqlite3 Database file.
51
51
 
52
52
  *~/.ronin/database.yml*
53
- Optional Database configuration.
53
+ Optional Database configuration.
54
54
 
55
55
  ## ENVIRONMENT
56
56
 
57
57
  HOME
58
- Specifies the home directory of the user. Ronin will search for the
59
- *~/.ronin/* configuration directory within the home directory.
58
+ Specifies the home directory of the user. Ronin will search for the
59
+ *~/.ronin/* configuration directory within the home directory.
60
60
 
61
61
  ## AUTHOR
62
62
 
@@ -11,52 +11,52 @@ Updates Ronin Repositories.
11
11
  ## ARGUMENTS
12
12
 
13
13
  *REPO*
14
- The name of the Repository to update.
14
+ The name of the Repository to update.
15
15
 
16
16
  ## OPTIONS
17
17
 
18
18
  `-v`, `--[no-]verbose`
19
- Enable verbose output.
19
+ Enable verbose output.
20
20
 
21
21
  `-q`, `--[no-]quiet`
22
- Disable verbose output.
22
+ Disable verbose output.
23
23
 
24
24
  `--[no-]silent`
25
- Silence all output.
25
+ Silence all output.
26
26
 
27
27
  `--[no-]color`
28
- Enables color output.
28
+ Enables color output.
29
29
 
30
30
  ## EXAMPLES
31
31
 
32
32
  `ronin update repo`
33
- Updates the repository with with the name `repo`.
33
+ Updates the repository with with the name `repo`.
34
34
 
35
35
  `ronin update repo@github.com`
36
- Updates the repository with the name `repo` and from `github.com`.
36
+ Updates the repository with the name `repo` and from `github.com`.
37
37
 
38
38
  ## FILES
39
39
 
40
40
  *~/.ronin/*
41
- Ronin configuration directory.
41
+ Ronin configuration directory.
42
42
 
43
43
  *~/.ronin/repos*
44
- Installation directory for Ronin Repositories.
44
+ Installation directory for Ronin Repositories.
45
45
 
46
46
  *~/.ronin/database.log*
47
- Database log.
47
+ Database log.
48
48
 
49
49
  *~/.ronin/database.sqlite3*
50
- The default sqlite3 Database file.
50
+ The default sqlite3 Database file.
51
51
 
52
52
  *~/.ronin/database.yml*
53
- Optional Database configuration.
53
+ Optional Database configuration.
54
54
 
55
55
  ## ENVIRONMENT
56
56
 
57
57
  HOME
58
- Specifies the home directory of the user. Ronin will search for the
59
- *~/.ronin/* configuration directory within the home directory.
58
+ Specifies the home directory of the user. Ronin will search for the
59
+ *~/.ronin/* configuration directory within the home directory.
60
60
 
61
61
  ## AUTHOR
62
62
 
data/man/ronin-urls.1.md CHANGED
@@ -11,72 +11,72 @@ Manages URLs.
11
11
  ## OPTIONS
12
12
 
13
13
  `-v`, `--[no-]verbose`
14
- Enable verbose output.
14
+ Enable verbose output.
15
15
 
16
16
  `-q`, `--[no-]quiet`
17
- Disable verbose output.
17
+ Disable verbose output.
18
18
 
19
19
  `--[no-]silent`
20
- Silence all output.
20
+ Silence all output.
21
21
 
22
22
  `--[no-]color`
23
- Enables color output.
23
+ Enables color output.
24
24
 
25
25
  `-D`, `--database` *URI*
26
- The database to URI (`mysql://user:password@host/ronin`).
26
+ The database to URI (`mysql://user:password@host/ronin`).
27
27
 
28
28
  `--[no-]csv`
29
- CSV output.
29
+ CSV output.
30
30
 
31
31
  `--[no-]xml`
32
- XML output.
32
+ XML output.
33
33
 
34
34
  `--[no-]yaml`
35
- YAML output.
35
+ YAML output.
36
36
 
37
37
  `--[no-]json`
38
- JSON output.
38
+ JSON output.
39
39
 
40
40
  `-i`, `--import` *FILE*
41
- Imports HostNames from the FILE.
41
+ Imports HostNames from the FILE.
42
42
 
43
43
  `--[no-]http`
44
- Searches for `http://` URLs.
44
+ Searches for `http://` URLs.
45
45
 
46
46
  `--[no-]https`
47
- Searches for `https://` URLs.
47
+ Searches for `https://` URLs.
48
48
 
49
49
  `-H`, `--hosts` *HOST* [...]
50
- Searches for URLs with the given HOST name(s).
50
+ Searches for URLs with the given HOST name(s).
51
51
 
52
52
  `-p`, `--with-ports` *PORT* [...]
53
- Searches for URLs associated with the PORT(s).
53
+ Searches for URLs associated with the PORT(s).
54
54
 
55
55
  `-d`, `--directory` *DIRECTORY*
56
- Searches for URLs sharing the DIRECTORY.
56
+ Searches for URLs sharing the DIRECTORY.
57
57
 
58
58
  `-q`, `--with-query-param` *NAME* [...]
59
- Searches for URLs containing the query-param NAME.
59
+ Searches for URLs containing the query-param NAME.
60
60
 
61
61
  `-Q`, `--with-query-value` *VALUE* [...]
62
- Searches for URLs containing the query-param VALUE.
62
+ Searches for URLs containing the query-param VALUE.
63
63
 
64
64
  `-l`, `--[no-]list`
65
- Lists the HostNames.
65
+ Lists the HostNames.
66
66
 
67
67
  ## FILES
68
68
 
69
69
  *~/.ronin/*
70
- Ronin configuration directory.
70
+ Ronin configuration directory.
71
71
 
72
72
  *~/.ronin/database.log*
73
- Database log.
73
+ Database log.
74
74
 
75
75
  *~/.ronin/database.sqlite3*
76
- The default sqlite3 Database file.
76
+ The default sqlite3 Database file.
77
77
 
78
78
  *~/.ronin/database.yml*
79
- Optional Database configuration.
79
+ Optional Database configuration.
80
80
 
81
81
  ## AUTHOR
82
82
 
@@ -11,41 +11,42 @@ Builds and/or mutates Wordlists.
11
11
  ## ARGUMENTS
12
12
 
13
13
  *TEMPLATE*
14
- Options word template to generate the wordlist with (`alpha:7 numeric:1-3`).
14
+ Options word template to generate the wordlist with
15
+ (`alpha:7 numeric:1-3`).
15
16
 
16
17
  ## OPTIONS
17
18
 
18
19
  `-v`, `--[no-]verbose`
19
- Enable verbose output.
20
+ Enable verbose output.
20
21
 
21
22
  `-q`, `--[no-]quiet`
22
- Disable verbose output.
23
+ Disable verbose output.
23
24
 
24
25
  `--[no-]silent`
25
- Silence all output.
26
+ Silence all output.
26
27
 
27
28
  `--[no-]color`
28
- Enables color output.
29
+ Enables color output.
29
30
 
30
31
  `-i`, `--input` *FILE*
31
- The input text FILE to parse.
32
+ The input text FILE to parse.
32
33
 
33
34
  `-o`, `--output` *PATH*
34
- The output PATH to write the wordlist to.
35
+ The output PATH to write the wordlist to.
35
36
 
36
37
  `-m`, `--mutations` *STRING*:*SUBSTITUTE*
37
- Mutations to apply to the words. If STRING is found within a word, it will be
38
- replaced with SUBSTITUTE.
38
+ Mutations to apply to the words. If STRING is found within a word,
39
+ it will be replaced with SUBSTITUTE.
39
40
 
40
41
  ## EXAMPLES
41
42
 
42
43
  `ronin wordlist alpha:7 numeric:1-3`
43
- Enumerates through every possible word, with each word beginning with seven
44
- alphabetic characters and ending in 1-3 numeric characters.
44
+ Enumerates through every possible word, with each word beginning with
45
+ seven alphabetic characters and ending in 1-3 numeric characters.
45
46
 
46
47
  `ronin wordlist --input text.txt -m e:3 -m a:@ -m o:0`
47
- Builds a wordlist from a text file, applying basic "leet-speak" mutation rules
48
- to each word.
48
+ Builds a wordlist from a text file, applying basic "leet-speak"
49
+ mutation rules to each word.
49
50
 
50
51
  ## AUTHOR
51
52
 
data/man/ronin.1.md CHANGED
@@ -11,7 +11,7 @@ Runs a Ronin COMMAND or the starts Ronin Console.
11
11
  ## ARGUMENTS
12
12
 
13
13
  *COMMAND*
14
- The Ronin command to execute.
14
+ The Ronin command to execute.
15
15
 
16
16
  ## OPTIONS
17
17
 
data/spec/arch_spec.rb CHANGED
@@ -1,64 +1,77 @@
1
1
  require 'spec_helper'
2
+
2
3
  require 'ronin/arch'
3
4
 
4
5
  describe Arch do
5
- it "should require a name, endian and address_length attributes" do
6
- arch = Arch.new
7
- arch.should_not be_valid
8
-
9
- arch.name = 'future'
10
- arch.should_not be_valid
11
-
12
- arch.endian = 'little'
13
- arch.should_not be_valid
6
+ describe "validations" do
7
+ it "should require a name, endian and address_length attributes" do
8
+ expect(subject).not_to be_valid
14
9
 
15
- arch.address_length = 4
16
- arch.should be_valid
17
- end
10
+ subject.name = 'future'
11
+ expect(subject).not_to be_valid
18
12
 
19
- it "should require a unique name" do
20
- first_arch = Arch.create(:name => 'cats',
21
- :endian => 'little',
22
- :address_length => 4)
23
- first_arch.should be_valid
13
+ subject.endian = 'little'
14
+ expect(subject).not_to be_valid
24
15
 
25
- second_arch = Arch.new(:name => 'cats',
26
- :endian => 'big',
27
- :address_length => 4)
28
- second_arch.should_not be_valid
29
- end
16
+ subject.address_length = 4
17
+ expect(subject).to be_valid
18
+ end
30
19
 
31
- it "should require either 'little' or 'big' for the endian attribute" do
32
- arch = Arch.new(:name => 'test',
33
- :endian => 'lol',
34
- :address_length => 4)
35
- arch.should_not be_valid
20
+ describe "name" do
21
+ before do
22
+ described_class.create(
23
+ :name => 'cats',
24
+ :endian => 'little',
25
+ :address_length => 4
26
+ )
27
+ end
36
28
 
37
- arch.endian = 'little'
38
- arch.should be_valid
29
+ subject do
30
+ described_class.new(
31
+ :name => 'cats',
32
+ :endian => 'big',
33
+ :address_length => 4
34
+ )
35
+ end
39
36
 
40
- arch.endian = 'big'
41
- arch.should be_valid
42
- end
37
+ it "should require a unique name" do
38
+ expect(subject).not_to be_valid
39
+ end
40
+ end
43
41
 
44
- it "should require a numeric valid for the address_length attribute" do
45
- arch = Arch.new(:name => 'test2',
46
- :endian => 'big',
47
- :address_length => 'x')
48
- arch.should_not be_valid
42
+ describe "endian" do
43
+ subject do
44
+ described_class.new(
45
+ :name => 'test',
46
+ :address_length => 4
47
+ )
48
+ end
49
49
 
50
- arch.address_length = '4'
51
- arch.should be_valid
50
+ it "should accept 'little'" do
51
+ subject.endian = 'little'
52
+ expect(subject).to be_valid
53
+ end
52
54
 
53
- arch.address_length = 4
54
- arch.should be_valid
55
- end
55
+ it "should accept 'big'" do
56
+ subject.endian = 'big'
57
+ expect(subject).to be_valid
58
+ end
56
59
 
57
- it "should provide built-in archs" do
58
- Arch.i386.should_not be_nil
60
+ context "otherwise" do
61
+ it { should_not be_valid }
62
+ end
63
+ end
59
64
  end
60
65
 
61
- it "should allow custom names for built-in archs" do
62
- Arch.x86_64.name.should == 'x86-64'
66
+ describe "predefined archs" do
67
+ subject { described_class }
68
+
69
+ it "should provide built-in archs" do
70
+ expect(subject.i386).not_to be_nil
71
+ end
72
+
73
+ it "should allow custom names for built-in archs" do
74
+ expect(subject.x86_64.name).to eq('x86-64')
75
+ end
63
76
  end
64
77
  end
data/spec/author_spec.rb CHANGED
@@ -1,26 +1,26 @@
1
1
  require 'spec_helper'
2
+
2
3
  require 'ronin/author'
3
4
 
4
5
  describe Author do
5
- it "should have a String representation" do
6
- author = Author.new(:name => 'test')
7
- author.to_s.should == 'test'
8
- end
9
-
10
6
  describe "#to_s" do
11
- it "should return the name when their is no email" do
12
- author = Author.new(:name => 'anonymous')
7
+ subject { described_class.new(:name => 'anonymous') }
13
8
 
14
- author.to_s.should == 'anonymous'
9
+ it "should return the name when their is no email" do
10
+ expect(subject.to_s).to eq('anonymous')
15
11
  end
16
12
 
17
- it "should return the name and email when both are present" do
18
- author = Author.new(
19
- :name => 'anonymous',
20
- :email => 'anonymous@example.com'
21
- )
13
+ context "when email is set" do
14
+ subject do
15
+ described_class.new(
16
+ :name => 'anonymous',
17
+ :email => 'anonymous@example.com'
18
+ )
19
+ end
22
20
 
23
- author.to_s.should == 'anonymous <anonymous@example.com>'
21
+ it "should return the name and email when both are present" do
22
+ expect(subject.to_s).to eq('anonymous <anonymous@example.com>')
23
+ end
24
24
  end
25
25
  end
26
26
  end