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

Side by Side Diff: chrome/test/functional/chromeos_txt_msg_functional.py

Issue 23359003: Eliminate unused PYAUTO tests and TestingAutomationProvider methods (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « chrome/test/functional/chromeos_retail_mode.py ('k') | chrome/test/functional/chromeos_vpn.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 from email.MIMEText import MIMEText
7 import logging
8 import os
9 import re
10 import smtplib
11 import sys
12 import urllib
13
14 import pyauto_functional
15 import pyauto
16
17 sys.path.append(os.path.join(pyauto.PyUITest.DataDir(), 'pyauto_private',
18 'chromeos', 'network'))
19 from gsm_sim_info import SIM, PROVIDER_TXT_SERVER
20
21
22 class ChromeosTxtMsgSanity(pyauto.PyUITest):
23 """Tests for ChromeOS text message handling"""
24
25 def _SendText(self, mail_server, sender, phone_number,
26 mobile_provider, msg):
27 """Sends a text message to a specific phone
28
29 Args:
30 mail_server: An SMTP instance.
31 sender: Sender's email address.
32 phone_number: The phone number the txt message is directed to.
33 mobile_provider: A cellular provider defined in
34 gsm_sim_info.PROVIDER_TXT_SERVER
35 msg: The message to be sent.
36
37 """
38 recipient = ('%s@%s' % (phone_number,
39 PROVIDER_TXT_SERVER[mobile_provider]))
40 self._SendMail(mail_server, sender, recipient, None, msg)
41
42 def _SendMail(self, mail_server, sender, recipients,
43 msg_subject, msg_body):
44 """Sends an email using the provided smtp connection
45
46 Args:
47 mail_server: An SMTP instace.
48 sender: Senders email address.
49 recipients: Recipients email address.
50 msg_subject: The subject line of the email.
51 msg_body: The body of the email.
52 """
53 msg = MIMEText(msg_body)
54 msg['To'] = recipients
55 msg['From'] = sender
56 if msg_subject:
57 msg['Subject'] = msg_subject
58 mail_server.sendmail(sender, recipients, msg.as_string())
59
60 def _GetGmailServerInstance(self, email, password):
61 """Creates an SMTP connection with the gmail mail server
62
63 Args:
64 email: A gmail address.
65 password: The password for the gmail address.
66
67 Returns:
68 An SMTP connection instance.
69 """
70 mail_server = smtplib.SMTP('smtp.gmail.com', 587)
71 mail_server.starttls()
72 mail_server.ehlo()
73 mail_server.login(email, password)
74 return mail_server
75
76 def _GetIMSI(self):
77 """Obtains the IMSI by running modem status
78
79 Returns:
80 IMSI of device
81 """
82 modem_status = os.popen('modem status').read()
83 imsi = re.search('IMSI:\s(\d+)', modem_status)
84 if not imsi:
85 raise Exception('GSM Modem not detected in device')
86 return imsi.groups()[0]
87
88 def _GetSIMInfo(self):
89 """Returns information necessary to send messages
90
91 Returns:
92 A dictionary with the following format
93 {
94 'mdn' : <phone number>,
95 'carrier': <carrier name>
96 }
97 """
98 imsi = self._GetIMSI()
99 sim_info = SIM.get(imsi, {})
100 if not sim_info:
101 raise Exception('Phone number for sim with IMSI=%s is not '
102 'recognized within config file' % imsi)
103 return sim_info
104
105 def setUp(self):
106 # Connect to cellular service if not already connected.
107 pyauto.PyUITest.setUp(self)
108 connected_cellular = self.NetworkScan().get('connected_cellular')
109 if not connected_cellular:
110 self.ConnectToCellularNetwork()
111 if not self.NetworkScan().get('connected_cellular'):
112 raise Exception('Could not connect to cellular service.')
113 else:
114 logging.debug('Already connected to cellular service %s' %
115 connected_cellular)
116
117 # Obtain sender, recipient, and SMTP instance.
118 self.credentials = self.GetPrivateInfo()['test_account_with_smtp']
119 self.sim = self._GetSIMInfo()
120 self.mail_server = self._GetGmailServerInstance(
121 self.credentials['username'],
122 self.credentials['password'])
123
124 def tearDown(self):
125 self.DisconnectFromCellularNetwork()
126 self.mail_server.close()
127 for window in range(len(self.GetActiveNotifications())):
128 self.CloseNotification(window)
129 pyauto.PyUITest.tearDown(self)
130
131 def testTxtMsgNotification(self):
132 """Notifications are displayed for text messages"""
133 msg = 'This is the text message'
134 self._SendText(self.mail_server, self.credentials['username'],
135 self.sim['mdn'], self.sim['carrier'], msg)
136 self.WaitForNotificationCount(1)
137 notification_result = self.GetActiveNotifications()[0]['content_url']
138 self.assertTrue(re.search(urllib.pathname2url(msg),
139 notification_result), 'Invalid message was displayed. '
140 'Expected "%s" but did not find it"' % msg)
141
142 def testLongTxtMsgNotification(self):
143 """Notifications are displayed for long (>160 char) text messages."""
144 long_msg = 'This is a really long message with spaces. Testing to '\
145 'make sure that chromeos is able to catch it and '\
146 'create a notifications for this message.'
147 self._SendText(self.mail_server, self.credentials['username'],
148 self.sim['mdn'], self.sim['carrier'], long_msg)
149 self.WaitForNotificationCount(1)
150
151 # GetActiveNotifications throws an exception if the text message never
152 # arrives.
153 txt_msg = self.GetActiveNotifications()[0]
154 txt_msg = txt_windows[0]['content_url']
155 self.assertTrue(re.search(urllib.pathname2url(long_msg),
156 txt_msg), 'Invalid message was displayed. '
157 'Expected "%s" but did not find it"' % long_msg)
158
159
160 if __name__ == '__main__':
161 pyauto_functional.Main()
OLDNEW
« no previous file with comments | « chrome/test/functional/chromeos_retail_mode.py ('k') | chrome/test/functional/chromeos_vpn.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698