source: devel/testlink/automation/src/test/java/br/gov/serpro/cte/common/ExpressoMailTestCase.java @ 3543

Revision 3543, 16.4 KB checked in by luiz-fernando, 13 years ago (diff)

Ticket #1402 - Campos, mensagens e valores estao em properties

Line 
1package br.gov.serpro.cte.common;
2
3import org.apache.commons.lang.StringUtils;
4
5/**
6 * Contem metodos comuns a todos os casos de teste do ExpressoMail.
7 *
8 * @author L.F.Estivalet (Serpro)
9 *
10 *         Created on Nov 12, 2010 at 11:52:43 AM
11 *
12 */
13public class ExpressoMailTestCase extends BaseTestCase {
14
15        /**
16         * Entra no modulo ExpressoMail.
17         *
18         * @throws Exception
19         */
20        public void enterExpressoMail() throws Exception {
21                super.login();
22                selenium.open("/expressoMail1_2/index.php");
23                selenium.waitForPageToLoad("30000");
24                // Espera a caixa de entrada carregar.
25                this.waitForElement(getCampo("email.div.principal"));
26        }
27
28        /**
29         * Procura um email pelo seu assunto.
30         *
31         * @param subject
32         *            Assunto a ser procurado.
33         * @return "id" do email.
34         */
35        public String findEmailIdBySuject(String subject) {
36                return findEmailIdBySuject(subject, false);
37        }
38
39        /**
40         * Procura um email pelo seu assunto.
41         *
42         * @param subject
43         *            Assunto a ser procurado.
44         * @param select
45         *            Se email encontrado, deseja seleciona-lo?
46         * @return "id" do email.
47         */
48        public String findEmailIdBySuject(String subject, boolean select) {
49                String html = selenium.getHtmlSource();
50                String part1 = StringUtils.substringBefore(html, subject);
51                int start = StringUtils.lastIndexOf(part1, "id=\"") + 4;
52                int last = StringUtils.indexOf(part1, "\">", start);
53                String id = StringUtils.substring(part1, start, last);
54                if (select) {
55                        // Marca checkbox correspondente ao id da mensagem.
56                        selenium.click("check_box" + id.substring(1));
57                }
58
59                // Retorna somente o "id" do email.
60                // id = id.substring(id.lastIndexOf("_"));
61
62                return id;
63        }
64
65        private void writeBody(String text) {
66                selenium.getEval("selenium.browserbot.getCurrentWindow().document.getElementById('body_1').contentWindow.document.body.innerHTML='"
67                                + text + "';");
68        }
69
70        /**
71         * Cria um novo email informando destinatario, assunto e conteudo do email.
72         *
73         * @param to
74         *            Destinatário (campo Para:).
75         * @param subject
76         *            Assunto do email.
77         * @param text
78         *            Conteudo do email.
79         * @throws Exception
80         */
81        public void composeEmail(String to, String subject, String text)
82                        throws Exception {
83                this.composeEmail();
84                selenium.type(getCampo("email.para.1"), to);
85                selenium.type(getCampo("email.assunto.1"), subject);
86                this.writeBody(text);
87
88        }
89
90        /**
91         * Cria um novo email informando destinatario, assunto e conteudo do email.
92         *
93         * @param to
94         *            Destinatário (campo Para:).
95         * @param subject
96         *            Assunto do email.
97         * @throws Exception
98         */
99        public void composeEmail(String to, String subject) throws Exception {
100                this.composeEmail();
101                selenium.type(getCampo("email.para.1"), to);
102                selenium.type(getCampo("email.assunto.1"), subject);
103        }
104
105        /**
106         * Cria um novo email.
107         *
108         * @throws Exception
109         */
110        public void composeEmail() throws Exception {
111                this.enterExpressoMail();
112                selenium.click(getCampo("email.nova.mensagem"));
113                super.waitForElement(getCampo("email.para.1"));
114        }
115
116        /**
117         * @param to
118         *            Destinatário (campo Para:).
119         * @param subject
120         *            Assunto do email.
121         * @param text
122         *            Conteudo do email.
123         * @param remove
124         *            Se <code>true</code>, remove o logo apos o envio da Caixa de
125         *            Entrada, itens enviados e lixeira. Simula o envio de email ao
126         *            pressionar o botao Enviar.
127         */
128        public void sendEmail(String to, String subject, String text, boolean remove)
129                        throws Exception {
130                this.composeEmail(to, subject, text);
131                selenium.click(getCampo("email.enviar.email.1"));
132                this.assertMessage(getCampo("email.mensagem"),
133                                getMensagem("email.enviado"));
134                if (remove) {
135                        this.removeEmail(subject);
136                }
137        }
138
139        /**
140         * Pressiona opcao para enviar o email.
141         */
142        public void sendEmail() {
143                selenium.click(getCampo("email.enviar.email.1"));
144        }
145
146        /**
147         * Procura o email pelo assunto e abre para leitura.
148         *
149         * @param subject
150         *            Assunto do email.
151         * @return "id" do email.
152         * @throws Exception
153         */
154        public String readEmail(String subject) throws Exception {
155                this.enterExpressoMail();
156                String id = this.findEmailIdBySuject(subject);
157                selenium.click(id);
158                // Espera ate aba da mensagem abrir.
159                super.waitForElement(getCampo("email.aba.mensagem"));
160
161                // Retorna somente o "id" do email.
162                id = id.substring(id.lastIndexOf("_"));
163
164                return id;
165        }
166
167        /**
168         * Apaga o email previamente selecionado.
169         */
170        public void deleteEmail() throws Exception {
171                selenium.click(getCampo("email.apagar.email"));
172                this.assertMessage(getCampo("email.mensagem"),
173                                getMensagem("apagar.uma.mensagem"));
174        }
175
176        /**
177         * Apaga o email de acordo com o assunto.
178         *
179         * @param subject
180         *            Assunto a ser pesquisado. No caso da pesquisa encontrar varios
181         *            emails, apenas o primeiro sera selecionado e apagado.
182         * @throws Exception
183         */
184        public void deleteEmail(String subject) throws Exception {
185                this.findEmailIdBySuject(subject, true);
186                this.deleteEmail();
187        }
188
189        /**
190         * Apaga email de uma pasta de acordo com o assunto.
191         *
192         * @param folder
193         *            Pasta a ser pesquisada.
194         * @param subject
195         *            Assunto a ser pesquisado.
196         * @throws Exception
197         */
198        public void deleteEmail(String folder, String subject) throws Exception {
199                // Apaga email da pasta enviados.
200                this.openFolder(folder);
201                // Espera pelo primeiro checkbox da pasta aparecer.
202                super.waitForElement(getCampo("email.checkbox.email"));
203                this.deleteEmail(subject);
204                this.waitForElement(getCampo("email.msg.info"));
205                assertTrue(getMensagem("pasta.vazia").equals(
206                                selenium.getText(getCampo("email.msg.info"))));
207        }
208
209        /**
210         * Remove o email de acordo com o assunto da Caixa de Entrada, dos itens
211         * enviados e da lixeira.
212         *
213         * @param subject
214         *            Assunto a ser pesquisado. No caso da pesquisa encontrar varios
215         *            emails, apenas o primeiro sera selecionado e apagado.
216         * @throws Exception
217         */
218        public void removeEmail(String subject) throws Exception {
219                // Faz logout para dar tempo para o email chegar na Caixa de Entrada.
220                super.logout();
221
222                // Entra novamente no ExpressoMail e apaga o email da Caixa de Entrada.
223                this.enterExpressoMail();
224                this.deleteEmail(subject);
225
226                // Apaga email da pasta enviados.
227                this.deleteEmail(getCampo("email.pasta.enviados"), subject);
228
229                // Limpa a lixeira.
230                super.logout();
231                this.enterExpressoMail();
232                this.cleanupTrash();
233        }
234
235        /**
236         * Limpa a lixeira.
237         *
238         * @throws Exception
239         */
240        public void cleanupTrash() throws Exception {
241                this.openFolder(getCampo("email.pasta.lixeira"));
242                selenium.click(getCampo("email.limpar.lixeira"));
243                assertTrue(selenium.getConfirmation().matches(
244                                getMensagem("limpar.lixeira")));
245                super.waitForElement(getCampo("email.mensagem"));
246                assertEquals(getMensagem("lixeira.limpa"),
247                                selenium.getText(getCampo("email.mensagem")));
248                // Garantir que nao tem nenhum email na lixeira.
249                assertEquals("0", this.getTotalEmails());
250        }
251
252        /**
253         * @return Numero de emails na pasta selecionada.
254         */
255        public int getTotalEmails() {
256                return Integer
257                                .valueOf(selenium.getText(getCampo("email.total.emails")));
258        }
259
260        /**
261         * @return Ids de todos os emails da pasta selecionada.
262         */
263        public String[] getEmailIds() {
264                String[] ids = new String[this.getTotalEmails()];
265                for (int i = 1; i <= this.getTotalEmails(); i++) {
266                        String id = selenium.getAttribute(getCampo("email.id", i));
267                        ids[i - 1] = id.substring(id.lastIndexOf("_") + 1);
268                }
269                return ids;
270        }
271
272        /**
273         * @param emailId
274         *            Id do email.
275         * @return <code>true</code> se email importante, <code>false</code> caso
276         *         contrario.
277         */
278        public boolean isImportant(String emailId) {
279                return selenium.isElementPresent(getCampo("email.id.importante",
280                                emailId));
281        }
282
283        /**
284         * @param emailId
285         *            Id do email.
286         * @return <code>true</code> se email lido, <code>false</code> caso
287         *         contrario.
288         */
289        public boolean isRead(String emailId) {
290                return "Lida".equals(selenium.getAttribute(getCampo("email.id.lido",
291                                emailId)));
292        }
293
294        /**
295         * Abre uma pasta de email especifica.
296         *
297         * @param folder
298         *            Pasta de email a ser aberta.
299         * @throws Exception
300         */
301        public void openFolder(String folder) throws Exception {
302                selenium.click(folder);
303                this.waitForElement(getCampo("email.div.principal"));
304        }
305
306        /**
307         * Responder email.
308         *
309         * @param id
310         *            Id do email a ser respondido.
311         * @throws Exception
312         */
313        public void replyEmail(String id) throws Exception {
314                // Clicar na opcao para responder.
315                selenium.click(getCampo("email.responder.email"));
316                this.reply(id);
317        }
318
319        /**
320         * Responder email a todos destinatarios.
321         *
322         * @param id
323         *            Id do email a ser respondido.
324         * @throws Exception
325         */
326        public void replyAllEmail(String id) throws Exception {
327                // Clicar na opcao para responder.
328                selenium.click(getCampo("email.responder.todos", id));
329                selenium.click(getCampo("email.id.responder.todos", id));
330
331                this.reply(id);
332        }
333
334        /**
335         * Responder email a todos destinatarios sem historico.
336         *
337         * @param id
338         *            Id do email a ser respondido.
339         * @throws Exception
340         */
341        public void replyAllEmailWithoutHistory(String id) throws Exception {
342                // Clicar na opcao para responder.
343                selenium.click(getCampo("email.responder.todos.sem.historico", id));
344                selenium.click(getCampo("email.id.responder.todos.sem.historico", id));
345
346                this.reply(id);
347        }
348
349        /**
350         * Responder email sem historico.
351         *
352         * @param id
353         *            Id do email a ser respondido.
354         * @throws Exception
355         */
356        public void replyEmailWithoutHistory(String id) throws Exception {
357                // Clicar na opcao para responder.
358                selenium.click(getCampo("email.id.responder.sem.historico", id));
359                this.reply(id);
360        }
361
362        /**
363         * Responder email, serve apenas para clicar na opcao "Enviar".
364         *
365         * @param id
366         *            Id do email a ser respondido.
367         * @throws Exception
368         */
369        private void reply(String id) throws Exception {
370                // Espera carregar aba para responder email.
371                super.waitForElement(getCampo("email.id.para", id));
372                selenium.click(getCampo("email.id.enviar", id));
373        }
374
375        /**
376         * Encaminha uma mensagem.
377         *
378         * @param id
379         *            Id da mensagem a ser encaminhada
380         * @param to
381         *            Destinatario
382         * @throws Exception
383         */
384        public void forwardEmail(String id, String to) throws Exception {
385                // Clicar na opcao para encaminhar.
386                selenium.click(getCampo("email.encaminhar.email"));
387
388                // Espera carregar aba para encaminhar email.
389                super.waitForElement(getCampo("email.id.para", id));
390                selenium.type(getCampo("email.id.para", id), to);
391
392                selenium.click(getCampo("email.id.enviar", id));
393        }
394
395        // public enum Mensagem {
396        // PASTA_VAZIA("Esta pasta está vazia"), //
397        // SEM_DESTINATARIO(
398        // "Você deve fornecer pelo menos um endereço de destinatário de email."),
399        // //
400        // SEM_ASSUNTO("^Enviar esta mensagem sem assunto[\\s\\S]$"), //
401        // EMAIL_ENVIADO("Sua mensagem foi enviada e salva."), //
402        // DESTINATARIO_INVALIDO(
403        // "Erro de SMTP: Os endereços de destinatário a seguir falharam: bla@"), //
404        // SALVA_RASCUNHO(
405        // "Sua mensagem foi salva como rascunho na pasta Rascunhos."), //
406        // LIMPAR_LIXEIRA(
407        // "^Você tem certeza que deseja limpar sua lixeira[\\s\\S]$"), //
408        // LIXEIRA_LIMPA("Sua pasta Lixeira foi limpa."), //
409        // APAGAR_UMA_MENSAGEM("Mensagem movida para a pasta Lixeira"), //
410        // MARCAR_IMPORTANTE("Mensagem marcada como Importante"), //
411        // MARCAR_NORMAL("Mensagem marcada como Normal"), //
412        // MARCAR_NAO_LIDO("Mensagem marcada como Não lida"), //
413        // APAGAR_MENSAGEM("Mensagens movidas para pasta Lixeira");
414        // private String value;
415        //
416        // private Mensagem(String value) {
417        // this.value = value;
418        // }
419        //
420        // public String getValue() {
421        // return value;
422        // }
423        //
424        // };
425        //
426        // public enum Campo {
427        // ADICIONAR_ANEXO("link=exact:Anexos: adicionar+"), //
428        // ANEXO_1("inputFile_1_1"), //
429        // ANEXO_2("inputFile_1_2"), //
430        // NOVA_MENSAGEM(
431        // "//table[@id='folders_tbl']/tbody/tr[1]/td/table/tbody/tr[2]/td/div/span"),
432        // //
433        // PARA_1("to_1"), //
434        // ASSUNTO_1("subject_1"), //
435        // ENVIAR_EMAIL_1("send_button_1"), //
436        // CHECKBOX_EMAIL(
437        // "//div[@id='exmail_main_body']/div[@id='content_id_0']/div[@id='divScrollMain_0']/table[@id='table_box']/tbody[@id='tbody_box']/tr[1]/td[1]/input[1]"),
438        // //
439        // CONFIRMACAO_LEITURA("return_receipt_1"), //
440        // IMPORTANTE(
441        // "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/span[3]"),
442        // //
443        // NORMAL(
444        // "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/span[3]"),
445        // //
446        // NAO_LIDO(
447        // "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/span[2]"),
448        // //
449        // IMPORTANTE_CHECKBOX("important_message_1"), //
450        // COPIA_1("a_cc_link_1"), //
451        // SALVAR("save_message_options_1"), //
452        // COPIA_CAMPO_1("cc_1"), //
453        // COPIA_OCULTA_1("a_cco_link_1"), //
454        // COPIA_OCULTA_CAMPO_1("cco_1"), //
455        // PASTA_LIXEIRA("lINBOX/Trashtree_folders"), //
456        // PASTA_ENVIADOS("lINBOX/Senttree_folders"), //
457        // LIMPAR_LIXEIRA("empty_trash"), //
458        // SELECIONAR_TODOS_EMAILS("chk_box_select_all_messages"), //
459        // ENCAMINHAR_EMAIL(
460        // "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[3]/span[3]"),
461        // //
462        // RESPONDER_EMAIL(
463        // "//div[@id='exmail_main_body']/div[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td[3]/span[5]"),
464        // //
465        // MOVER_EMAIL("//span[@onclick='wfolders.makeWindow(\"\",\"move_to\")']"),
466        // //
467        // MSG_INFO("msg_info"), //
468        // MENSAGEM("em_div_write_msg");
469        // private String value;
470        //
471        // private Campo(String value) {
472        // this.value = value;
473        // }
474        //
475        // public String getValue() {
476        // return value;
477        // }
478        //
479        // };
480        //
481        // public enum Valor {
482        // EMAIL_TESTE_1("luiz-fernando.estivalet@cte.serpro.gov.br"), //
483        // EMAIL_TESTE_2("luiz.f.estivalet@gmail.com"), //
484        // EMAIL_TESTE_3("luizfernando_estivalet@yahoo.com"), //
485        // EMAIL_INVALIDO("bla"), //
486        // EMAIL_TESTE_MULTIPLOS(
487        // "luiz-fernando.estivalet@cte.serpro.gov.br, luizfernando_estivalet@yahoo.com"),
488        // //
489        // ANEXO_1("/home/luiz/Desktop/arquivo.txt"), //
490        // ANEXO_2("/home/luiz/Desktop/arquivo2.txt"), //
491        // ASSUNTO("[SELENIUM] Teste envio mensagem"), //
492        // ASSUNTO_SALVAR("[SELENIUM] Teste salvar mensagem"), //
493        // ASSUNTO_EMAIL_INVALIDO(
494        // "[SELENIUM] Teste envio mensagem com destinatário inválido"), //
495        // ASSUNTO_SEM_DESTINATARIO(
496        // "[SELENIUM] Teste envio mensagem sem destinatário"), //
497        // ASSUNTO_MULTIPLOS_DESTINATARIOS(
498        // "[SELENIUM] Teste múltiplos destinatários"), //
499        // ASSUNTO_ANEXO("[SELENIUM] Teste envio mensagem com anexo"), //
500        // ASSUNTO_IMPORTANTE("[SELENIUM] Teste envio mensagem importante"), //
501        // ASSUNTO_MULTIPLOS_ANEXOS("[SELENIUM] Teste com múltiplos anexos"), //
502        // ASSUNTO_CONFIRMACAO_LEITURA(
503        // "[SELENIUM] Teste com confirmação de leitura"), //
504        // ASSUNTO_COPIA("[SELENIUM] Teste envio mensagem com cópia"), //
505        // ASSUNTO_COPIA_OCULTA("[SELENIUM] Teste envio mensagem com cópia oculta"),
506        // ASSUNTO_SOMENTE_COPIA(
507        // "[SELENIUM] Teste envio mensagem somente cópia"), //
508        // ASSUNTO_SOMENTE_COPIA_OCULTA(
509        // "[SELENIUM] Teste mensagem somente cópia oculta"), //
510        // TEXTO_EMAIL(
511        // "<p>Email enviado a partir do Selenium!</p><p>Favor ignorar!</p>"), //
512        // TEXTO_EMAIL_CONFIRMACAO_LEITURA(
513        // "<p>Email enviado a partir do Selenium!</p><p>Teste de confirmação de leitura</p><p>Favor ignorar!</p>"),
514        // //
515        // TEXTO_EMAIL_COPIA_OCULTA(
516        // "<p>Email enviado a partir do Selenium!</p><p>Teste de cópia oculta</p><p>Favor ignorar!</p>"),
517        // //
518        // TEXTO_EMAIL_COPIA(
519        // "<p>Email enviado a partir do Selenium!</p><p>Teste de cópia</p><p>Favor ignorar!</p>"),
520        // //
521        // TEXTO_EMAIL_IMPORTANTE(
522        // "<p>Email enviado a partir do Selenium!</p><p>Teste de email importante</p><p>Favor ignorar!</p>"),
523        // //
524        // TEXTO_EMAIL_MULTIPLOS_ANEXOS(
525        // "<p>Email enviado a partir do Selenium!</p><p>Teste de email com múltiplos anexos</p><p>Favor ignorar!</p>"),
526        // //
527        // TEXTO_EMAIL_MULTIPLOS_DESTINATARIOS(
528        // "<p>Email enviado a partir do Selenium!</p><p>Teste de email com múltiplos destinatários</p><p>Favor ignorar!</p>"),
529        // //
530        // TEXTO_EMAIL_SEM_ASSUNTO(
531        // "<p>Email enviado a partir do Selenium!</p><p>Teste de email sem assunto</p><p>Favor ignorar!</p>"),
532        // //
533        // TEXTO_EMAIL_SALVO(
534        // "<p>Email enviado a partir do Selenium!</p><p>Teste para salvar um email na pasta rascunhos</p><p>Favor ignorar!</p>"),
535        // //
536        // TEXTO_EMAIL_ANEXO(
537        // "<p>Email enviado a partir do Selenium!</p><p>Teste de anexo</p><p>Favor ignorar!</p>");
538        // private String value;
539        //
540        // private Valor(String value) {
541        // this.value = value;
542        // }
543        //
544        // public String getValue() {
545        // return value;
546        // }
547        //
548        // };
549
550}
Note: See TracBrowser for help on using the repository browser.