From 1a2c215461b48cb74f5ea486aa0358b015c8cf71 Mon Sep 17 00:00:00 2001
From: Shane Tomlinson <stomlinson@mozilla.com>
Date: Thu, 31 May 2012 10:24:57 +0100
Subject: [PATCH] Send server timestamp along with KPI data.

* Add tests to make sure all expected fields are present.

issue #1660
---
 .../static/shared/models/interaction_data.js  |  7 +++---
 .../cases/shared/models/interaction_data.js   | 24 ++++++++++++++++---
 resources/static/test/testHelpers/helpers.js  |  2 +-
 3 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/resources/static/shared/models/interaction_data.js b/resources/static/shared/models/interaction_data.js
index ed948c203..5b91bb6ee 100644
--- a/resources/static/shared/models/interaction_data.js
+++ b/resources/static/shared/models/interaction_data.js
@@ -99,10 +99,11 @@ BrowserID.Models.InteractionData = (function() {
       _.each(data, function(obj) {
         filtered.push(whitelistFilter(obj, [
           'event_stream',
-          'lang', 
+          'lang',
           'screen_size',
-          'sample_rate']
-        ));
+          'sample_rate',
+          'timestamp'
+        ]));
       });
 
       network.sendInteractionData(filtered, function() {
diff --git a/resources/static/test/cases/shared/models/interaction_data.js b/resources/static/test/cases/shared/models/interaction_data.js
index b66ce318a..740a3d676 100644
--- a/resources/static/test/cases/shared/models/interaction_data.js
+++ b/resources/static/test/cases/shared/models/interaction_data.js
@@ -87,7 +87,16 @@
 
         // When the interaction_data next completes, this will be the only data
         // that is pushed.
-        model.push({ lang: "bar", secret: "Attack at dawn!!!" });
+        var now = new Date().getTime();
+
+        model.push({
+          event_stream: [],
+          sample_rate: 1,
+          timestamp: now,
+          local_timestamp: now,
+          lang: "bar",
+          secret: "Attack at dawn!!!"
+        });
         model.stageCurrent();
 
         xhr.useResult("valid");
@@ -97,8 +106,17 @@
               previousSessionsData = JSON.parse(request.data).data;
 
           equal(previousSessionsData.length, 1, "sending correct result sets");
-          equal(previousSessionsData[0].lang, "bar", "correct data sent");
-          equal(typeof previousSessionsData[0].secret, "undefined", "non-whitelisted valued stripped");
+
+          var mostRecentSessionData = previousSessionsData[0];
+          testObjectValuesEqual(mostRecentSessionData, {
+            event_stream: [],
+            sample_rate: 1,
+            timestamp: now,
+            lang: "bar"
+          });
+
+          equal(typeof mostRecentSessionData.local_timestamp, "undefined", "non-whitelisted valued stripped");
+          equal(typeof mostRecentSessionData.secret, "undefined", "non-whitelisted valued stripped");
           start();
         });
       });
diff --git a/resources/static/test/testHelpers/helpers.js b/resources/static/test/testHelpers/helpers.js
index d7909c38e..2c77f4201 100644
--- a/resources/static/test/testHelpers/helpers.js
+++ b/resources/static/test/testHelpers/helpers.js
@@ -216,7 +216,7 @@ BrowserID.TestHelpers = (function() {
 
     testObjectValuesEqual: function(objToTest, expected, msg) {
       for(var key in expected) {
-        equal(objToTest[key], expected[key], key + " set to: " + expected[key] + (msg ? " - " + msg : ""));
+        deepEqual(objToTest[key], expected[key], key + " set to: " + expected[key] + (msg ? " - " + msg : ""));
       }
     },
 
-- 
GitLab