Gemnigma 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,108 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe Gemnigma::Decrypt do
4
+ before :each do
5
+ @dec = Gemnigma::Decrypt.new
6
+ end
7
+
8
+ it "should be a subclass of RotatorDecrypt" do
9
+ expect(Gemnigma::Decrypt.superclass).to eql(Gemnigma::RotatorDecrypt)
10
+ end
11
+
12
+ it "should be an instance of the class Decrypt" do
13
+ expect(@dec).to be_an_instance_of Gemnigma::Decrypt
14
+ end
15
+
16
+ describe "#get_cmd_args" do
17
+ it "should take no arguments" do
18
+ expect{ @dec.get_cmd_args(123) }.to raise_error(ArgumentError)
19
+ end
20
+
21
+ it "should display an error message if few arguments are passed as command line arguments" do
22
+
23
+ io = double("io", puts: nil)
24
+ message = Gemnigma::Messages.new(io)
25
+ message.few_args
26
+
27
+ expect(io).to have_received(:puts).with("Not enough arguments passed in. Run Gemnigma --help for instructions on usage\nExiting...")
28
+ end
29
+
30
+ it "should display an error message if too many arguments are passed as command line arguments" do
31
+
32
+ io = double("io", puts: nil)
33
+ message = Gemnigma::Messages.new(io)
34
+ message.too_much_args
35
+
36
+ expect(io).to have_received(:puts).with("Too many arguments passed in. Run Gemnigma --help for instructions on usage\nExiting...")
37
+ end
38
+ end
39
+
40
+ describe "#true_key?" do
41
+ it "should be a private method" do
42
+ expect{ @dec.true_key? }.to raise_error (NoMethodError)
43
+ end
44
+
45
+ it "should take one argument only" do
46
+ expect{ @dec.send(:true_key?) }.to raise_error(ArgumentError)
47
+ expect{ @dec.send(:true_key?, "41521", "32415") }.to raise_error(ArgumentError)
48
+ end
49
+
50
+ it "should return true for valid keys" do
51
+ expect(@dec.send(:true_key?, "31292")).to be true
52
+ expect(@dec.send(:true_key?, "43556")).to be true
53
+ expect(@dec.send(:true_key?, "41521")).to be true
54
+ expect(@dec.send(:true_key?, "12345")).to be true
55
+ end
56
+
57
+ it "should return false for invalid keys" do
58
+ expect(@dec.send(:true_key?, "abcde")).to be false
59
+ expect(@dec.send(:true_key?, "41526a")).to be false
60
+ expect(@dec.send(:true_key?, "4152")).to be false
61
+ expect(@dec.send(:true_key?, "415216")).to be false
62
+ end
63
+ end
64
+
65
+ describe "#true_date?" do
66
+ it "should be a private method" do
67
+ expect{ @dec.true_date?(2) }.to raise_error(NoMethodError)
68
+ end
69
+
70
+ it "should take one compulsory argument" do
71
+ expect{ @dec.send(:true_date?) }.to raise_error(ArgumentError)
72
+ expect{ @dec.send(:true_date?, 123456, 90919) }.to raise_error(ArgumentError)
73
+ end
74
+
75
+ it "should return true for valid dates" do
76
+ expect(@dec.send(:true_date?, 11015)).to be true
77
+ expect(@dec.send(:true_date?, 81015)).to be true
78
+ end
79
+
80
+ it "should return false for invalid dates" do
81
+ expect(@dec.send(:true_date?, 110152)).to be false
82
+ expect(@dec.send(:true_date?, "hello")).to be false
83
+ end
84
+ end
85
+
86
+ describe "#Decrypt_file" do
87
+ it "should be a private method" do
88
+ expect{ @dec.Decrypt_file }.to raise_error (NoMethodError)
89
+ end
90
+
91
+ it "should take four arguments" do
92
+ expect { @dec.send(:decrypt_file) }.to raise_error(ArgumentError)
93
+ expect { @dec.send(:decrypt_file, "message.txt") }.to raise_error(ArgumentError)
94
+ expect { @dec.send(:decrypt_file, "message.txt", "enc.txt") }.to raise_error(ArgumentError)
95
+ expect { @dec.send(:decrypt_file, "message.txt", "enc.txt", 24515) }.to raise_error(ArgumentError)
96
+ end
97
+
98
+ it "should display a success message if file was successfully created" do
99
+
100
+ io = double("io", puts: nil)
101
+ message = Gemnigma::Messages.new(io)
102
+ message.success_message("file.txt", "94704", "81015")
103
+
104
+ expect(io).to have_received(:puts).with("\n........................................................")
105
+ expect(io).to have_received(:puts).with("\nCreated 'file.txt' with secret key 94704 and date 81015")
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,61 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe Gemnigma::Encrypt do
4
+ before :each do
5
+ @enc = Gemnigma::Encrypt.new
6
+ end
7
+
8
+ it "should be a subclass of RotatorEncrypt" do
9
+ expect(Gemnigma::Encrypt.superclass).to eql(Gemnigma::RotatorEncrypt)
10
+ end
11
+
12
+ it "should be an instance of the class Encrypt" do
13
+ expect(@enc).to be_an_instance_of Gemnigma::Encrypt
14
+ end
15
+
16
+ describe "#get_cmd_args" do
17
+ it "should take no arguments" do
18
+ expect{ @enc.get_cmd_args(123) }.to raise_error(ArgumentError)
19
+ end
20
+
21
+ it "should display an error message if few arguments are passed as command line arguments" do
22
+
23
+ io = double("io", puts: nil)
24
+ message = Gemnigma::Messages.new(io)
25
+ message.few_args
26
+
27
+ expect(io).to have_received(:puts).with("Not enough arguments passed in. Run Gemnigma --help for instructions on usage\nExiting...")
28
+ end
29
+
30
+ it "should display an error message if too many arguments are passed as command line arguments" do
31
+
32
+ io = double("io", puts: nil)
33
+ message = Gemnigma::Messages.new(io)
34
+ message.too_much_args
35
+
36
+ expect(io).to have_received(:puts).with("Too many arguments passed in. Run Gemnigma --help for instructions on usage\nExiting...")
37
+ end
38
+ end
39
+
40
+ describe "#encrypt_file" do
41
+ it "should be a private method" do
42
+ expect{ @enc.encrypt_file }.to raise_error (NoMethodError)
43
+ end
44
+
45
+ it "should take two arguments" do
46
+ expect { @enc.send(:encrypt_file) }.to raise_error(ArgumentError)
47
+ expect { @enc.send(:encrypt_file, "message.txt") }.to raise_error(ArgumentError)
48
+ expect { @enc.send(:encrypt_file, "message.txt", "file.txt", "io.txt") }.to raise_error(ArgumentError)
49
+ end
50
+
51
+ it "should display a success message if file was successfully created" do
52
+
53
+ io = double("io", puts: nil)
54
+ message = Gemnigma::Messages.new(io)
55
+ message.success_message("file.txt", "94704", "81015")
56
+
57
+ expect(io).to have_received(:puts).with("\n........................................................")
58
+ expect(io).to have_received(:puts).with("\nCreated 'file.txt' with secret key 94704 and date 81015")
59
+ end
60
+ end
61
+ end
data/spec/key_spec.rb ADDED
@@ -0,0 +1,48 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe Gemnigma::Key do
4
+ before :each do
5
+ @key = Gemnigma::Key.new(41521)
6
+ end
7
+
8
+ it "should return Key as it's class name" do
9
+ expect(@key).to be_an_instance_of Gemnigma::Key
10
+ end
11
+
12
+ describe "#initialize" do
13
+ context "when called with parameter" do
14
+ it "should initialize a new instance with the specified key" do
15
+ key = Gemnigma::Key.new(12345)
16
+ expect(key.key).to eql(12345)
17
+ end
18
+ end
19
+
20
+ context "when called without parameter" do
21
+ it "should default to 41521 if no key is specified" do
22
+ key = Gemnigma::Key.new
23
+ expect(key.key).to eql(41521)
24
+ end
25
+ end
26
+
27
+ context "when called with wrong parameter value" do
28
+ it "should default to 41521 if key is invalid" do
29
+ key = Gemnigma::Key.new("12345")
30
+ expect(key.key).to eql(41521)
31
+ end
32
+ end
33
+ end
34
+
35
+ describe "#key_map" do
36
+ it "should return an array when called" do
37
+ expect(@key.key_map.class).to eql(Array)
38
+ end
39
+
40
+ it "should return an array with a length of 4" do
41
+ expect(@key.key_map.length).to eql(4)
42
+ end
43
+
44
+ it "should return an array of consecutive numbers based on the key" do
45
+ expect(@key.key_map).to eql([41, 15, 52, 21])
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,161 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe Gemnigma::Messages do
4
+ before :each do
5
+ @msg = Gemnigma::Messages.new
6
+ end
7
+
8
+ it "should be an instance of the Messages class" do
9
+ expect(@msg).to be_an_instance_of Gemnigma::Messages
10
+ end
11
+
12
+ describe "#initialize" do
13
+ it "should default to standard output as the default if no argument is supplied to new" do
14
+ is_stdout = (@msg.instance_variable_get(:@io) == STDOUT)
15
+ expect(is_stdout).to be true
16
+ end
17
+
18
+ it "should take whatever argument is passed into it as the output stream" do
19
+ msg = Gemnigma::Messages.new(StringIO.new)
20
+ expect(msg.instance_variable_get(:@io).class).to eql(StringIO)
21
+ end
22
+ end
23
+
24
+ describe "#puts" do
25
+ it "should take one compulsory argument" do
26
+ expect{ @msg.puts }.to raise_error(ArgumentError)
27
+ expect{ @msg.puts("hello", "world") }.to raise_error(ArgumentError)
28
+ end
29
+
30
+ it "should print to the console whatever is passed into it" do
31
+
32
+ io = double("io", puts: nil)
33
+ msg = Gemnigma::Messages.new(io)
34
+ msg.puts "Hello World"
35
+ msg.puts("This is a ridiculously long message")
36
+
37
+ expect(io).to have_received(:puts).with("Hello World")
38
+ expect(io).to have_received(:puts).with("This is a ridiculously long message")
39
+ end
40
+ end
41
+
42
+ describe "#few_args" do
43
+ it "should print to the console when few_args is called" do
44
+
45
+ io = double("io", puts: nil)
46
+ msg = Gemnigma::Messages.new(io)
47
+ msg.few_args
48
+
49
+ expect(io).to have_received(:puts).with("Not enough arguments passed in. Run Gemnigma --help for instructions on usage\nExiting...")
50
+ end
51
+ end
52
+
53
+ describe "#too_much_args" do
54
+ it "should print to the console when too_much_args is called" do
55
+
56
+ io = double("io", puts: nil)
57
+ msg = Gemnigma::Messages.new(io)
58
+ msg.too_much_args
59
+
60
+ expect(io).to have_received(:puts).with("Too many arguments passed in. Run Gemnigma --help for instructions on usage\nExiting...")
61
+ end
62
+ end
63
+
64
+ describe "#file_not_in_existence" do
65
+ it "should take one compulsory argument" do
66
+ expect{ @msg.file_not_in_existence }.to raise_error(ArgumentError)
67
+ expect{ @msg.file_not_in_existence("file", "new_file") }.to raise_error(ArgumentError)
68
+ end
69
+
70
+ it "should print to the console when file_not_in_existence is called" do
71
+
72
+ io = double("io", puts: nil)
73
+ msg = Gemnigma::Messages.new(io)
74
+ msg.file_not_in_existence("file.txt")
75
+
76
+ expect(io).to have_received(:puts).with("file.txt: File does not exist\nExiting...")
77
+ end
78
+ end
79
+
80
+ describe "#file_in_existence" do
81
+ it "should take two compulsory argument" do
82
+ expect{ @msg.file_in_existence }.to raise_error(ArgumentError)
83
+ expect{ @msg.file_in_existence("file", "new_file", "another_file") }.to raise_error(ArgumentError)
84
+ end
85
+
86
+ it "should print to the console when file_in_existence is called" do
87
+
88
+ io = double("io", puts: nil)
89
+ msg = Gemnigma::Messages.new(io)
90
+ msg.file_in_existence("file.txt", "new_file.txt")
91
+
92
+ expect(io).to have_received(:puts).with("file.txt exists... Checking new_file.txt")
93
+ end
94
+ end
95
+
96
+ describe "#creating_new_file" do
97
+ it "should take one compulsory argument" do
98
+ expect{ @msg.creating_new_file }.to raise_error(ArgumentError)
99
+ expect{ @msg.creating_new_file("file", "new_file") }.to raise_error(ArgumentError)
100
+ end
101
+
102
+ it "should print to the console when creating_new_file is called" do
103
+
104
+ io = double("io", puts: nil)
105
+ msg = Gemnigma::Messages.new(io)
106
+ msg.creating_new_file("file.txt")
107
+
108
+ expect(io).to have_received(:puts).with("file.txt will be created, proceeding...")
109
+ end
110
+ end
111
+
112
+ describe "#overwrite_warning" do
113
+ it "should take one compulsory argument" do
114
+ expect{ @msg.overwrite_warning }.to raise_error(ArgumentError)
115
+ expect{ @msg.overwrite_warning("file", "new_file") }.to raise_error(ArgumentError)
116
+ end
117
+
118
+ it "should print to the console when overwrite_warning is called" do
119
+
120
+ io = double("io", puts: nil)
121
+ msg = Gemnigma::Messages.new(io)
122
+ msg.overwrite_warning("file.txt")
123
+
124
+ expect(io).to have_received(:puts).with( "file.txt exists already, do you want to overwrite it? (Y) or (N): ")
125
+ end
126
+ end
127
+
128
+ describe "#wrong_date" do
129
+ it "should take one compulsory argument" do
130
+ expect{ @msg.wrong_date }.to raise_error(ArgumentError)
131
+ expect{ @msg.wrong_date("12345", "09190002") }.to raise_error(ArgumentError)
132
+ end
133
+
134
+ it "should print to the console when wrong_date is called" do
135
+
136
+ io = double("io", puts: nil)
137
+ msg = Gemnigma::Messages.new(io)
138
+ msg.wrong_date("abcde")
139
+
140
+ expect(io).to have_received(:puts).with("abcde doesn't match the specified date format\nExiting...")
141
+ end
142
+ end
143
+
144
+ describe "#success_message" do
145
+ it "should take three compulsory arguments" do
146
+ expect{ @msg.success_message }.to raise_error(ArgumentError)
147
+ expect{ @msg.success_message("file.txt", "new.txt") }.to raise_error(ArgumentError)
148
+ expect{ @msg.success_message("file.txt", "new.txt", "810", "105") }.to raise_error(ArgumentError)
149
+ end
150
+
151
+ it "should print to the console when success_message is called" do
152
+
153
+ io = double("io", puts: nil)
154
+ msg = Gemnigma::Messages.new(io)
155
+ msg.success_message("new.txt", "94704", "81015")
156
+
157
+ expect(io).to have_received(:puts).with("\n........................................................")
158
+ expect(io).to have_received(:puts).with("\nCreated 'new.txt' with secret key 94704 and date 81015")
159
+ end
160
+ end
161
+ end
@@ -0,0 +1,62 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe Gemnigma::Offset do
4
+ before :each do
5
+ @offset = Gemnigma::Offset.new
6
+ end
7
+
8
+ it "should return Offset as it's class name" do
9
+ expect(@offset).to be_an_instance_of Gemnigma::Offset
10
+ end
11
+
12
+ describe "#date" do
13
+ it "should return the current date" do
14
+ expect(@offset.date.asctime).to eql(Time.now.asctime)
15
+ end
16
+ end
17
+
18
+ describe "#formatted_date" do
19
+ it "should be a private method" do
20
+ expect { @offset.formatted_date }.to raise_error(NoMethodError)
21
+ end
22
+
23
+ it "should return a formatted date in the format ddmmyy" do
24
+ expect(@offset.send(:formatted_date).to_s).to match(/\d\d\d\d\d/)
25
+ end
26
+ end
27
+
28
+ describe "#squared_date" do
29
+ it "should be a private method" do
30
+ expect { @offset.squared_date }.to raise_error(NoMethodError)
31
+ end
32
+
33
+ it "should return the square of the formatted_date" do
34
+ square = @offset.send(:formatted_date) ** 2
35
+ expect(@offset.send(:squared_date)).to eql(square)
36
+ end
37
+ end
38
+
39
+ describe "#offset" do
40
+ it "should return an array" do
41
+ expect(@offset.offset.class).to eql(Array)
42
+ end
43
+
44
+ it "should return an array with a length of 4" do
45
+ expect(@offset.offset.length).to eql(4)
46
+ end
47
+
48
+ it "should return an array of integers" do
49
+ expect(@offset.offset.all? {|offset| offset.class == Fixnum}).to be true
50
+ end
51
+ end
52
+
53
+ describe "#full_date" do
54
+ it "should return an integer" do
55
+ expect(@offset.full_date.is_a? Integer).to be true
56
+ end
57
+
58
+ it "should return an integer corresponding to date the offset is based upon" do
59
+ expect(@offset.full_date.to_s).to match(/\d\d\d\d\d/)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,21 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe Gemnigma::RotatorDecrypt do
4
+ before :each do
5
+ @rot_dec = Gemnigma::RotatorDecrypt.new
6
+ end
7
+
8
+ it "should be a subclass of RotatorEncrypt" do
9
+ expect(Gemnigma::RotatorDecrypt.superclass).to eql(Gemnigma::RotatorEncrypt)
10
+ end
11
+
12
+ describe "#rot_decrypt" do
13
+ it "should take one parameter" do
14
+ expect{ @rot_dec.rot_decrypt }.to raise_error(ArgumentError)
15
+ end
16
+
17
+ it "should return a new string" do
18
+ expect(@rot_dec.rot_decrypt("qv0.x")).not_to eql("qv0.x")
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,130 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe Gemnigma::RotatorEncrypt do
4
+ before :each do
5
+ @rot_enc = Gemnigma::RotatorEncrypt.new
6
+ end
7
+
8
+ describe "#initialize" do
9
+ context "with one optionally defined parameter" do
10
+ it "should return an instance of RotatorEncrypt" do
11
+ rot = Gemnigma::RotatorEncrypt.new(Gemnigma::Key.new)
12
+ expect(rot).to be_an_instance_of Gemnigma::RotatorEncrypt
13
+ end
14
+
15
+ it "should default to 41521 if an invalid key is used for initialization" do
16
+ rot = Gemnigma::RotatorEncrypt.new(21345)
17
+ expect(rot.key_map).to eql([41, 15, 52, 21])
18
+ end
19
+ end
20
+
21
+ context "without parameters" do
22
+ it "should return an instance of RotatorEncrypt" do
23
+ expect(@rot_enc).to be_an_instance_of Gemnigma::RotatorEncrypt
24
+ end
25
+
26
+ it "should default to 41521 as the key map" do
27
+ expect(@rot_enc.key_map).to eql([41, 15, 52, 21])
28
+ end
29
+ end
30
+ end
31
+
32
+ describe "#char_rotation" do
33
+ it "should be a private method" do
34
+ expect{ @rot_enc.char_rotation }.to raise_error(NoMethodError)
35
+ end
36
+
37
+ it "should exist as a method of the class RotatorEncrypt" do
38
+ expect(@rot_enc.private_methods.include? :char_rotation).to be true
39
+ end
40
+
41
+ it "should return an array" do
42
+ expect(@rot_enc.send(:char_rotation).class).to eql(Array)
43
+ end
44
+
45
+ it "should return an array with a length of 4" do
46
+ expect(@rot_enc.send(:char_rotation).length).to eql(4)
47
+ end
48
+
49
+ it "should return an array of numbers" do
50
+ expect(@rot_enc.send(:char_rotation).all? {|num| num.is_a? Integer}).to be true
51
+ end
52
+ end
53
+
54
+ describe "#map_word_to_key" do
55
+ it "should be a private method" do
56
+ expect{ @rot_enc.map_word_to_key }.to raise_error(NoMethodError)
57
+ end
58
+
59
+ it "should take one parameter" do
60
+ expect{ @rot_enc.send(:map_word_to_key) }.to raise_error(ArgumentError)
61
+ expect{ @rot_enc.send(:map_word_to_key, "hello", "world") }.to raise_error(ArgumentError)
62
+ end
63
+
64
+ it "should return an array" do
65
+ expect(@rot_enc.send(:map_word_to_key, "Hello").class).to eql(Array)
66
+ end
67
+
68
+ it "should return an array of arrays" do
69
+ expect(@rot_enc.send(:map_word_to_key, "Hello").all? {|item| item.is_a? Array}).to be true
70
+ end
71
+
72
+ it "should return an array of arrays containing a string and a number" do
73
+ result = @rot_enc.send(:map_word_to_key, "Hello").map do |arr|
74
+ arr.all? {|item| item.class == String || item.class == Fixnum}
75
+ end
76
+ expect(result.all?).to be true
77
+ end
78
+
79
+ it "should return an array length based on passed in word" do
80
+ expect(@rot_enc.send(:map_word_to_key, "H").length).to eql(1)
81
+ expect(@rot_enc.send(:map_word_to_key, "He").length).to eql(2)
82
+ expect(@rot_enc.send(:map_word_to_key, "Hel").length).to eql(3)
83
+ expect(@rot_enc.send(:map_word_to_key, "Hell").length).to eql(4)
84
+ expect(@rot_enc.send(:map_word_to_key, "Hello").length).to eql(5)
85
+ end
86
+ end
87
+
88
+ describe "#rot_encrypt" do
89
+ it "should take one parameter" do
90
+ expect{ @rot_enc.rot_encrypt }.to raise_error(ArgumentError)
91
+ end
92
+
93
+ it "should return a new string" do
94
+ expect(@rot_enc.rot_encrypt("hello")).not_to eql("hello")
95
+ end
96
+ end
97
+
98
+ describe "#get_offset" do
99
+ it "should be a private method" do
100
+ expect{ @rot_enc.get_offset }.to raise_error(NoMethodError)
101
+ end
102
+
103
+ it "should return an array" do
104
+ expect(@rot_enc.send(:get_offset)).to be_an(Array)
105
+ end
106
+
107
+ it "should return an array of integers" do
108
+ expect(@rot_enc.send(:get_offset).all? {|item| item.class == Fixnum }).to be true
109
+ end
110
+ end
111
+
112
+ describe "#map_key_to_offset" do
113
+ it "should be a private method" do
114
+ expect{ @rot_enc.map_key_to_offset }.to raise_error(NoMethodError)
115
+ end
116
+
117
+ it "should return an array" do
118
+ expect(@rot_enc.send(:map_key_to_offset)).to be_an(Array)
119
+ end
120
+
121
+ it "should return an array with four items" do
122
+ expect(@rot_enc.send(:map_key_to_offset).length).to eql(4)
123
+ end
124
+
125
+ it "should return a nested array" do
126
+ expect(@rot_enc.send(:map_key_to_offset).all? {|item| item.class == Array }).to be true
127
+ end
128
+ end
129
+
130
+ end
@@ -0,0 +1,17 @@
1
+ require "coveralls"
2
+ Coveralls.wear!
3
+
4
+ require_relative "../helpers/char_map"
5
+ require_relative "../helpers/cipher_encrypt"
6
+ require_relative "../helpers/cipher_decrypt"
7
+ require_relative "../helpers/key"
8
+ require_relative "../helpers/offset"
9
+ require_relative "../helpers/rotator_encrypt"
10
+ require_relative "../helpers/rotator_decrypt"
11
+ require_relative "../helpers/validate_file_arg"
12
+ require_relative "../helpers/messages"
13
+ require_relative "../lib/Gemnigma/encrypt"
14
+ require_relative "../lib/Gemnigma/decrypt"
15
+ require_relative "../lib/Gemnigma/crack"
16
+ require_relative "../lib/Gemnigma/version"
17
+ require_relative "../lib/Gemnigma.rb"
@@ -0,0 +1,49 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe Gemnigma::ValidateFileArg do
4
+ it "should be a module" do
5
+ expect(Gemnigma::ValidateFileArg.class).to eql(Module)
6
+ end
7
+
8
+ it "should have a method validate" do
9
+ expect(Gemnigma::ValidateFileArg.instance_methods.include? :validate).to be true
10
+ end
11
+
12
+ describe "#validate" do
13
+ it "should display an error message if input file does not exist" do
14
+
15
+ io = double("io", puts: nil)
16
+ message = Gemnigma::Messages.new(io)
17
+ message.file_not_in_existence("non-existent.txt")
18
+
19
+ expect(io).to have_received(:puts).with("non-existent.txt: File does not exist\nExiting...")
20
+ end
21
+
22
+ it "should display a success message if file exists" do
23
+
24
+ io = double("io", puts: nil)
25
+ message = Gemnigma::Messages.new(io)
26
+ message.file_in_existence("message.txt", "new_file.txt")
27
+
28
+ expect(io).to have_received(:puts).with("message.txt exists... Checking new_file.txt")
29
+ end
30
+
31
+ it "should display a informing a user that a file is about to be created" do
32
+
33
+ io = double("io", puts: nil)
34
+ message = Gemnigma::Messages.new(io)
35
+ message.creating_new_file("new_file.txt")
36
+
37
+ expect(io).to have_received(:puts).with("new_file.txt will be created, proceeding...")
38
+ end
39
+
40
+ it "should display a message alerting a user that a file is already in existence" do
41
+
42
+ io = double("io", puts: nil)
43
+ message = Gemnigma::Messages.new(io)
44
+ message.overwrite_warning("new_file.txt")
45
+
46
+ expect(io).to have_received(:puts).with("new_file.txt exists already, do you want to overwrite it? (Y) or (N): ")
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,11 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe "version.rb" do
4
+ it "should be a constant" do
5
+ expect(Gemnigma.constants.include? :VERSION).to be true
6
+ end
7
+
8
+ it "should return a string as it's value" do
9
+ expect(Gemnigma::VERSION.class).to eql(String)
10
+ end
11
+ end