package de.epages.ws.user2; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotSame; import java.util.GregorianCalendar; import java.util.HashMap; import org.junit.Before; import org.junit.Test; import de.epages.ws.ShopWebServiceTestConfiguration; import de.epages.ws.common.model.TAttribute; import de.epages.ws.shop2.model.TAddressNamed; import de.epages.ws.user2.model.TCreate_Input; import de.epages.ws.user2.model.TCreate_Return; import de.epages.ws.user2.model.TDelete_Return; import de.epages.ws.user2.model.TExists_Return; import de.epages.ws.user2.model.TGetInfo_Return; import de.epages.ws.user2.model.TUpdate_Input; import de.epages.ws.user2.model.TUpdate_Return; public class UserServiceTest { private static final UserServiceClientImpl serviceClient = new UserServiceClientImpl(new ShopWebServiceTestConfiguration()); private final TCreate_Input user_in = new TCreate_Input(); private final TUpdate_Input user_update = new TUpdate_Input(); private final String path = "Users/"; private final String alias = "java_test-1"; /** * Sets all the required prerequisites for the tests. Will be called before * the test are run. */ @Before public void setUp() { // create test users that can be used with the create and update methods user_in.setAlias(alias); user_in.setPassword("epages"); user_in.setEMail("java_test-1@epages.de"); user_in.setName("Klaus Klaussen"); TAddressNamed bill = new TAddressNamed(); bill.setAlias("bill"); bill.setFirstName("Klaus"); bill.setLastName("Klaussen2"); bill.setStreet("Musterstraße 2"); bill.setCity("Ortsteil Niederfingeln"); bill.setEMail("java_test-1@epages.de"); bill.setBirthday(new GregorianCalendar(1976, 9, 25, 11, 33)); user_in.setBillingAddress(bill); TAddressNamed ship = new TAddressNamed(); ship.setAlias("ship"); ship.setFirstName("Klaus"); ship.setLastName("Klaussen3"); ship.setStreet("Musterstraße 3"); ship.setCity("Ortsteil Niederfingeln"); ship.setEMail("java_test-1@epages.de"); ship.setBirthday(new GregorianCalendar(1976, 9, 25, 11, 33)); user_in.setShippingAddress(ship); TAddressNamed ship1 = new TAddressNamed(); ship1.setAlias("ship1"); ship1.setFirstName("Klaus"); ship1.setLastName("Klaussen4"); ship1.setStreet("Musterstraße 4"); ship1.setCity("Ortsteil Niederfingeln"); ship1.setEMail("java_test-1@epages.de"); ship1.setBirthday(new GregorianCalendar(1976, 9, 25, 11, 33)); TAddressNamed ship2 = new TAddressNamed(); // --- test without alias ship2.setFirstName("Klaus"); ship2.setLastName("Klaussen5"); ship2.setStreet("Musterstraße 5"); ship2.setCity("Ortsteil Niederfingeln"); ship2.setEMail("java_test-1@epages.de"); ship2.setBirthday(new GregorianCalendar(1976, 9, 25, 11, 33)); TAddressNamed[] addresses = new TAddressNamed[] { ship1, ship2, }; user_in.setAdditionalAddresses(addresses); TAttribute attr1 = new TAttribute(); attr1.setName("ChallengePhrase"); attr1.setValue("my challenge phrase"); user_in.setAttributes(new TAttribute[] { attr1 }); user_update.setPath(path + alias); user_update.setName("Hans Hanssen"); TAddressNamed bill_update = new TAddressNamed(); bill_update.setFirstName("Hans"); bill_update.setLastName("Hanssen"); bill_update.setStreet("Musterstraße 2b"); bill_update.setCity("Ortsteil Oberfingeln"); user_update.setBillingAddress(bill_update); TAddressNamed ship1_update = new TAddressNamed(); ship1_update.setAlias("ship1"); ship1_update.setFirstName("Klaus"); ship1_update.setLastName("Klaussen44"); ship1_update.setStreet("Musterstraße 44"); ship1_update.setCity("Ortsteil Niederfingeln"); ship1_update.setEMail("java_test-1@epages.de"); ship1_update.setBirthday(new GregorianCalendar(1976, 9, 25, 11, 33)); TAddressNamed ship3_update = new TAddressNamed(); ship3_update.setAlias("ship3"); ship3_update.setFirstName("Klaus"); ship3_update.setLastName("Klaussen55"); ship3_update.setStreet("Musterstraße 55"); ship3_update.setCity("Ortsteil Niederfingeln"); ship3_update.setEMail("java_test-1@epages.de"); ship3_update.setBirthday(new GregorianCalendar(1976, 9, 25, 11, 33)); TAddressNamed[] addresses_update = new TAddressNamed[] { ship1_update, ship3_update, }; user_update.setAdditionalAddresses(addresses_update); TAttribute attr_update = new TAttribute(); attr_update.setName("ChallengePhrase"); attr_update.setValue("my updated challenge phrase"); user_update.setAttributes(new TAttribute[] { attr_update }); // delete the test user if exists TExists_Return[] Users_exists_out = serviceClient.exists(new String[] { path + alias }); if (Users_exists_out[0].getExists()) { serviceClient.delete(new String[] { path + alias }); } } /** * Create a User and check if the creation was successful */ public void testCreate() { TCreate_Input[] Users_create_in = { user_in }; TCreate_Return[] Users_create_out = serviceClient.create(Users_create_in); // test if creation was successful assertEquals("create result set", 1, Users_create_out.length); assertEquals("created?", true, Users_create_out[0].getCreated()); } /** * Update a User and check if the update was successful */ public void testUpdate() { TUpdate_Input[] Users_update_in = { user_update }; TUpdate_Return[] Users_update_out = serviceClient.update(Users_update_in); // test if update was successful assertEquals("update result set", 1, Users_update_out.length); assertEquals("updated?", true, Users_update_out[0].getUpdated()); } /** * Retrieve information about an User. Check if the returned data are equal * to the data of create or update call * * @param isAlreadyUpdated * if true check against update data, else against create data */ public void testGetInfo(boolean isAlreadyUpdated) { TGetInfo_Return[] Users_info_out = serviceClient.getInfo(new String[] { path + alias }, new String[] { "ChallengePhrase" }); // test if getinfo was successful and if all data are equal to input assertEquals("getinfo result set", 1, Users_info_out.length); TGetInfo_Return User_info_out = Users_info_out[0]; assertEquals("alias", alias, User_info_out.getAlias()); HashMap<String, TAddressNamed> outAddresses = new HashMap<String, TAddressNamed>(); for (TAddressNamed address : User_info_out.getAdditionalAddresses()) { outAddresses.put(address.getStreet(), address); } if (isAlreadyUpdated) { assertEquals("Name", user_update.getName(), User_info_out.getName()); assertEquals("FirstName", user_update.getBillingAddress().getFirstName(), User_info_out.getBillingAddress().getFirstName()); assertEquals("LastName", user_update.getBillingAddress().getLastName(), User_info_out.getBillingAddress().getLastName()); assertEquals("Street", user_update.getBillingAddress().getStreet(), User_info_out.getBillingAddress().getStreet()); assertEquals("Street2", user_update.getBillingAddress().getStreet2(), User_info_out.getBillingAddress().getStreet2()); assertEquals("ChallengePhrase", user_update.getAttributes()[0].getValue(), User_info_out.getAttributes()[0].getValue()); for (TAddressNamed upAddress : user_update.getAdditionalAddresses()) { TAddressNamed outAddress = outAddresses.get(upAddress.getStreet()); if (upAddress.getAlias() != null && upAddress.getAlias() != "") { assertEquals("Additional Addresses Alias", upAddress.getAlias(), outAddress.getAlias()); } assertEquals("Additional Addresses LastName", upAddress.getLastName(), outAddress.getLastName()); } } else { assertEquals("Name", user_in.getName(), User_info_out.getName()); assertEquals("FirstName", user_in.getBillingAddress().getFirstName(), User_info_out.getBillingAddress().getFirstName()); assertEquals("LastName", user_in.getBillingAddress().getLastName(), User_info_out.getBillingAddress().getLastName()); assertEquals("Street", user_in.getBillingAddress().getStreet(), User_info_out.getBillingAddress().getStreet()); assertEquals("Street2", user_in.getBillingAddress().getStreet2(), User_info_out.getBillingAddress().getStreet2()); assertEquals("ChallengePhrase", user_in.getAttributes()[0].getValue(), User_info_out.getAttributes()[0].getValue()); assertEquals("AdditionalAddresses", user_in.getAdditionalAddresses().length, User_info_out.getAdditionalAddresses().length); for (TAddressNamed inAddress : user_in.getAdditionalAddresses()) { TAddressNamed outAddress = outAddresses.get(inAddress.getStreet()); if (inAddress.getAlias() != null && inAddress.getAlias() != "") { assertEquals("Additional Addresses Alias", inAddress.getAlias(), outAddress.getAlias()); } assertEquals("Additional Addresses LastName", inAddress.getLastName(), outAddress.getLastName()); } } assertEquals("EMail", user_in.getEMail(), User_info_out.getEMail()); // sent and returned password are not the same ... returned password is // already crypted assertNotSame("Password", user_in.getPassword(), User_info_out.getPassword()); } /** * Delete a User and check if no error occured. */ public void testDelete() { TDelete_Return[] Users_delete_out = serviceClient.delete(new String[] { path + alias }); // test if deletion was successful assertEquals("delete result set", 1, Users_delete_out.length); assertEquals("deleted?", true, Users_delete_out[0].getDeleted()); } /** * Test if a User exists or not * * @param expected * if false the Test will be successful if the User does NOT * exist */ public void testExists(boolean expected) { TExists_Return[] Users_exists_out = serviceClient.exists(new String[] { path + alias }); // test if exists check was successful assertEquals("exists result set", 1, Users_exists_out.length); assertEquals("exists?", expected, Users_exists_out[0].getExists()); } /** * Creates a TestSuite that will do: * <ol> * <li>create a User</li> * <li>test if this User exists afterwards</li> * <li>retrieve info about this User, and check if the data equals to the * input data of create</li> * <li>updates the User</li> * <li>again retrieve data, and check if the data are equal to the update * input data</li> * <li>delete the User</li> * <li>check if the User still exists</li> * </ol> */ @Test public void testAll() { testCreate(); testExists(true); testGetInfo(false); testUpdate(); testGetInfo(true); testDelete(); testExists(false); } }