auto_test 0.1.9.8 → 0.1.9.8.5
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.
- data/lib/authentication.rb +2 -2
- data/lib/auto_test/version.rb +1 -1
- data/lib/page.rb +4 -5
- data/lib/spec/requests/error_reduction_spec.rb +98 -135
- data/lib/spec/requests/simulation_spec.rb +34 -86
- data/lib/tasks/auto_test.rb +0 -1
- data/lib/test.rb +0 -23
- data/lib/test_starter.rb +0 -1
- metadata +2 -2
data/lib/authentication.rb
CHANGED
@@ -166,8 +166,8 @@ module AutoTest
|
|
166
166
|
session.fill_in field[1], :with => user.send(field[0].to_sym)
|
167
167
|
end
|
168
168
|
else
|
169
|
-
|
170
|
-
session.fill_in field
|
169
|
+
get_login_fields.each_with_index do |field, i|
|
170
|
+
session.fill_in field, :with => get_user_data[i]
|
171
171
|
end
|
172
172
|
end
|
173
173
|
session.click_button get_login_button
|
data/lib/auto_test/version.rb
CHANGED
data/lib/page.rb
CHANGED
@@ -187,14 +187,13 @@ module AutoTest
|
|
187
187
|
session.choose choices[i]
|
188
188
|
end
|
189
189
|
|
190
|
-
# choose a
|
190
|
+
# choose a checkbox
|
191
191
|
def choose_checkbox(name, input_texts, session)
|
192
192
|
checkboxes = session.all('input').find_all{ |i| i[:type] == "checkbox" && i[:name] == name }
|
193
|
-
|
194
|
-
i = rand(choices.length)
|
193
|
+
cb = checkboxes.first
|
195
194
|
input_texts << "checkbox___" + name
|
196
|
-
input_texts <<
|
197
|
-
session.check
|
195
|
+
input_texts << cb[:value]
|
196
|
+
session.check cb[:name]
|
198
197
|
end
|
199
198
|
|
200
199
|
# select a random option from a select list
|
@@ -6,17 +6,17 @@ require 'auto_test'
|
|
6
6
|
|
7
7
|
describe "Application" do
|
8
8
|
describe "error path reduction" do
|
9
|
+
if AutoTest::Test.use_fixtures? then
|
10
|
+
fixtures(*AutoTest::Test.get_fixtures)
|
11
|
+
end
|
9
12
|
it "reduces the path to the error" do
|
10
|
-
|
13
|
+
DatabaseCleaner.strategy = :transaction
|
14
|
+
DatabaseCleaner.start
|
11
15
|
load "#{Rails.root}/db/test_seeds.rb"
|
12
|
-
if user_inputs("use_fixtures") then
|
13
|
-
fixtures(*user_inputs("get_fixtures"))
|
14
|
-
end
|
15
16
|
init_path
|
16
|
-
|
17
17
|
init_sessions
|
18
18
|
init_sessions_array
|
19
|
-
number_of_sessions =
|
19
|
+
number_of_sessions = AutoTest::Test.get_number_of_sessions
|
20
20
|
for i in 0..number_of_sessions-1 do
|
21
21
|
sess = Capybara::Session.new(:rack_test,Rails.application)
|
22
22
|
add_to_sessions_array sess
|
@@ -28,82 +28,81 @@ describe "Application" do
|
|
28
28
|
user = Array.new(number_of_sessions)
|
29
29
|
session_index = 0
|
30
30
|
begin
|
31
|
-
# puts Time.now
|
32
31
|
while line = paths.gets do
|
33
32
|
lno = lno + 1
|
34
33
|
if !line.chop!.end_with? "ID" then
|
35
34
|
hash = Hash.new
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
35
|
+
a = line.gsub!(/[{}\"]/,'').split(/\=\>/)
|
36
|
+
session = get_sessions_array[a[0].split(":").first.to_i]
|
37
|
+
session_index = get_sessions_array.index(session)
|
38
|
+
if a[0].split(":").second == AutoTest::Authentication.get_login_path then
|
39
|
+
begin
|
40
|
+
# necesarry if user data has changed
|
41
|
+
# might have to be rescued if the user doesn´t exist anymore.
|
42
|
+
user[session_index] = user[session_index].class.find(user[session_index].id)
|
43
|
+
rescue
|
44
|
+
end
|
45
|
+
session.visit AutoTest::Authentication.get_login_path
|
46
|
+
hash["#{get_sessions_array.index(session)}:#{session.current_path}"] = AutoTest::Authentication.get_login_button
|
47
|
+
if AutoTest::Authentication.use_db_users then
|
48
|
+
AutoTest::Authentication.get_login_attributes.each do |field|
|
49
|
+
session.fill_in field[1], :with => user[session_index].send(field[0].to_sym)
|
45
50
|
end
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
51
|
+
else
|
52
|
+
user_data = nil
|
53
|
+
index = AutoTest::Authentication.get_login_names.index(AutoTest::Authentication.get_unique_login_attribute_name)
|
54
|
+
user[session_index].class.find(:all).each do |u|
|
55
|
+
AutoTest::Authentication.get_login_data.each do |d|
|
56
|
+
if d[index] == u.send(AutoTest::Authentication.get_unique_login_attribute_name.to_sym) then
|
57
|
+
user_data = AutoTest::Authentication.get_login_data[index]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
AutoTest::Authentication.get_login_attributes.each_with_index do |field, i|
|
62
|
+
session.fill_in field[1], :with => user_data[i]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
session.click_button AutoTest::Authentication.get_login_button
|
66
|
+
elsif a[1] == AutoTest::Authentication.get_logout_path then
|
67
|
+
hash["#{get_sessions_array.index(session)}:#{session.current_path}"] = AutoTest::Authentication.get_logout_path
|
68
|
+
session.visit AutoTest::Authentication.get_logout_path
|
69
|
+
elsif a[1][0] == "[" then
|
70
|
+
texts = []
|
71
|
+
inputs = a[1][1,a[1].size-2].split(/,/)
|
72
|
+
i = 0
|
73
|
+
while i < inputs.size do
|
74
|
+
texts << inputs[i].strip
|
75
|
+
texts << inputs[i+1].strip
|
76
|
+
if inputs[i].strip.start_with? "radio___" then
|
77
|
+
session.choose inputs[i + 1].strip
|
78
|
+
elsif inputs[i].strip.start_with? "select___" then
|
79
|
+
session.select inputs[i + 1].strip, :from => inputs[i].gsub("select___",'').strip
|
80
|
+
elsif inputs[i].strip.start_with? "checkbox___" then
|
81
|
+
session.check inputs[i].gsub("checkbox___",'').strip
|
52
82
|
else
|
53
|
-
|
54
|
-
|
55
|
-
user_inputs("get_login_data").each do |d|
|
56
|
-
if d[index] == u.send(user_inputs("get_unique_login_attribute_name").to_sym) then
|
57
|
-
user_data = user_inputs("get_login_data")[index]
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
user_inputs("get_login_attributes").each_with_index do |field, i|
|
62
|
-
session.fill_in field[1], :with => user_data[i]
|
63
|
-
end
|
64
|
-
end
|
65
|
-
session.click_button user_inputs("get_login_button")
|
66
|
-
elsif a[1] == user_inputs("get_logout_path") then
|
67
|
-
hash["#{get_sessions_array.index(session)}:#{session.current_path}"] = user_inputs("get_logout_path")
|
68
|
-
session.visit user_inputs("get_logout_path")
|
69
|
-
elsif a[1][0] == "[" then
|
70
|
-
texts = []
|
71
|
-
inputs = a[1][1,a[1].size-2].split(/,/)
|
72
|
-
i = 0
|
73
|
-
while i < inputs.size do
|
74
|
-
texts << inputs[i].strip
|
75
|
-
texts << inputs[i+1].strip
|
76
|
-
if inputs[i].strip.start_with? "radio___" then
|
77
|
-
session.choose inputs[i + 1].strip
|
78
|
-
elsif inputs[i].strip.start_with? "select___" then
|
79
|
-
session.select inputs[i + 1].strip, :from => inputs[i].gsub("select___",'').strip
|
80
|
-
elsif inputs[i].strip.start_with? "checkbox___" then
|
81
|
-
session.check inputs[i + 1].strip
|
82
|
-
else
|
83
|
-
input = session.all('input').find{ |inp| inp[:name] == inputs[i].strip}
|
84
|
-
input.set(inputs[i+1].strip)
|
85
|
-
end
|
86
|
-
i = i + 2
|
83
|
+
input = session.all('input').find{ |inp| inp[:name] == inputs[i].strip}
|
84
|
+
input.set(inputs[i+1].strip)
|
87
85
|
end
|
88
|
-
|
89
|
-
session.all('input').find_all{ |i| i[:type] == "submit"}.first.click
|
90
|
-
else
|
91
|
-
link = a[1].split(/\+\+\+/)
|
92
|
-
href = link[0]
|
93
|
-
text = link[1]
|
94
|
-
link = session.all('a').find{ |l| l[:href] == href && l.text == text }
|
95
|
-
hash["#{get_sessions_array.index(session)}:#{session.current_path}"] = link[:href].to_s + "+++" + link.text.to_s
|
96
|
-
link.click
|
86
|
+
i = i + 2
|
97
87
|
end
|
98
|
-
|
99
|
-
|
88
|
+
hash["#{get_sessions_array.index(session)}:#{session.current_path}"] = texts
|
89
|
+
session.all('input').find_all{ |i| i[:type] == "submit"}.first.click
|
90
|
+
else
|
91
|
+
link = a[1].split(/\+\+\+/)
|
92
|
+
href = link[0]
|
93
|
+
text = link[1]
|
94
|
+
link = session.all('a').find{ |l| l[:href] == href && l.text == text }
|
95
|
+
hash["#{get_sessions_array.index(session)}:#{session.current_path}"] = link[:href].to_s + "+++" + link.text.to_s
|
96
|
+
link.click
|
97
|
+
end
|
98
|
+
add_path(hash)
|
100
99
|
else
|
101
100
|
add_path(line)
|
102
101
|
line_parts = line.split(":")
|
103
102
|
session_index = line_parts[0].to_i
|
104
103
|
id = line_parts[1].to_i
|
105
104
|
# get the Constant from the String, to find the right class
|
106
|
-
user[session_index] =
|
105
|
+
user[session_index] = AutoTest::Authentication.user_class.find(id)
|
107
106
|
end
|
108
107
|
end
|
109
108
|
rescue => e
|
@@ -200,7 +199,7 @@ def delete_links_without_input(new_path, number_of_links, session)
|
|
200
199
|
# if the part of the session to be deleted is finished,
|
201
200
|
# has no inputs and is smaller or equal to the wanted number of links,
|
202
201
|
# delete the links of the session, other links get added to the path
|
203
|
-
if n.values[0] ==
|
202
|
+
if n.values[0] == AutoTest::Authentication.get_logout_path && no_inputs && current_session == session then
|
204
203
|
if tmp.select{|x| x.class != String && x.keys[0].split(":").first.to_i == session}.size == number_of_links then
|
205
204
|
tmp.delete_if{|x| x.class != String && x.keys[0].split(":").first.to_i == session}
|
206
205
|
next_path << tmp
|
@@ -213,7 +212,7 @@ def delete_links_without_input(new_path, number_of_links, session)
|
|
213
212
|
done = true
|
214
213
|
got_one = false
|
215
214
|
end
|
216
|
-
elsif n.values[0] ==
|
215
|
+
elsif n.values[0] == AutoTest::Authentication.get_logout_path && current_session == session then
|
217
216
|
next_path << tmp
|
218
217
|
tmp = []
|
219
218
|
done = true
|
@@ -264,7 +263,7 @@ def delete_groups(new_path)
|
|
264
263
|
next_path = []
|
265
264
|
new_path.each_with_index do |n,ind|
|
266
265
|
if n.class != String then
|
267
|
-
if n.keys[0].split(":").second ==
|
266
|
+
if n.keys[0].split(":").second == AutoTest::Authentication.get_login_path && n.keys[0].split(":").first.to_i == i then
|
268
267
|
count = count + 1
|
269
268
|
end
|
270
269
|
if !(n.keys[0].split(":").first.to_i == i && count == no_of_group) then
|
@@ -283,7 +282,7 @@ def delete_groups(new_path)
|
|
283
282
|
new_path = next_path
|
284
283
|
end
|
285
284
|
new_path.each do |n|
|
286
|
-
if n.class != String && n.keys[0].split(":").first.to_i == i && n.values[0] ==
|
285
|
+
if n.class != String && n.keys[0].split(":").first.to_i == i && n.values[0] == AutoTest::Authentication.get_logout_path then
|
287
286
|
no_of_groups = no_of_groups + 1
|
288
287
|
end
|
289
288
|
end
|
@@ -298,8 +297,8 @@ def delete_single_links(new_path)
|
|
298
297
|
i = 0
|
299
298
|
while i < new_path.size do
|
300
299
|
if (new_path[i].class != String &&
|
301
|
-
!(new_path[i].values.include?
|
302
|
-
!(new_path[i].keys[0].include?
|
300
|
+
!(new_path[i].values.include? AutoTest::Authentication.get_logout_path) &&
|
301
|
+
!(new_path[i].keys[0].include? AutoTest::Authentication.get_login_path)) then
|
303
302
|
next_path = new_path[0..i-1]+new_path[i+1..new_path.size]
|
304
303
|
error_not_found = try_path(next_path)
|
305
304
|
if !error_not_found then
|
@@ -366,7 +365,7 @@ def replace_same_users!(new_path)
|
|
366
365
|
session = new_path[i].split(":").first.to_i
|
367
366
|
if users[session] == new_path[i] then
|
368
367
|
hash = Hash.new
|
369
|
-
hash[last_paths[new_path[i].split(":").first.to_i]] =
|
368
|
+
hash[last_paths[new_path[i].split(":").first.to_i]] = AutoTest::Authentication.get_logout_path
|
370
369
|
new_path[i] = hash
|
371
370
|
else
|
372
371
|
users[session] = new_path[i]
|
@@ -383,7 +382,7 @@ def try_path(path_to_try)
|
|
383
382
|
lno = 0
|
384
383
|
init_sessions
|
385
384
|
init_sessions_array
|
386
|
-
number_of_sessions =
|
385
|
+
number_of_sessions = AutoTest::Test.get_number_of_sessions
|
387
386
|
for i in 0..number_of_sessions-1 do
|
388
387
|
sess = Capybara::Session.new(:rack_test,Rails.application)
|
389
388
|
add_to_sessions_array sess
|
@@ -409,29 +408,29 @@ def try_path(path_to_try)
|
|
409
408
|
lno = lno + 1
|
410
409
|
if line.class == Hash then
|
411
410
|
if line.values[0] == "Anmelden" then
|
412
|
-
session.visit
|
413
|
-
hash["#{session_index}:#{session.current_path}"] =
|
414
|
-
if
|
415
|
-
|
411
|
+
session.visit AutoTest::Authentication.get_login_path
|
412
|
+
hash["#{session_index}:#{session.current_path}"] = AutoTest::Authentication.get_login_button
|
413
|
+
if AutoTest::Authentication.use_db_users then
|
414
|
+
AutoTest::Authentication.get_login_attributes.each do |field|
|
416
415
|
session.fill_in field[1], :with => user[session_index].send(field[0].to_sym)
|
417
416
|
end
|
418
417
|
else
|
419
|
-
index =
|
418
|
+
index = AutoTest::Authentication.get_login_names.index(AutoTest::Authentication.get_unique_login_attribute_name)
|
420
419
|
user[session_index].class.find(:all).each do |u|
|
421
|
-
|
422
|
-
if d[index] == u.send(
|
423
|
-
user_data =
|
420
|
+
AutoTest::Authentication.get_login_data.each do |d|
|
421
|
+
if d[index] == u.send(AutoTest::Authentication.get_unique_login_attribute_name.to_sym) then
|
422
|
+
user_data = AutoTest::Authentication.get_login_data[index]
|
424
423
|
end
|
425
424
|
end
|
426
425
|
end
|
427
|
-
|
426
|
+
AutoTest::Authentication.get_login_attributes.each_with_index do |field, i|
|
428
427
|
session.fill_in field[1], :with => user_data[i]
|
429
428
|
end
|
430
429
|
end
|
431
|
-
session.click_button
|
432
|
-
elsif line.values[0] ==
|
433
|
-
hash["#{session_index}:#{session.current_path}"] =
|
434
|
-
session.visit
|
430
|
+
session.click_button AutoTest::Authentication.get_login_button
|
431
|
+
elsif line.values[0] == AutoTest::Authentication.get_logout_path then
|
432
|
+
hash["#{session_index}:#{session.current_path}"] = AutoTest::Authentication.get_logout_path
|
433
|
+
session.visit AutoTest::Authentication.get_logout_path
|
435
434
|
elsif line.values[0].class == Array then
|
436
435
|
inputs = line.values[0]
|
437
436
|
if !session.all('input').empty? then
|
@@ -522,17 +521,17 @@ def try_path(path_to_try)
|
|
522
521
|
path_to_try[lno-1].replace(hash)
|
523
522
|
else
|
524
523
|
# if there´s no authorization, no Strings will be saved in the path
|
525
|
-
if
|
524
|
+
if AutoTest::Authentication.use_db_users then
|
526
525
|
id = line.split(":").second.to_i
|
527
526
|
begin
|
528
|
-
user[session_index] =
|
527
|
+
user[session_index] = AutoTest::Authentication.user_class.find(id)
|
529
528
|
rescue
|
530
529
|
index = lno + 1
|
531
530
|
root_path = ""
|
532
531
|
while root_path == "" && index < path_to_try.size do
|
533
532
|
if path_to_try[index].class != String then
|
534
533
|
if path_to_try[index].keys[0].split(":").first.to_i == session_index then
|
535
|
-
if path_to_try[index].keys[0].split(":").second !=
|
534
|
+
if path_to_try[index].keys[0].split(":").second != AutoTest::Authentication.get_login_path then
|
536
535
|
root_path = path_to_try[index].keys[0].split(":").second
|
537
536
|
end
|
538
537
|
end
|
@@ -544,7 +543,7 @@ def try_path(path_to_try)
|
|
544
543
|
user[session_index] = find_next_user(root_path, session)
|
545
544
|
end
|
546
545
|
else
|
547
|
-
user[session_index] =
|
546
|
+
user[session_index] = AutoTest::Authentication.user_class.find(id)
|
548
547
|
end
|
549
548
|
if user[session_index] == false then
|
550
549
|
return error_not_found
|
@@ -588,15 +587,15 @@ end
|
|
588
587
|
def find_next_user(root_path, session)
|
589
588
|
index = 0
|
590
589
|
u = 0
|
591
|
-
user_size =
|
590
|
+
user_size = AutoTest::Authentication.user_class.find(:all).size
|
592
591
|
while u < user_size do
|
593
|
-
user =
|
592
|
+
user = AutoTest::Authentication.user_class.find(:first, :conditions => "id > #{index}")
|
594
593
|
index = user.id
|
595
|
-
session.visit
|
596
|
-
|
594
|
+
session.visit AutoTest::Authentication.get_login_path
|
595
|
+
AutoTest::Authentication.get_login_attributes.each do |la|
|
597
596
|
session.fill_in la[1], :with => user.send(la[0].to_sym)
|
598
597
|
end
|
599
|
-
session.click_button
|
598
|
+
session.click_button AutoTest::Authentication.get_login_button
|
600
599
|
if session.current_path == root_path then
|
601
600
|
return user
|
602
601
|
end
|
@@ -710,12 +709,8 @@ def add_to_sessions_array(session)
|
|
710
709
|
end
|
711
710
|
|
712
711
|
def clean_and_seed_db
|
713
|
-
DatabaseCleaner.strategy = :truncation
|
714
|
-
DatabaseCleaner.start
|
715
712
|
DatabaseCleaner.clean
|
716
|
-
|
717
|
-
fixtures(*user_inputs("get_fixtures"))
|
718
|
-
end
|
713
|
+
DatabaseCleaner.start
|
719
714
|
load "#{Rails.root}/db/test_seeds.rb"
|
720
715
|
end
|
721
716
|
|
@@ -729,38 +724,6 @@ def err_message
|
|
729
724
|
@err_message
|
730
725
|
end
|
731
726
|
|
732
|
-
def init_user_inputs
|
733
|
-
@user_inputs = Hash.new
|
734
|
-
file = File.new("#{Rails.root}/log/user_input.log", "r")
|
735
|
-
while line = file.gets do
|
736
|
-
b = line.split(/:/,2)
|
737
|
-
@user_inputs["#{b[0].strip}"] = b[1].chop
|
738
|
-
end
|
739
|
-
@user_inputs.each do |k,v|
|
740
|
-
if v.start_with? "[" then
|
741
|
-
x = v.split("],[")
|
742
|
-
result = []
|
743
|
-
x.each do |i|
|
744
|
-
result << i.delete("[]\"").split(",")
|
745
|
-
end
|
746
|
-
result.each do |r|
|
747
|
-
if r.class == String then
|
748
|
-
r.strip!
|
749
|
-
else
|
750
|
-
r.each do |s|
|
751
|
-
s.strip!
|
752
|
-
end
|
753
|
-
end
|
754
|
-
end
|
755
|
-
@user_inputs[k] = result
|
756
|
-
end
|
757
|
-
end
|
758
|
-
end
|
759
|
-
|
760
|
-
def user_inputs(key)
|
761
|
-
@user_inputs[key]
|
762
|
-
end
|
763
|
-
|
764
727
|
def path
|
765
728
|
@path
|
766
729
|
end
|
@@ -1,16 +1,17 @@
|
|
1
1
|
require "watir-webdriver"
|
2
2
|
require 'spec_helper'
|
3
|
+
require 'auto_test'
|
4
|
+
|
3
5
|
|
4
6
|
describe "Application" do
|
5
7
|
describe "auto_test" do
|
8
|
+
|
9
|
+
if AutoTest::Test.use_fixtures? then
|
10
|
+
fixtures(*AutoTest::Test.get_fixtures)
|
11
|
+
end
|
6
12
|
it "simulates the error" do
|
7
|
-
init_user_inputs
|
8
13
|
load "#{Rails.root}/db/test_seeds.rb"
|
9
|
-
|
10
|
-
fixtures(*user_inputs("get_fixtures"))
|
11
|
-
end
|
12
|
-
init_path
|
13
|
-
init_sessions_array
|
14
|
+
sessions_array = []
|
14
15
|
puts "Firefox is getting started..."
|
15
16
|
begin
|
16
17
|
paths = File.new("#{Rails.root}/log/new_path.log", "r")
|
@@ -20,25 +21,25 @@ describe "Application" do
|
|
20
21
|
home = "localhost:3002"
|
21
22
|
sessions = search_sessions
|
22
23
|
number_of_sessions = sessions.size
|
23
|
-
user = Array.new(
|
24
|
+
user = Array.new(AutoTest::Test.get_number_of_sessions.to_i)
|
24
25
|
for i in 0..number_of_sessions-1 do
|
25
26
|
browser = Watir::Browser.new :ff
|
26
|
-
|
27
|
+
sessions_array[sessions[i]] = browser
|
27
28
|
end
|
28
29
|
while line = paths.gets do
|
29
30
|
if !line.chop!.end_with? "ID" then
|
30
31
|
hash = Hash.new
|
31
32
|
a = line.gsub!(/[{}\"]/,'').split(/\=\>/)
|
32
|
-
session =
|
33
|
-
session_index =
|
33
|
+
session = sessions_array[a[0].split(":").first.to_i]
|
34
|
+
session_index = sessions_array.index(session)
|
34
35
|
session.windows.first.use
|
35
|
-
if a[0].split(":").second ==
|
36
|
-
session.goto home +
|
36
|
+
if a[0].split(":").second == AutoTest::Authentication.get_login_path then
|
37
|
+
session.goto home + AutoTest::Authentication.get_login_path
|
37
38
|
hash["#{a[0]}"] = a[1]
|
38
|
-
login(
|
39
|
-
elsif a[1] ==
|
40
|
-
hash["#{a[0]}"] =
|
41
|
-
session.goto home +
|
39
|
+
login(session, user[session_index].class.find(user[session_index].id))
|
40
|
+
elsif a[1] == AutoTest::Authentication.get_logout_path then
|
41
|
+
hash["#{a[0]}"] = AutoTest::Authentication.get_logout_path
|
42
|
+
session.goto home + AutoTest::Authentication.get_logout_path
|
42
43
|
elsif a[1][0] == "[" then
|
43
44
|
texts = []
|
44
45
|
inputs = a[1][1,a[1].size-2].split(/,/)
|
@@ -72,102 +73,49 @@ describe "Application" do
|
|
72
73
|
end
|
73
74
|
hash["#{a[0]}"] = a[1]
|
74
75
|
end
|
75
|
-
add_path(hash)
|
76
76
|
sleep 2
|
77
77
|
else
|
78
|
-
add_path(line)
|
79
78
|
line_parts = line.split(":")
|
80
79
|
session_index = line_parts[0].to_i
|
81
80
|
id = line_parts[1].to_i
|
82
81
|
# get the Constant from the String, to find the right class
|
83
|
-
user[session_index] =
|
82
|
+
user[session_index] = AutoTest::Authentication.user_class.find(id)
|
84
83
|
end
|
85
84
|
end
|
86
85
|
end
|
87
86
|
end
|
88
87
|
end
|
89
88
|
|
90
|
-
def login(
|
91
|
-
if
|
92
|
-
|
93
|
-
browser.text_field(:
|
89
|
+
def login(browser, user)
|
90
|
+
if AutoTest::Authentication.use_db_users then
|
91
|
+
Authentication.get_login_attributes.each do |field|
|
92
|
+
browser.text_field(:id => field[1]).set user.send(field[0].to_sym)
|
94
93
|
end
|
95
94
|
sleep 1
|
96
95
|
else
|
97
|
-
index =
|
96
|
+
index = AutoTest::Authentication.get_login_names.index(AutoTest::Authentication.get_unique_login_attribute_name)
|
97
|
+
user_data = nil
|
98
98
|
user.class.find(:all).each do |u|
|
99
|
-
|
100
|
-
if d[index] == u.send(
|
101
|
-
user_data =
|
99
|
+
AutoTest::Authentication.get_login_data.each do |d|
|
100
|
+
if d[index] == u.send(AutoTest::Authentication.get_unique_login_attribute_name.to_sym) then
|
101
|
+
user_data = AutoTest::Authentication.get_login_data[index]
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
105
|
-
|
106
|
-
browser.text_field(:
|
105
|
+
AutoTest::Authentication.get_login_fields.each_with_index do |field, i|
|
106
|
+
browser.text_field(:id => field).set user_data[i]
|
107
107
|
end
|
108
108
|
end
|
109
109
|
sleep 2
|
110
110
|
browser.button(:type => 'submit').click
|
111
111
|
end
|
112
112
|
|
113
|
-
def init_user_inputs
|
114
|
-
@user_inputs = Hash.new
|
115
|
-
file = File.new("log/user_input.log", "r")
|
116
|
-
while line = file.gets do
|
117
|
-
b = line.split(/:/,2)
|
118
|
-
@user_inputs["#{b[0].strip}"] = b[1].chop
|
119
|
-
end
|
120
|
-
@user_inputs.each do |k,v|
|
121
|
-
if v.start_with? "[" then
|
122
|
-
x = v.split("],[")
|
123
|
-
result = []
|
124
|
-
x.each do |i|
|
125
|
-
result << i.delete("[]\"").split(",")
|
126
|
-
end
|
127
|
-
result.each do |r|
|
128
|
-
if r.class == String then
|
129
|
-
r.strip!
|
130
|
-
else
|
131
|
-
r.each do |s|
|
132
|
-
s.strip!
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
@user_inputs[k] = result
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
def user_inputs(key)
|
142
|
-
@user_inputs[key]
|
143
|
-
end
|
144
|
-
|
145
|
-
def get_sessions_array
|
146
|
-
@sessions_array
|
147
|
-
end
|
148
|
-
|
149
|
-
def init_sessions_array
|
150
|
-
@sessions_array = []
|
151
|
-
end
|
152
|
-
|
153
|
-
def add_to_sessions_array(i,session)
|
154
|
-
@sessions_array[i] = session
|
155
|
-
end
|
156
|
-
|
157
|
-
def path
|
158
|
-
@path
|
159
|
-
end
|
160
|
-
|
161
|
-
def init_path
|
162
|
-
@path = []
|
163
|
-
end
|
164
|
-
|
165
|
-
def add_path(value)
|
166
|
-
@path << value
|
167
|
-
end
|
168
|
-
|
169
113
|
def search_sessions
|
170
|
-
|
114
|
+
begin
|
115
|
+
path_to_search = File.new("#{Rails.root}/log/new_path.log", "r")
|
116
|
+
rescue
|
117
|
+
path_to_search = File.new("#{Rails.root}/log/paths.log","r")
|
118
|
+
end
|
171
119
|
sessions = Array.new
|
172
120
|
while line = path_to_search.gets do
|
173
121
|
line.gsub!(/[{}\"]/,'')
|
data/lib/tasks/auto_test.rb
CHANGED
@@ -31,7 +31,6 @@ namespace :auto_test do
|
|
31
31
|
task :reduce_errors do
|
32
32
|
puts "Reducing the error path, this could take a while..."
|
33
33
|
sh "rspec #{path}/spec/requests/error_reduction_spec.rb -o '#{path}/../log/reduce_err.txt'"
|
34
|
-
sh "rm '#{path}/../log/reduce_err.txt'"
|
35
34
|
Rake::Task["auto_test:start_action_path"].invoke
|
36
35
|
end
|
37
36
|
|
data/lib/test.rb
CHANGED
@@ -314,29 +314,6 @@ module AutoTest
|
|
314
314
|
@@no_session_links
|
315
315
|
end
|
316
316
|
|
317
|
-
def write_user_input_to_file
|
318
|
-
f = File.new("#{Rails.root}/log/user_input.log", "w")
|
319
|
-
if Test.no_auth then
|
320
|
-
f.puts("get_number_of_test_runs:#{get_number_of_test_runs}
|
321
|
-
get_number_of_sessions:#{get_number_of_sessions}")
|
322
|
-
else
|
323
|
-
f.puts("get_number_of_test_runs:#{get_number_of_test_runs}
|
324
|
-
use_fixtures:#{use_fixtures}
|
325
|
-
get_login_path:#{Authentication.get_login_path}
|
326
|
-
#{if use_fixtures? then 'get_fixtures'+get_fixtures end}
|
327
|
-
get_logout_path:#{Authentication.get_logout_path}
|
328
|
-
get_login_button:#{Authentication.get_login_button}
|
329
|
-
get_login_attributes:#{Authentication.get_login_attributes}
|
330
|
-
get_number_of_sessions:#{get_number_of_sessions}
|
331
|
-
get_login_data:#{Authentication.get_login_data}
|
332
|
-
get_login_names:#{Authentication.get_login_names}
|
333
|
-
get_unique_login_attribute_name:#{Authentication.get_unique_login_attribute_name}
|
334
|
-
use_db_users:#{Authentication.use_db_users}
|
335
|
-
user_class:#{Authentication.user_class}")
|
336
|
-
end
|
337
|
-
f.close
|
338
|
-
end
|
339
|
-
|
340
317
|
end
|
341
318
|
|
342
319
|
autoload :Authentication, 'authentication'
|
data/lib/test_starter.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: auto_test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.9.8
|
5
|
+
version: 0.1.9.8.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Maike Hargens
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-10-
|
13
|
+
date: 2012-10-26 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faker
|