001/*
002 * Copyright 2020 Global Biodiversity Information Facility (GBIF)
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.gbif.api.model.common;
017
018import org.gbif.api.SerdeTestUtils;
019import org.gbif.api.vocabulary.UserRole;
020
021import java.io.IOException;
022import java.util.HashMap;
023import java.util.Map;
024import java.util.Set;
025
026import jakarta.validation.ConstraintViolation;
027import jakarta.validation.Validation;
028import jakarta.validation.Validator;
029
030import org.junit.jupiter.api.Test;
031
032import static org.junit.jupiter.api.Assertions.assertEquals;
033import static org.junit.jupiter.api.Assertions.assertFalse;
034import static org.junit.jupiter.api.Assertions.assertTrue;
035
036@Deprecated
037public class UserTest {
038
039  private final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
040
041  @Test
042  public void testHasRole() {
043    User u = new User();
044    u.setUserName("betty");
045    u.setEmail("betty@gbif.org");
046    u.setFirstName("Betty Ford");
047
048    assertFalse(u.hasRole(UserRole.USER));
049    assertFalse(u.hasRole(UserRole.REGISTRY_EDITOR));
050    assertFalse(u.hasRole(UserRole.REGISTRY_ADMIN));
051    assertFalse(u.hasRole(null));
052
053    u.addRole(UserRole.USER);
054    assertTrue(u.hasRole(UserRole.USER));
055    assertFalse(u.hasRole(UserRole.REGISTRY_EDITOR));
056    assertFalse(u.hasRole(UserRole.REGISTRY_ADMIN));
057    assertFalse(u.hasRole(null));
058
059    u.addRole(UserRole.REGISTRY_ADMIN);
060    assertTrue(u.hasRole(UserRole.USER));
061    assertFalse(u.hasRole(UserRole.REGISTRY_EDITOR));
062    assertTrue(u.hasRole(UserRole.REGISTRY_ADMIN));
063    assertFalse(u.hasRole(null));
064  }
065
066  @Test
067  public void testIsAdmin() {
068    User u = new User();
069    u.setUserName("betty");
070    u.setEmail("betty@gbif.org");
071    u.setFirstName("Betty Ford");
072
073    assertFalse(u.isAdmin());
074
075    u.addRole(UserRole.ADMIN);
076    assertTrue(u.isAdmin());
077  }
078
079  @Test
080  public void testValidation() {
081    User u = new User();
082    u.setKey(100);
083    u.setUserName("be");
084    u.setEmail("betty@gbif.org");
085    u.setFirstName("Betty");
086    u.setLastName("Ford");
087    assertValidation("userName", u);
088
089    u.setUserName("betty");
090    u.setFirstName(null);
091    assertValidation("firstName", u);
092
093    u.setFirstName("Betty");
094    assertValidation(null, u);
095
096    u.setEmail("betty at gbif.org");
097    assertValidation("email", u);
098  }
099
100  private void assertValidation(String property, User u) {
101    Set<ConstraintViolation<User>> err = validator.validate(u);
102    System.out.print(err);
103    if (property == null) {
104      assertEquals(0, err.size());
105    } else {
106      assertEquals(1, err.size());
107      assertEquals(property, err.iterator().next().getPropertyPath().toString());
108    }
109  }
110
111  @Test
112  public void testSerDe() throws IOException {
113    User u = new User();
114    u.setKey(100);
115    u.setUserName("be");
116    u.setEmail("betty@gbif.org");
117    u.setFirstName("Betty");
118    u.setLastName("Ford");
119    SerdeTestUtils.testSerDe(u, User.class);
120  }
121
122  @Test
123  public void testSerDeSettings() throws IOException {
124    User u = new User();
125    u.setKey(100);
126    u.setUserName("be");
127    u.setEmail("betty@gbif.org");
128    u.setFirstName("Betty");
129    u.setLastName("Ford");
130    Map<String, String> settings = new HashMap<>();
131    settings.put("name", "tim");
132    u.setSettings(settings);
133    SerdeTestUtils.testSerDe(u, User.class);
134  }
135
136  @Test
137  public void testName() {
138    User u = new User();
139    u.setKey(100);
140    u.setUserName("be");
141    u.setEmail("betty@gbif.org");
142    u.setFirstName("Betty");
143    u.setLastName("Ford");
144    assertEquals("Betty Ford", u.getName());
145  }
146}