Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Side by Side Diff: components/test/data/password_manager/website.py

Issue 273523004: Password Manager testing automation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cmd Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 import time
2
3
4 from action import Action
5
6
7 class Website:
8
9 def __init__(
10 self, name, username, password, driver, test_environment,
11 username_not_auto=False):
12 self.name = name
13 self.driver = driver
14 self.username = username
15 self.password = password
16 if test_environment.passwords_tree != None:
17 if username == None:
18 username_tag = (test_environment.
19 passwords_tree.find(".//*[@name='%s']/username" % name))
20 if (username_tag != None):
21 self.username = username_tag.text
22 if password == None:
23 password_tag = (test_environment.
24 passwords_tree.find(".//*[@name='%s']/password" % name))
25 if (password_tag != None):
26 self.password = password_tag.text
27 self.login_actions = []
28 self.logout_actions = []
29 self.internals_folder = ("file:///usr/local/google/home/rchtara/chrome"
vabr (Chromium) 2014/05/08 13:53:45 Please add a TODO for removing this as soon as the
rchtara 2014/05/14 11:58:04 Done.
30 "/python/passwordinternals/internalmock/")
31 self.internals_file = ""
32 self.username_not_auto = username_not_auto
33 self.test_environment = test_environment
34
35 def AddLoginAction(self, action_type, param):
36 self.login_actions.append(Action(action_type, param, self))
37
38 def AddLogoutAction(self, action_type, param):
39 self.logout_actions.append(Action(action_type, param, self))
40
41 def Url(self):
42 for action in self.login_actions:
43 if (action.action_type == "goto"):
44 return action.param
45 return ""
46
47 def LoginWhenAutofilled(self):
48 for action in self.login_actions:
49 action.DoAutofilled(self.driver)
50
51 def LoginWhenNotAutofilled(self):
52 for action in self.login_actions:
53 action.DoNotAutofilled(self.driver)
54
55 def Logout(self):
56 for action in self.logout_actions:
57 action.Do(self.driver)
58
59 def RemoveAllPasswords(self, urls):
60 url_to_remove = self.Url()
61 if (url_to_remove != ""):
62 i = 0
63 for current_url in urls:
64 if current_url in url_to_remove or url_to_remove in current_url:
vabr (Chromium) 2014/05/08 13:53:45 You use the x in y or y in x pattern quite often f
rchtara 2014/05/14 11:58:04 Done.
65 self.driver.execute_script(
66 "document.querySelectorAll('#saved-passwords-list "
67 ".row-delete-button')[%d].click()" % i)
68 time.sleep(1) # wait until command is executed
vabr (Chromium) 2014/05/08 13:53:45 nit: please start the comment with a capital lette
rchtara 2014/05/14 11:58:04 Done.
69 else:
70 i = i + 1
71
72 def SwitchToInternals(self):
73 self.driver.switch_to_window(self.test_environment.internals_window)
74 self.driver.get(self.internals_folder + self.internals_file)
75
76 def SwitchFromInternals(self):
77 self.driver.switch_to_window(self.test_environment.websitewindow)
78
79 """ TestsTools """
80
81 def UrlExists(self, id, msg):
82 url = self.Url()
83 elments = self.driver.find_element_by_id(id)
84 urls = elments.find_elements_by_class_name("url")
85 match = False
86 for u in urls:
87 if (u.text in url or url in u.text or
88 u.text in self.name or self.name in u.text):
89 match = True
90 break
91 assert match, msg
92
93 def UrlNotExists(self, id, msg):
94 url = self.Url()
95 elments = self.driver.find_element_by_id(id)
96 urls = elments.find_elements_by_class_name("url")
97 match = False
98 for u in urls:
99 if u.text in url or url in u.text:
100 match = True
101 break
102 assert match == False, msg
103
104 """ Tests """
105
106 def WrongLoginTest(self):
107 name = self.name
108 print "\nWrong Login Test for %s \n" % name
109 p = self.password
vabr (Chromium) 2014/05/08 13:53:45 Please use more descriptive variable names. Here,
rchtara 2014/05/14 11:58:04 Done.
110 self.password = self.password + "1"
111 self.LoginWhenNotAutofilled()
112 self.password = p
113 self.internals_file = "wrongpass.html"
114 self.SwitchToInternals()
115 self.UrlExists("unsuccessfullogins", ("Error: password manager "
116 "thinks that a login with wrong "
117 "password was successful for the "
118 "following website : %s \n" % name))
119 self.UrlNotExists(
120 "showedprompts",
121 "Error: prompt is shown for a "
122 "wrong password for the following website : %s \n" % name)
123 self.SwitchFromInternals()
124
125 def SuccessfulLoginTest(self):
126 name = self.name
127 print "\nSuccessful Login Test for %s \n" % name
128 self.LoginWhenNotAutofilled()
129 time.sleep(2)
130 self.internals_file = "rightpass.html"
131 self.SwitchToInternals()
132 self.UrlExists(
133 "successfullogins",
134 "Error: password manager "
135 "hasn't detected a successful login for the following website : %s"
136 " \n"
137 % name)
138 self.UrlExists(
139 "showedprompts",
140 "Error: prompt is not shown for a "
141 "right password for the following website : %s \n" % name)
142 self.SwitchFromInternals()
143 self.Logout()
144
145 def SuccessfulLoginWithAutofilledPasswordTest(self):
146 name = self.name
147 print "\nSuccessful Login With Autofilled Password Test %s \n" % name
148 self.LoginWhenAutofilled()
149 time.sleep(2)
150 self.internals_file = "rightpass.html"
151 self.SwitchToInternals()
152 self.UrlExists(
153 "successfullogins",
154 "Error: password manager "
155 "hasn't detected a successful login for the following website : %s"
156 " \n"
157 % name)
158 self.UrlExists(
159 "showedprompts",
160 "Error: prompt is not shown for a "
161 "right password for the following website : %s \n" % name)
162 self.SwitchFromInternals()
163 self.Logout()
164
165 def SuccessfulLoginAfterDeletionTest(self):
166 name = self.name
167 print "\nSuccessful Login After Deletion Test for %s \n" % name
168 self.LoginWhenNotAutofilled()
169 self.internals_file = "rightpass.html"
170 self.SwitchToInternals()
171 self.UrlExists(
172 "successfullogins",
173 "Error: password manager "
174 "hasn't detected a successful login for the following website : %s"
175 " \n"
176 % name)
177 self.UrlExists(
178 "showedprompts",
179 "Error: prompt is not shown for a "
180 "right password for the following website : %s \n" % name)
181 self.SwitchFromInternals()
182 self.Logout()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698