Package edu.wpi.cs.wpisuitetng.modules.core

Source Code of edu.wpi.cs.wpisuitetng.modules.core.UserDeserializerTest

/*******************************************************************************
* Copyright (c) 2012 -- WPI Suite
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*       twack
*******************************************************************************/

package edu.wpi.cs.wpisuitetng.modules.core;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSyntaxException;

import edu.wpi.cs.wpisuitetng.modules.core.models.Role;
import edu.wpi.cs.wpisuitetng.modules.core.models.User;
import edu.wpi.cs.wpisuitetng.modules.core.models.UserDeserializer;

/**
* Tests for the UserDeserializer class.
*   parsePassword() Tests: evaluating the flexibility of the function to handle JSON formatting.
* @author twack
*
*/
public class UserDeserializerTest {
 
  GsonBuilder gson;
 
  @Before
  public void setUp()
  {
    this.gson = new GsonBuilder();
    this.gson.registerTypeAdapter(User.class, new UserDeserializer());
  }
 
  @Test
  public void parsePasswordTest1()
  {
    String jsonUser = "{\"name\":\"Tyler\", \"password\":\"abc34;.\", \"username\":\"twack\"}";
   
    String parsedPassword = UserDeserializer.parsePassword(jsonUser);
   
    assertTrue(parsedPassword.equals("abc34;."));
  }
 
  @Test
  public void parsePasswordTest2()
  {
    String jsonUser = "{\"name\":\"Tyler\", \"password\": \"abc34;.\", \"username\":\"twack\"}";
   
    String parsedPassword = UserDeserializer.parsePassword(jsonUser);
   
    assertTrue(parsedPassword.equals("abc34;."));
  }
 
  @Test
  public void parsePasswordTest3()
  {
    String jsonUser = "{\"name\":\"Tyler\", \"password\":\"abc34;.\", \"username\":\"twack\"}";
   
    String parsedPassword = UserDeserializer.parsePassword(jsonUser);
   
    assertTrue(parsedPassword.equals("abc34;."));
  }
 
  @Test(expected=JsonParseException.class)
  public void parsePasswordNoPasswordTest()
  {
    String jsonUser ="{\"name\":\"Tyler\", \"username\":\"twack\"}";
   
    String parsedPassword = UserDeserializer.parsePassword(jsonUser); // expect Exception
  }
 
  @Test
  /**
   * Tests deserializing when the given JSON string has all attributes.
   */
  public void deserializeUserFull()
  {
    String jsonUser ="{\"name\":\"Tyler\", \"username\":\"twack\", \"idNum\":2, password:\"abcde\", \"role\":\"ADMIN\"}";
    Gson deserializer = this.gson.create();
   
    User inflated = deserializer.fromJson(jsonUser, User.class);
   
    assertEquals(2, inflated.getIdNum());
    assertTrue(inflated.getName().equals("Tyler"));
    assertTrue(inflated.getUsername().equals("twack"));
    assertTrue(inflated.getRole().equals(Role.ADMIN));
   
    assertTrue(inflated.matchPassword("abcde"));
    assertFalse(inflated.matchPassword(null));
  }
 
  @Test
  /**
   * Tests User deserialization when the given string is missing fields (but has the unique identifier idNum)
   */
  public void deserializeUserMissingFields()
  {
    String jsonUser ="{\"username\":\"Tyler\", \"idNum\":2}";
    Gson deserializer = this.gson.create();
   
    User inflated = deserializer.fromJson(jsonUser, User.class);
   
    assertEquals(2, inflated.getIdNum());
    assertTrue(inflated.getUsername().equals("Tyler"));
   
    assertFalse(inflated.matchPassword(null));
  }
 
  @Test(expected=JsonParseException.class)
  /**
   * Tests error handling in the deserializer -- an exception should be thrown if
   *   the user fails to include the Unique Identifier field (User->username)
   */
  public void deserializeUserMissingId()
  {
    String jsonUser ="{\"name\":\"Tyler\", \"idNum\":2, \"password\":\"abcde\"}";
    Gson deserializer = this.gson.create();
   
    User inflated = deserializer.fromJson(jsonUser, User.class); // exception expected.
   
    fail("exception not thrown");
  }
}
TOP

Related Classes of edu.wpi.cs.wpisuitetng.modules.core.UserDeserializerTest

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.