import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxProfile;
import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class C_MONJAVA {
  private FirefoxBinary binary = new FirefoxBinary(new File("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"));
  private FirefoxProfile profile = new FirefoxProfile();
  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();
  // private String s_IHM_TEXT_EXPECTED = "Informations d'identification fournies non valides";
  private String s_IHM_TEXT_EXPECTED = new String("XXXXXX_MESSAGE_D_ERREUR_BIDON_XXXXX");

  @Before
  public void setUp() throws Exception {
	driver = new FirefoxDriver(binary,profile);
    baseUrl = "https://CRYPTED";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test
  public void Logintest() throws Exception {


	System.out.println("@TEST AAAA DEBUT AAAA");

    System.out.println("@TEST AAAAA s_IHM_TEXT_EXPECTED=[" + s_IHM_TEXT_EXPECTED + "]");

//    log.info("XXXX");

    driver.get(baseUrl);
    
    driver.findElement(By.id("username")).clear();
    driver.findElement(By.id("username")).sendKeys("LAURA");
    
    driver.findElement(By.id("password")).clear();
    driver.findElement(By.id("password")).sendKeys("bidon$");

    driver.findElement(By.id("submitButton")).click();
       
    driver.findElement(By.name("submit")).click();
	
//	WebElement o_we_ELEMENT=driver.findElement(By.className("alert-danger"));
//
//	String s_IHM_TEXT_GOT=o_we_ELEMENT.getText();
// 
//    System.out.println("@TEST AAAAA s_IHM_TEXT_GOT=[" + s_IHM_TEXT_GOT + "]");
//
//    assertEquals(s_IHM_TEXT_GOT, s_IHM_TEXT_EXPECTED);
    
	// Assert.assertTrue(o_we_ELEMENT.contains(s_IHM_TEXT_EXPECTED));
    
    
  }

  @After
  public void tearDown() throws Exception {

		System.out.println("@AFTER XXXXX DEBUT AAAA");

	    
		WebElement o_we_ELEMENT=driver.findElement(By.className("alert-danger"));

		String s_IHM_TEXT_GOT=o_we_ELEMENT.getText();
	 
	    System.out.println("@AFTER XXXXX s_IHM_TEXT_EXPECTED=[" + s_IHM_TEXT_EXPECTED + "]");
	    System.out.println("@AFTER AAAAA s_IHM_TEXT_GOT=[" + s_IHM_TEXT_GOT + "]");

	    if (s_IHM_TEXT_GOT.equals(s_IHM_TEXT_EXPECTED))
	    {
	    	System.out.println("@AFTER AAAAA EGAL");
	    }
	    else
	    {
	    	System.out.println("@AFTER AAAAA DIFFERENT");
	    	
	    }

	    assertEquals(s_IHM_TEXT_GOT, s_IHM_TEXT_EXPECTED);
	    
		// Assert.assertTrue(o_we_ELEMENT.contains(s_IHM_TEXT_EXPECTED));

	    //______________________________
    driver.quit();
    //______________________________

	System.out.println("@AFTER AAAAA FIN AAAA");
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }

  private boolean isElementPresent(By by) {
    try {
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
      return false;
    }
  }
 
  private boolean isAlertPresent() {
    try {
      driver.switchTo().alert();
      return true;
    } catch (NoAlertPresentException e) {
      return false;
    }
  }

  private String closeAlertAndGetItsText() {
    try {
      Alert alert = driver.switchTo().alert();
      String alertText = alert.getText();
      if (acceptNextAlert) {
        alert.accept();
      } else {
        alert.dismiss();
      }
      return alertText;
    } finally {
      acceptNextAlert = true;
    }
  }
}
