Package com.sparc.knappsack.components.validators

Source Code of com.sparc.knappsack.components.validators.RegistrationValidatorTest

package com.sparc.knappsack.components.validators;

import com.sparc.knappsack.components.entities.Invitation;
import com.sparc.knappsack.components.entities.Role;
import com.sparc.knappsack.components.entities.User;
import com.sparc.knappsack.components.services.InvitationService;
import com.sparc.knappsack.components.services.UserService;
import com.sparc.knappsack.forms.RegistrationForm;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.validation.Errors;

import java.util.ArrayList;
import java.util.List;

import static junit.framework.Assert.*;

@RunWith(MockitoJUnitRunner.class)
public class RegistrationValidatorTest {

    @Mock private UserService mockUserService;

    @Mock private InvitationService invitationService;

    @InjectMocks
    private RegistrationValidator validator = new RegistrationValidator();


    private static final String PASSWORD_PATTERN = "^\\S{6,}$";
    private static final String EMAIL_PATTERN = "[A-Za-z0-9!#$%&'*+-/=?^_`{|}~]+@[A-Za-z0-9-]+(.[A-Za-z0-9-]+)*";
    private Errors errors;
    private RegistrationForm registrationForm;
    private User user = new User("test", "originalPassword", "test@test.com", "test", "test", new ArrayList<Role>());

    @Before
    public void setup() {
        registrationForm = new RegistrationForm();
        errors = new BeanPropertyBindingResult(registrationForm, "registrationForm");
        ReflectionTestUtils.setField(validator, "passwordPattern", PASSWORD_PATTERN);
        ReflectionTestUtils.setField(validator, "emailPattern", EMAIL_PATTERN);

        Mockito.when(mockUserService.getByEmail(user.getEmail())).thenReturn(user);
    }

    @Test
    public void testValidatorSupportsClass() {
        assertTrue(validator.supports(registrationForm.getClass()));
    }

    @Test
    public void testValidatorNotSupportsClass() {
        assertFalse(validator.supports(String.class));
    }

    @Test
    public void testValid() {
        registrationForm.setEmail("new@test.com");
        registrationForm.setFirstName("Test");
        registrationForm.setLastName("Test");
        registrationForm.setFirstPassword("password");
        registrationForm.setSecondPassword("password");

        Invitation invitation = new Invitation();
        List<Invitation> invitations = new ArrayList<Invitation>();
        invitations.add(invitation);
        Mockito.when(invitationService.getByEmail(registrationForm.getEmail())).thenReturn(invitations);

        validator.validate(registrationForm, errors);

        assertFalse(errors.hasErrors());
    }

    @Test
    public void testAllFieldsEmpty() {
        validator.validate(registrationForm, errors);

        assertTrue(errors.hasErrors());
        Assert.assertEquals(errors.getErrorCount(), 5);

        setup();

        registrationForm.setEmail("");
        registrationForm.setFirstName("");
        registrationForm.setLastName("");
        registrationForm.setFirstPassword("");
        registrationForm.setSecondPassword("");

        validator.validate(registrationForm, errors);

        assertTrue(errors.hasErrors());
        Assert.assertEquals(errors.getErrorCount(), 5);

    }

    @Test
    public void testEmailAlreadyExists() {
        registrationForm.setEmail("test@test.com");
        validator.validate(registrationForm, errors);

        assertTrue(errors.hasErrors());
        assertNotNull(errors.getFieldError("email"));
        Assert.assertEquals(errors.getFieldError("email").getCode(), "registrationValidator.emailAlreadyExists");
    }

    @Test
    public void testPasswordMismatch() {
        registrationForm.setEmail("my@email.com");
        registrationForm.setFirstName("firstName");
        registrationForm.setLastName("lastName");
        registrationForm.setFirstPassword("firstPassword");
        registrationForm.setSecondPassword("secondPassword");

        Invitation invitation = new Invitation();
        List<Invitation> invitations = new ArrayList<Invitation>();
        invitations.add(invitation);
        Mockito.when(invitationService.getByEmail(registrationForm.getEmail())).thenReturn(invitations);

        validator.validate(registrationForm, errors);
        assertTrue(errors.hasErrors());
        Assert.assertEquals(errors.getErrorCount(), 1);
        assertNotNull(errors.getFieldError("firstPassword"));

        setup();

        registrationForm.setEmail("my@email.com");
        registrationForm.setFirstName("firstName");
        registrationForm.setLastName("lastName");
        registrationForm.setFirstPassword("firstPassword");
        registrationForm.setSecondPassword("");

        validator.validate(registrationForm, errors);
        assertTrue(errors.hasErrors());
        Assert.assertEquals(errors.getErrorCount(), 1);
        assertNotNull(errors.getFieldError("firstPassword"));
    }

    @Test
    public void testInvalidEmailAddress() {
        registrationForm.setEmail("invalidEmailAddress");
        validator.validate(registrationForm, errors);

        assertTrue(errors.hasErrors());
        assertNotNull(errors.getFieldError("email"));
    }
}
TOP

Related Classes of com.sparc.knappsack.components.validators.RegistrationValidatorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.