001    package org.hackystat.dailyprojectdata.resource.unittest;
002    
003    import static org.junit.Assert.assertEquals;
004    import static org.junit.Assert.assertTrue;
005    
006    import java.math.BigInteger;
007    
008    import org.hackystat.dailyprojectdata.client.DailyProjectDataClient;
009    import org.hackystat.dailyprojectdata.resource.unittest.jaxb.MemberData;
010    import org.hackystat.dailyprojectdata.resource.unittest.jaxb.UnitTestDailyProjectData;
011    import org.hackystat.dailyprojectdata.test.DailyProjectDataTestHelper;
012    import org.hackystat.sensorbase.client.SensorBaseClient;
013    import org.hackystat.sensorbase.resource.sensordata.jaxb.SensorDatas;
014    import org.hackystat.utilities.tstamp.Tstamp;
015    import org.junit.Test;
016    
017    /**
018     * Runs test to exercise DPDResource.
019     *
020     * @author Pavel Senin, Philip Johnson.
021     *
022     */
023    public class TestUnitTestRestApi extends DailyProjectDataTestHelper {
024    
025      /** The user for this test case. */
026      private String user = "TestUnitTest@hackystat.org";
027    
028      /**
029       * Test that GET {host}/unittest/{user}/default/{starttime} works properly. First, it creates a
030       * test user and sends some sample DevEvent data to the SensorBase. Then, it invokes the GET
031       * request and checks to see that it obtains the right answer. Finally, it deletes the data and
032       * the user.
033       *
034       * @throws Exception If problems occur.
035       */
036      @Test
037      public void getDefaultUnitTestDPD() throws Exception {
038        // First, create a batch of DevEvent sensor data.
039        SensorDatas batchData = new SensorDatas();
040        UnitTestTestHelper helper = new UnitTestTestHelper();
041        batchData.getSensorData().add(helper.makePassUnitTest("2007-04-30T02:00:00", user));
042        batchData.getSensorData().add(helper.makePassUnitTest("2007-04-30T02:10:00", user));
043        batchData.getSensorData().add(helper.makeFailUnitTest("2007-04-29T23:55:00", user));
044        batchData.getSensorData().add(helper.makeFailUnitTest("2007-05-01T00:01:00", user));
045    
046        // Connect to the sensorbase and register the DailyProjectDataDevEvent user.
047        SensorBaseClient.registerUser(getSensorBaseHostName(), user);
048        SensorBaseClient client = new SensorBaseClient(getSensorBaseHostName(), user, user);
049        client.authenticate();
050        // Send the sensor data to the SensorBase.
051        client.putSensorDataBatch(batchData);
052    
053        // Now connect to the DPD server.
054        DailyProjectDataClient dpdClient = new DailyProjectDataClient(getDailyProjectDataHostName(),
055            user, user);
056        dpdClient.authenticate();
057        UnitTestDailyProjectData unitDPD = dpdClient.getUnitTest(user, "Default", Tstamp
058            .makeTimestamp("2007-04-30"));
059        assertTrue("Checking user", user.equalsIgnoreCase(unitDPD.getOwner()));
060    
061        MemberData memberData = unitDPD.getMemberData().get(0);
062    
063        assertEquals("Checking Failures", BigInteger.valueOf(0), memberData.getFailure());
064    
065        assertEquals("Checking Success", BigInteger.valueOf(2), memberData.getSuccess());
066    
067      }
068    }