@Override protected String getCallbackUrl(final WebClient webClient, final HtmlPage authorizationPage) throws Exception { webClient.waitForBackgroundJavaScript(5000); HtmlForm form = authorizationPage.getForms().get(0); final HtmlTextInput login = form.getInputByName("login_email"); login.setValueAttribute("*****@*****.**"); final HtmlPasswordInput passwd = form.getInputByName("login_password"); passwd.setValueAttribute("testpwdscribeup"); HtmlButton submit = form.getButtonByName(""); HtmlPage confirmPage = submit.click(); confirmPage = (HtmlPage) confirmPage.refresh(); webClient.waitForBackgroundJavaScript(5000); form = confirmPage.getForms().get(0); HtmlButton submit2 = form.getButtonByName("allow_access"); final HtmlPage callbackPage = submit2.click(); final String callbackUrl = callbackPage.getUrl().toString(); logger.debug("callbackUrl : {}", callbackUrl); return callbackUrl; }
@JsfTest( value = JSF_2_2_0_M02, excludes = {WEBLOGIC_12_1_4}) @Test public void testFlash() throws Exception { // Get the first page HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml"); String pageText = page.asXml(); // (?s) is an "embedded flag expression" for the "DOTALL" operator. // It says, "let . match any character including line terminators." // Because page.asXml() returns a big string with lots of \r\n chars // in it, we need (?s). // the page contains a table tag with a frame attribute whose value is hsides. // the page contains the following span, with the following id, with no contents assertTrue(pageText.matches("(?s)(?m).*<span.*id=\"fooValueId\">\\s*</span>.*")); // Click the reload button HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("reload"); page = (HtmlPage) button.click(); pageText = page.asXml(); // verify that fooValue is there, indicating that it's been stored in the flash assertTrue(pageText.matches("(?s)(?m).*<span.*id=\"fooValueId\">\\s*fooValue\\s*</span>.*")); // Get the first page, again page = webClient.getPage(webUrl + "faces/index.xhtml"); // the page contains the following span, with the following id, with no contents // meaning the flash has no value for foo // assertTrue(pageText.matches("(?s)(?m).*<span.*id=\"fooValueId\">\\s*</span>.*")); // fill in "addMessage" in the textBox HtmlTextInput text = (HtmlTextInput) page.getHtmlElementById("inputText"); text.setValueAttribute("addMessage"); // go to the next page button = (HtmlSubmitInput) page.getHtmlElementById("next"); page = (HtmlPage) button.click(); pageText = page.asXml(); // See that it has fooValue assertTrue( pageText.matches("(?s)(?m).*<span.*id=\"flash2FooValueId\">\\s*fooValue\\s*</span>.*")); // See that it has barValue assertTrue( pageText.matches("(?s)(?m).*<span.*id=\"flash2BarValueId\">\\s*barValue\\s*</span>.*")); // See that it has the message assertTrue(-1 != pageText.indexOf("test that this persists across the redirect")); // click the reload button button = (HtmlSubmitInput) page.getHtmlElementById("reload"); page = (HtmlPage) button.click(); pageText = page.asXml(); // See that it doesn't have the message assertTrue(-1 == pageText.indexOf("test that this persists across the redirect")); // Click the back button button = (HtmlSubmitInput) page.getHtmlElementById("back"); page = (HtmlPage) button.click(); // Click the next button button = (HtmlSubmitInput) page.getHtmlElementById("next"); page = (HtmlPage) button.click(); pageText = page.asXml(); // See that the page does not have the message assertTrue(-1 == pageText.indexOf("test that this persists across the redirect")); // Click the next button button = (HtmlSubmitInput) page.getHtmlElementById("next"); page = (HtmlPage) button.click(); pageText = page.asXml(); // See that it has banzai assertTrue( pageText.matches("(?s)(?m).*<span.*id=\"flash3NowValueId\">\\s*banzai\\s*</span>.*")); // Click the next button button = (HtmlSubmitInput) page.getHtmlElementById("next"); page = (HtmlPage) button.click(); pageText = page.asXml(); // See that it still has banzai assertTrue( pageText.matches("(?s)(?m).*<span.*id=\"flash4BuckarooValueId\">\\s*banzai\\s*</span>.*")); // click the link HtmlAnchor link = (HtmlAnchor) page.getElementById("link"); page = link.click(); // on flash5 link = (HtmlAnchor) page.getElementById("link"); page = link.click(); assertTrue(page.asText().contains("Value is 1.")); // click the link on the next page link = (HtmlAnchor) page.getElementById("link"); page = link.click(); assertTrue(page.asText().contains("Value is 1.")); // click the link on the same page link = (HtmlAnchor) page.getElementById("link"); page = link.click(); assertTrue(page.asText().contains("Value is 1.")); // click the link on the same page link = (HtmlAnchor) page.getElementById("link"); page = link.click(); assertTrue(page.asText().contains("Value is 1.")); link = (HtmlAnchor) page.getElementById("link2"); page = link.click(); assertTrue(page.asText().contains("Value is 1.")); link = (HtmlAnchor) page.getElementById("link"); page = link.click(); // it went away because there was no keep assertTrue(page.asText().contains("Value is .")); page = webClient.getPage(webUrl + "faces/flash9.xhtml"); text = (HtmlTextInput) page.getHtmlElementById("valueA"); text.setValueAttribute("a value"); text = (HtmlTextInput) page.getHtmlElementById("valueB"); text.setValueAttribute("b value"); text = (HtmlTextInput) page.getHtmlElementById("valueC"); text.setValueAttribute("c value"); button = (HtmlSubmitInput) page.getHtmlElementById("keep"); page = (HtmlPage) button.click(); pageText = page.asText(); assertTrue(pageText.contains("valueA: a value")); assertTrue(pageText.contains("valueB: b value")); assertTrue(pageText.contains("valueC: c value")); link = (HtmlAnchor) page.getElementById("flash9"); page = link.click(); text = (HtmlTextInput) page.getHtmlElementById("valueA"); assertEquals(text.getValueAttribute(), "a value"); text = (HtmlTextInput) page.getHtmlElementById("valueB"); assertEquals(text.getValueAttribute(), "b value"); text = (HtmlTextInput) page.getHtmlElementById("valueC"); assertEquals(text.getValueAttribute(), "c value"); page = webClient.getPage(webUrl + "faces/flash9.xhtml"); text = (HtmlTextInput) page.getHtmlElementById("valueA"); assertEquals(text.getValueAttribute(), ""); text = (HtmlTextInput) page.getHtmlElementById("valueB"); assertEquals(text.getValueAttribute(), ""); text = (HtmlTextInput) page.getHtmlElementById("valueC"); assertEquals(text.getValueAttribute(), ""); text = (HtmlTextInput) page.getHtmlElementById("valueA"); text.setValueAttribute("A value"); text = (HtmlTextInput) page.getHtmlElementById("valueB"); text.setValueAttribute("B value"); text = (HtmlTextInput) page.getHtmlElementById("valueC"); text.setValueAttribute("C value"); button = (HtmlSubmitInput) page.getHtmlElementById("nokeep"); page = (HtmlPage) button.click(); pageText = page.asText(); assertTrue(pageText.contains("valueA: A value")); assertTrue(pageText.contains("valueB: B value")); assertTrue(pageText.contains("valueC: C value")); button = (HtmlSubmitInput) page.getHtmlElementById("reload"); page = (HtmlPage) button.click(); pageText = page.asText(); assertTrue(!pageText.contains("valueA: A value")); assertTrue(!pageText.contains("valueB: B value")); assertTrue(!pageText.contains("valueC: C value")); // content from Sebastian Hennebrueder page = webClient.getPage(webUrl + "faces/flash12.xhtml"); button = (HtmlSubmitInput) page.getHtmlElementById("start"); page = (HtmlPage) button.click(); pageText = page.asText(); assertTrue(pageText.contains("4711")); page = (HtmlPage) page.refresh(); pageText = page.asText(); assertTrue(!pageText.contains("4711")); // Test for JAVASERVERFACES-2087 page = webClient.getPage(webUrl + "faces/flash13.xhtml"); button = (HtmlSubmitInput) page.getHtmlElementById("flashbtn"); page = (HtmlPage) button.click(); pageText = page.asText(); assertTrue(pageText.contains("read strobist")); page = webClient.getPage(webUrl + "faces/flash13.xhtml"); pageText = page.asText(); assertTrue(!pageText.contains("read strobist")); page = webClient.getPage(webUrl + "faces/flash13.xhtml"); pageText = page.asText(); assertTrue(!pageText.contains("read strobist")); page = webClient.getPage(webUrl + "faces/flash14.xhtml"); pageText = page.asText(); assertTrue( pageText.matches( "(?s).*\\[received javax.faces.event.PreClearFlashEvent source:\\{\\}\\].*")); }