package gov.samhsa.consent2share.infrastructure.security;
import static org.junit.Assert.*;
import net.tanesha.recaptcha.ReCaptchaImpl;
import net.tanesha.recaptcha.ReCaptchaResponse;
import org.junit.Before;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;
import static org.mockito.Mockito.*;
/**
* The Class RecaptchaUtilTest.
*/
public class RecaptchaUtilTest {
/** The https server. */
private final String HTTPS_SERVER="httpsServer";
/** The http server. */
private final String HTTP_SERVER="httpServer";
/** The vefification url. */
private final String VEFIFICATION_URL="verifyURL";
/** The private key. */
private final String PRIVATE_KEY="privateKey";
/** The public key. */
private final String PUBLIC_KEY="publicKey";
/** The remote addr. */
private final String REMOTE_ADDR="remoteAddr";
/** The right captcha. */
private final String RIGHT_CAPTCHA="Right Captcha";
/** The wrong captcha. */
private final String WRONG_CAPTCHA="Wrong CAPTCHA";
/** The re captcha impl. */
private ReCaptchaImpl reCaptchaImpl;
/** The recaptcha util. */
private RecaptchaService recaptchaUtil;
/** The sut. */
private RecaptchaService sut;
/**
* Sets the up.
*/
@Before
public void setUp() {
reCaptchaImpl=mock(ReCaptchaImpl.class);
recaptchaUtil=new RecaptchaService(HTTPS_SERVER, HTTP_SERVER, VEFIFICATION_URL, PRIVATE_KEY, PUBLIC_KEY);
ReflectionTestUtils.setField(recaptchaUtil, "reCaptchaImpl", reCaptchaImpl);
sut=spy(recaptchaUtil);
ReCaptchaResponse trueReCaptchaResponse=mock(ReCaptchaResponse.class);
ReCaptchaResponse falseReCaptchaResponse=mock(ReCaptchaResponse.class);
doReturn(true).when(trueReCaptchaResponse).isValid();
doReturn(false).when(falseReCaptchaResponse).isValid();
doReturn(trueReCaptchaResponse).when(reCaptchaImpl).checkAnswer(REMOTE_ADDR, RIGHT_CAPTCHA, RIGHT_CAPTCHA);
doReturn(falseReCaptchaResponse).when(reCaptchaImpl).checkAnswer(REMOTE_ADDR, RIGHT_CAPTCHA, WRONG_CAPTCHA);
}
/**
* Test check answer when succed.
*/
@Test
public void testCheckAnswerWhenSucced() {
assertTrue(sut.checkAnswer(REMOTE_ADDR, RIGHT_CAPTCHA, RIGHT_CAPTCHA));
}
/**
* Test check answer when fail.
*/
@Test
public void testCheckAnswerWhenFail() {
assertFalse(sut.checkAnswer(REMOTE_ADDR, RIGHT_CAPTCHA, WRONG_CAPTCHA));
}
/**
* Test create secure recaptcha html.
*/
@Test
public void testCreateSecureRecaptchaHtml() {
sut.createSecureRecaptchaHtml();
verify(reCaptchaImpl).createRecaptchaHtml(null, null);
}
}