001 package org.hackystat.sensorbase.resource.sensordatatypes; 002 003 import static org.junit.Assert.assertEquals; 004 import static org.junit.Assert.assertTrue; 005 006 import org.hackystat.sensorbase.client.SensorBaseClient; 007 import org.hackystat.sensorbase.resource.sensordatatypes.jaxb.Property; 008 import org.hackystat.sensorbase.resource.sensordatatypes.jaxb.RequiredField; 009 import org.hackystat.sensorbase.resource.sensordatatypes.jaxb.RequiredFields; 010 import org.hackystat.sensorbase.resource.sensordatatypes.jaxb.SensorDataType; 011 import org.hackystat.sensorbase.resource.sensordatatypes.jaxb.SensorDataTypeRef; 012 import org.hackystat.sensorbase.resource.sensordatatypes.jaxb.SensorDataTypeIndex; 013 import org.hackystat.sensorbase.test.SensorBaseRestApiHelper; 014 import org.junit.Test; 015 016 /** 017 * Tests the SensorBase REST API for both the SensorDataTypes and SensorDataType resources. 018 * @author Philip M. Johnson 019 */ 020 public class TestSdtRestApi extends SensorBaseRestApiHelper { 021 022 /** The test user. */ 023 private String user = "TestUser@hackystat.org"; 024 025 /** 026 * Test that GET host/sensorbase/sensordatatypes returns an index containing TestSDT, and that 027 * all SDTs in the index can be retrieved. 028 * @throws Exception If problems occur. 029 */ 030 @Test public void getSdtIndex() throws Exception { 031 SensorBaseClient client = new SensorBaseClient(getHostName(), user, user); 032 client.authenticate(); 033 SensorDataTypeIndex sdtIndex = client.getSensorDataTypeIndex(); 034 // Make sure that we can iterate through all of the SDTs OK. 035 boolean foundTestSdt = false; 036 for (SensorDataTypeRef ref : sdtIndex.getSensorDataTypeRef()) { 037 if ("TestSdt".equals(ref.getName())) { 038 foundTestSdt = true; 039 } 040 // Make sure the href is OK. 041 //client.getUri(ref.getHref()); 042 client.getSensorDataType(ref); 043 } 044 assertTrue("Checking that we found the TestSdt", foundTestSdt); 045 } 046 047 /** 048 * Test that GET host/sensorbase/sensordatatypes/TestSdt returns the TestSdt SDT. 049 * @throws Exception If problems occur. 050 */ 051 @Test public void getSdt() throws Exception { 052 SensorBaseClient client = new SensorBaseClient(getHostName(), user, user); 053 client.authenticate(); 054 SensorDataType sdt = client.getSensorDataType("TestSdt"); 055 assertEquals("Checking name", "TestSdt", sdt.getName()); 056 assertTrue("Checking description", sdt.getDescription().startsWith("SDT")); 057 RequiredField reqField = sdt.getRequiredFields().getRequiredField().get(0); 058 assertEquals("Checking required field name", "SampleField", reqField.getName()); 059 assertEquals("Checking required field value", "Sample Field Value", reqField.getDescription()); 060 Property property = sdt.getProperties().getProperty().get(0); 061 assertEquals("Checking property key", "SampleProperty", property.getKey()); 062 assertEquals("Checking property value", "Sample Property Value", property.getValue()); 063 } 064 065 /** 066 * Test that PUT and DELETE host/sensorbase/sensordatatypes/TestSdt are OK. 067 * Note that these operations require admin authentication. 068 * @throws Exception If problems occur. 069 */ 070 @Test public void putSdt() throws Exception { 071 // First, create a sample SDT. 072 SensorDataType sdt = new SensorDataType(); 073 String sdtName = "TestSdt2"; 074 sdt.setName(sdtName); 075 sdt.setDescription("Sample SDT"); 076 RequiredField field = new RequiredField(); 077 field.setName("Required"); 078 RequiredFields fields = new RequiredFields(); 079 fields.getRequiredField().add(field); 080 // Now put it to the server. 081 SensorBaseClient client = new SensorBaseClient(getHostName(), adminEmail, adminPassword); 082 client.authenticate(); 083 client.putSensorDataType(sdt); 084 assertEquals("Testing sdt retrieval", sdtName, client.getSensorDataType(sdtName).getName()); 085 client.deleteSensorDataType(sdtName); 086 } 087 }