add test case
diff --git a/api_test.go b/api_test.go
index 9e89b7c..0651ab5 100644
--- a/api_test.go
+++ b/api_test.go
@@ -59,6 +59,7 @@
 		})
 
 		It("should get empty set if no deployments", func() {
+			// setup http client
 			uri, err := url.Parse(testUrl)
 			Expect(err).Should(Succeed())
 			uri.Path = deploymentsEndpoint + strconv.Itoa(testCount)
@@ -82,6 +83,7 @@
 		})
 
 		It("should get correct config format", func() {
+			// setup http client
 			uri, err := url.Parse(testUrl)
 			Expect(err).Should(Succeed())
 			uri.Path = deploymentsEndpoint + strconv.Itoa(testCount)
@@ -107,6 +109,42 @@
 
 		})
 
+		It("should get iso8601 time", func() {
+			testTimes := []string{"", "2017-04-05 04:47:36.462 +0000 UTC", "2017-04-05 04:47:36.462-07:00", "2017-04-05T04:47:36.462Z", "2017-04-05 23:23:38.162+00:00", "2017-06-22 16:41:02.334"}
+			isoTime := []string{"", "2017-04-05T04:47:36.462Z", "2017-04-05T04:47:36.462-07:00", "2017-04-05T04:47:36.462Z", "2017-04-05T23:23:38.162Z", "2017-06-22T16:41:02.334Z"}
+
+			// setup http client
+			uri, err := url.Parse(testUrl)
+			Expect(err).Should(Succeed())
+			uri.Path = deploymentsEndpoint + strconv.Itoa(testCount)
+
+			for i, t := range testTimes {
+				log.Debug("insert deployment with timestamp: " + t)
+				// set test data
+				dep := makeTestDeployment()
+				dep.Created = t
+				dep.Updated = t
+				dummyDbMan.readyDeployments = []DataDeployment{*dep}
+				detail := makeExpectedDetail(dep, uri.String())
+				detail.Created = isoTime[i]
+				detail.Updated = isoTime[i]
+				// http get
+				res, err := http.Get(uri.String())
+				Expect(err).Should(Succeed())
+				defer res.Body.Close()
+				Expect(res.StatusCode).Should(Equal(http.StatusOK))
+				// parse response
+				var depRes ApiDeploymentResponse
+				body, err := ioutil.ReadAll(res.Body)
+				Expect(err).Should(Succeed())
+				err = json.Unmarshal(body, &depRes)
+				Expect(err).Should(Succeed())
+				// verify response
+				Expect(depRes.ApiDeploymentsResponse).Should(Equal([]ApiDeploymentDetails{*detail}))
+
+			}
+		})
+
 		It("should debounce requests", func(done Done) {
 			var in = make(chan interface{})
 			var out = make(chan []interface{})
@@ -135,47 +173,18 @@
 })
 
 func setTestDeployments(dummyDbMan *dummyDbManager, self string) []ApiDeploymentDetails {
-	deployments := make([]DataDeployment, 0)
-	details := make([]ApiDeploymentDetails, 0)
+
 	mathrand.Seed(time.Now().UnixNano())
 	count := mathrand.Intn(5) + 1
+	deployments := make([]DataDeployment, count)
+	details := make([]ApiDeploymentDetails, count)
 
 	for i := 0; i < count; i++ {
-		dep := DataDeployment{
-			ID:             GenerateUUID(),
-			OrgID:          GenerateUUID(),
-			EnvID:          GenerateUUID(),
-			Type:           "virtual-host",
-			Name:           "vh-secure",
-			Revision:       "1",
-			BlobID:         GenerateUUID(),
-			GWBlobID:       GenerateUUID(),
-			BlobResourceID: GenerateUUID(),
-			Updated:        time.Now().Format(time.RFC3339),
-			UpdatedBy:      "haoming@google.com",
-			Created:        time.Now().Format(time.RFC3339),
-			CreatedBy:      "haoming@google.com",
-			BlobFSLocation: "BlobFSLocation",
-			BlobURL:        "http://localhost:6666/testBlobURL",
-		}
+		dep := makeTestDeployment()
+		detail := makeExpectedDetail(dep, self)
 
-		detail := ApiDeploymentDetails{
-			Self:           self + "/" + dep.ID,
-			Name:           dep.Name,
-			Type:           dep.Type,
-			Org:            dep.OrgID,
-			Env:            dep.EnvID,
-			Scope:          "",
-			Revision:       dep.Revision,
-			BlobId:         dep.BlobID,
-			BlobURL:        dep.BlobURL,
-			ResourceBlobId: dep.BlobResourceID,
-			Created:        dep.Created,
-			Updated:        dep.Updated,
-		}
-
-		deployments = append(deployments, dep)
-		details = append(details, detail)
+		deployments[i] = *dep
+		details[i] = *detail
 	}
 
 	dummyDbMan.readyDeployments = deployments
@@ -184,6 +193,45 @@
 	return details
 }
 
+func makeTestDeployment() *DataDeployment {
+	dep := &DataDeployment{
+		ID:             GenerateUUID(),
+		OrgID:          GenerateUUID(),
+		EnvID:          GenerateUUID(),
+		Type:           "virtual-host",
+		Name:           "vh-secure",
+		Revision:       "1",
+		BlobID:         GenerateUUID(),
+		GWBlobID:       GenerateUUID(),
+		BlobResourceID: GenerateUUID(),
+		Updated:        time.Now().Format(time.RFC3339),
+		UpdatedBy:      "haoming@google.com",
+		Created:        time.Now().Format(time.RFC3339),
+		CreatedBy:      "haoming@google.com",
+		BlobFSLocation: "BlobFSLocation",
+		BlobURL:        "http://localhost:6666/testBlobURL",
+	}
+	return dep
+}
+
+func makeExpectedDetail(dep *DataDeployment, self string) *ApiDeploymentDetails {
+	detail := &ApiDeploymentDetails{
+		Self:           self + "/" + dep.ID,
+		Name:           dep.Name,
+		Type:           dep.Type,
+		Org:            dep.OrgID,
+		Env:            dep.EnvID,
+		Scope:          "",
+		Revision:       dep.Revision,
+		BlobId:         dep.BlobID,
+		BlobURL:        dep.BlobURL,
+		ResourceBlobId: dep.BlobResourceID,
+		Created:        dep.Created,
+		Updated:        dep.Updated,
+	}
+	return detail
+}
+
 type dummyDbManager struct {
 	unreadyDeployments []DataDeployment
 	readyDeployments   []DataDeployment