You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/03/27 23:21:22 UTC

[28/50] [abbrv] adding help framework adding google analytics framework bug fixes

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/applications.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/applications.spec.js b/portal/tests/protractor/applications.spec.js
index ebff82e..b042d78 100644
--- a/portal/tests/protractor/applications.spec.js
+++ b/portal/tests/protractor/applications.spec.js
@@ -10,7 +10,7 @@ describe('Test Applications Dropdown', function () {
 
   describe('Test Application Switching',function(){
     it('should navigate to sandbox.',function(){
-      browser.driver.get(browser.baseUrl+'/#!/app-overview/summary');
+      browser.driver.get(browser.baseUrl+'#!/app-overview/summary');
       browser.wait(function(){
         return element(by.id('app-overview-title')).getText().then(function(text){
           return text===appName2.toUpperCase();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/coverage/coverage.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/coverage/coverage.spec.js b/portal/tests/protractor/coverage/coverage.spec.js
new file mode 100644
index 0000000..7677c2d
--- /dev/null
+++ b/portal/tests/protractor/coverage/coverage.spec.js
@@ -0,0 +1,7 @@
+'use strict';
+var util = require('../util');
+describe('Output the code coverage objects', function () {
+    it('should output the coverage object.',function(){
+      util.getCoverage();
+    });
+});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/data.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/data.spec.js b/portal/tests/protractor/data.spec.js
index d747b43..af6a0de 100644
--- a/portal/tests/protractor/data.spec.js
+++ b/portal/tests/protractor/data.spec.js
@@ -9,7 +9,7 @@ describe('Test Data', function () {
 
   describe('Add and delete', function () {
     it('should add and then delete', function () {
-      browser.driver.get(browser.baseUrl + '/#!/data');
+      browser.driver.get(browser.baseUrl + '#!/data');
 
       var entityName = 'test_e2e';
       var dateString = Date.now().toString();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/forgotPassword.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/forgotPassword.spec.js b/portal/tests/protractor/forgotPassword.spec.js
index eb57878..14f160d 100644
--- a/portal/tests/protractor/forgotPassword.spec.js
+++ b/portal/tests/protractor/forgotPassword.spec.js
@@ -2,7 +2,7 @@
 var util = require('./util');
 describe('Forgot Password', function () {
   beforeEach(function(){
-    browser.driver.get(browser.baseUrl + '/');
+    browser.driver.get(browser.baseUrl + '');
     browser.waitForAngular();
     util.logout();
   });
@@ -18,7 +18,7 @@ describe('Forgot Password', function () {
     });
     element(by.id('button-forgot-password')).isPresent().then(function () {
       element(by.id('button-forgot-password')).click();
-      browser.driver.get(browser.baseUrl+'/#!/forgot-password')
+      browser.driver.get(browser.baseUrl+'#!/forgot-password')
     });
     browser.wait(function () {
       return browser.driver.getCurrentUrl().then(function (url) {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/login.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/login.spec.js b/portal/tests/protractor/login.spec.js
new file mode 100644
index 0000000..c8b895f
--- /dev/null
+++ b/portal/tests/protractor/login.spec.js
@@ -0,0 +1,45 @@
+'use strict';
+var util = require('./util');
+describe('Login ', function () {
+
+  beforeEach(function () {
+    browser.driver.get(browser.baseUrl + '');
+  });
+
+  describe('should login', function () {
+    it('should fail to login', function () {
+
+      if (browser.params.useSso) {
+        return;
+      }
+      util.logout();
+
+      browser.wait(function () {
+        return element(by.model('login.username')).isPresent();
+      });
+
+      element(by.model('login.username')).isPresent().then(function () {
+        element(by.id('login-username')).sendKeys('baduser');
+        element(by.id('login-password')).sendKeys('badpassword');
+        element(by.id('button-login')).submit();
+      });
+
+      browser.wait(function(){
+        return  element(by.id('loginError')).isPresent();
+      })
+    });
+    it('should logout after login', function () {
+      util.login();
+      browser.wait(function(){
+        return browser.driver.getCurrentUrl().then(function (url) {
+          var test = /org-overview/.test(url) || url.indexOf('org-overview')>0;
+          test && util.logout();
+          return test;
+        });
+      })
+      browser.wait(function(){
+        return  element(by.id('login-username')).isPresent();
+      })
+    });
+  });
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/organization.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/organization.spec.js b/portal/tests/protractor/organization.spec.js
index 532358b..33d25a7 100644
--- a/portal/tests/protractor/organization.spec.js
+++ b/portal/tests/protractor/organization.spec.js
@@ -9,7 +9,7 @@ describe('Test Org Dropdown', function () {
   describe('Test Org Switching',function(){
     var appName = browser.params.orgName;
     it('should navigate to sandbox.',function(){
-      browser.driver.get(browser.baseUrl+'/#!/org-overview');
+      browser.driver.get(browser.baseUrl+'#!/org-overview');
       browser.wait(function () {
         return element.all(by.repeater("(k,v) in organizations")).count().then(function(count){
           var appCount =  count >0;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/profile.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/profile.spec.js b/portal/tests/protractor/profile.spec.js
index f93073c..13e9bf0 100644
--- a/portal/tests/protractor/profile.spec.js
+++ b/portal/tests/protractor/profile.spec.js
@@ -12,7 +12,7 @@ describe('Test User Profile', function () {
       return;
     }
     it('should set email to some random value',function(){
-      browser.driver.get(browser.baseUrl+'/#!/profile');
+      browser.driver.get(browser.baseUrl+'#!/profile');
       element(by.id('account-link')).click();
       element(by.model('user.email')).isPresent().then(function() {
         element(by.id('account-link')).click();
@@ -66,8 +66,8 @@ describe('Test User Profile', function () {
         //this will not work with sso since its an enterprise config.
         return;
       }
-      browser.driver.get(browser.baseUrl+'/#!/org-overview');
-      browser.driver.get(browser.baseUrl+'/#!/profile');
+      browser.driver.get(browser.baseUrl+'#!/org-overview');
+      browser.driver.get(browser.baseUrl+'#!/profile');
       var email = element(by.model('user.email'));
       email.isPresent().then(function() {
         expect(email.getAttribute('value')).toEqual(browser.params.login.user);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/roles.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/roles.spec.js b/portal/tests/protractor/roles.spec.js
new file mode 100644
index 0000000..98956d0
--- /dev/null
+++ b/portal/tests/protractor/roles.spec.js
@@ -0,0 +1,40 @@
+'use strict';
+var util = require('./util');
+describe('Roles ', function () {
+
+  beforeEach(function () {
+    util.login();
+    util.navigate(browser.params.orgName,browser.params.appName1);
+    browser.driver.get(browser.baseUrl + '#!/roles');
+  });
+
+  describe('add and delete', function () {
+    it('should add and then delete', function () {
+      var dateString = Date.now().toString();
+      browser.wait(function(){
+        return element(by.id('add-role-btn')).isDisplayed();
+      });
+      element(by.id('add-role-btn')).isDisplayed().then(function(){
+        element(by.id('add-role-btn')).click();
+      });
+      element(by.id('new-role-roletitle')).isDisplayed().then(function(){
+        element(by.id('new-role-roletitle')).sendKeys('title'+dateString);
+        element(by.id('new-role-rolename')).sendKeys('name'+dateString);
+        element(by.id('dialogButton-roles')).submit();
+      });
+      element(by.id('role-title'+dateString+'-link')).isDisplayed().then(function(){
+        element(by.id('role-title'+dateString+'-link')).click();
+      });
+      element(by.id('role-title'+dateString+'-cb')).isDisplayed().then(function(){
+        element(by.id('role-title'+dateString+'-cb')).click();
+        element(by.id('delete-role-btn')).click();
+        element(by.id('dialogButton-deleteroles')).submit();
+      });
+      browser.wait(function(){
+        return element(by.id('role-title'+dateString+'-cb')).isPresent().then(function (present) {
+          return !present;
+        });
+      });
+    });
+  });
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/shell.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/shell.spec.js b/portal/tests/protractor/shell.spec.js
new file mode 100644
index 0000000..f067596
--- /dev/null
+++ b/portal/tests/protractor/shell.spec.js
@@ -0,0 +1,121 @@
+'use strict';
+var util = require('./util');
+describe('Shell ', function () {
+
+  beforeEach(function () {
+    util.login();
+    util.navigate(browser.params.orgName,browser.params.appName1);
+    browser.driver.get(browser.baseUrl + '#!/shell');
+  });
+
+  describe('do a post and delete', function () {
+    it('should add and then delete', function () {
+      var dateString = Date.now().toString();
+      //browser.driver.get(browser.baseUrl + '#!/shell');
+
+      //Make sure shell window is displayed
+      browser.wait(function(){
+        return element(by.id("shell-input")).isDisplayed();
+      });
+      //POST:::do a post to add a "/tests" entity
+      element(by.id("shell-input")).isDisplayed().then(function(){
+        element(by.id('shell-input')).clear();
+        element(by.id('shell-input')).sendKeys('post /tests {"name":"' + dateString +'"}', protractor.Key.RETURN);
+      });
+      //make sure call has returned before proceeding
+      browser.wait(function(){
+        return element(by.id('lastshelloutput')).getInnerHtml().then(function(text) {
+          return text.indexOf('{') === 0;
+        });
+      });
+      //verify that return values are as expected
+      element(by.id('lastshelloutput')).getInnerHtml().then(function(text){
+        var json = JSON.parse(text);
+        var entity = json.entities[0]["name"];
+        expect(entity).toEqual(dateString);
+      });
+
+      //PUT:::clear the input field and then update the entity with a PUT command
+      var newfield = "newfield";
+      element(by.id("shell-input")).isDisplayed().then(function(){
+        element(by.id('shell-input')).clear();
+        element(by.id('shell-input')).sendKeys('put /tests/' + dateString +' {"'+newfield+'":"'+newfield+'"}', protractor.Key.RETURN);
+      });
+      //make sure call finished before proceeding
+      browser.wait(function(){
+        return element(by.id('lastshelloutput')).getInnerHtml().then(function(text) {
+          return text.indexOf('{') === 0;
+        });
+      });
+      //verify return values are good
+      element(by.id('lastshelloutput')).getInnerHtml().then(function(text){
+        var json = JSON.parse(text);
+        var entity = json.entities[0][newfield];
+        expect(entity).toEqual(newfield);
+      });
+
+      //GET:::clear input field, then do a GET to make sure entity is returned properly
+      element(by.id("shell-input")).isDisplayed().then(function(){
+        element(by.id('shell-input')).clear();
+        element(by.id('shell-input')).sendKeys('get /tests/' + dateString, protractor.Key.RETURN);
+      });
+      //make sure call has finished before proceeding
+      browser.wait(function(){
+        return element(by.id('lastshelloutput')).getInnerHtml().then(function(text) {
+          return text.indexOf('{') === 0;
+        });
+      });
+      //verify that the output is correct
+      element(by.id('lastshelloutput')).getInnerHtml().then(function(text){
+        var json = JSON.parse(text);
+        var field = json.entities[0]["name"];
+        expect(field).toEqual(dateString);
+        field = json.entities[0][newfield];
+        expect(field).toEqual(newfield);
+      });
+
+
+      //DELETE:::clear the input field and then delete the entity
+      element(by.id("shell-input")).isDisplayed().then(function(){
+        element(by.id('shell-input')).clear();
+        element(by.id('shell-input')).sendKeys('delete /tests/' + dateString, protractor.Key.RETURN);
+      });
+      //make sure the call finished before proceeding
+      browser.wait(function(){
+        return element(by.id('lastshelloutput')).getInnerHtml().then(function(text) {
+          return text.indexOf('{') === 0;
+        });
+      });
+      //make sure the output from the delete was good
+      element(by.id('lastshelloutput')).getInnerHtml().then(function(text){
+        var json = JSON.parse(text);
+        var action = json.action;
+        expect(action).toEqual('delete');
+        var entity = json.entities[0]["name"];
+        expect(entity).toEqual(dateString);
+      });
+
+
+      //GET:::clear input field, then do a GET to make sure entity has indeed been deleted
+      element(by.id("shell-input")).isDisplayed().then(function(){
+        element(by.id('shell-input')).clear();
+        element(by.id('shell-input')).sendKeys('get /tests/' + dateString, protractor.Key.RETURN);
+      });
+      //make sure call has finished before proceeding
+      browser.wait(function(){
+        return element(by.id('lastshelloutput')).getInnerHtml().then(function(text) {
+          return text.indexOf('{') === 0;
+        });
+      });
+      //verify that the output is correct
+      element(by.id('lastshelloutput')).getInnerHtml().then(function(text){
+        var json = JSON.parse(text);
+        var field = json.error;
+        expect(field).toEqual('service_resource_not_found');
+      });
+
+
+
+    });
+  });
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/users.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/users.spec.js b/portal/tests/protractor/users.spec.js
index f8a50ff..9392b6e 100644
--- a/portal/tests/protractor/users.spec.js
+++ b/portal/tests/protractor/users.spec.js
@@ -5,51 +5,14 @@ describe('Users ', function () {
   beforeEach(function () {
     util.login();
     util.navigate(browser.params.orgName,browser.params.appName1);
-    browser.driver.get(browser.baseUrl + '/#!/users');
+    browser.driver.get(browser.baseUrl + '#!/users');
   });
 
   describe('add and delete', function () {
     it('should add and then delete', function () {
-      var dateString = Date.now().toString();
-      browser.driver.get(browser.baseUrl + '/#!/users');
-
-      browser.wait(function(){
-        return element(by.id("new-user-button")).isDisplayed();
-      });
-      element(by.id("new-user-button")).isDisplayed().then(function(){
-        element(by.id("new-user-button")).click();
-      });
-      browser.wait(function(){
-        return element(by.id("new-user-username")).isDisplayed();
-      });
-      element(by.id('new-user-username')).isDisplayed().then(function () {
-        //fill in data
-        browser.sleep(500);
-        element(by.id('new-user-username')).clear();
-        element(by.id('new-user-username')).sendKeys('test' + dateString);
-        element(by.id('new-user-fullname')).sendKeys('Test ' + dateString);
-        element(by.id('new-user-email')).sendKeys('sfeldman+test' + dateString + '@apigee.com');
-        element(by.id('new-user-password')).sendKeys('P@ssw0rd1');
-        element(by.id('new-user-re-password')).sendKeys('P@ssw0rd1');
-        browser.sleep(1000);
-        element(by.id('dialogButton-users')).submit();
-      });
-
-      browser.wait(function () {
-        return element(by.id('user-' + 'test' + dateString + '-checkbox')).isPresent();
-      });
-      element(by.id('user-' + 'test' + dateString + '-checkbox')).isPresent().then(function () {
-        element(by.id('user-' + 'test' + dateString + '-checkbox')).click();
-        browser.sleep(1000);
-        element(by.id('delete-user-button')).click();
-        element(by.id('dialogButton-deleteusers')).submit();
-      });
-      //need to wait for the element not to be there.
-      browser.wait(function(){
-        return element(by.id('user-' + 'test' + dateString + '-checkbox')).isPresent().then(function (present) {
-          return !present;
-        });
-      });
+      var username = 'test' + Date.now().toString();
+      util.createUser(username);
+      util.deleteUser(username);
     });
   });
 });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractor/util.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractor/util.js b/portal/tests/protractor/util.js
index 39bd7a0..9118bcb 100644
--- a/portal/tests/protractor/util.js
+++ b/portal/tests/protractor/util.js
@@ -1,5 +1,6 @@
 'use strict';
-
+var fs=require('fs');
+var path=require('path');
 module.exports = {
   loggedin:false,
   login: function(){
@@ -7,10 +8,10 @@ module.exports = {
       return;
     }
     var self = this;
-    browser.driver.get(browser.baseUrl + '/');
+    browser.driver.get(browser.baseUrl + '');
     browser.wait(function () {
       return browser.driver.getCurrentUrl().then(function (url) {
-        return/login/.test(url) || url.indexOf('accounts/sign_in')>0;
+        return /login/.test(url) || url.indexOf('accounts/sign_in')>0;
       });
     });
     if(browser.params.useSso){
@@ -57,7 +58,7 @@ module.exports = {
   logout:function(){
     if(this.loggedin){
       this.loggedin=false;
-      browser.driver.get(browser.baseUrl+'/#!/logout');
+      browser.driver.get(browser.baseUrl+'#!/logout');
       browser.wait(function () {
         return browser.driver.getCurrentUrl().then(function (url) {
           var test =  /login/.test(url) || url.indexOf('accounts/sign_in')>0;
@@ -68,7 +69,7 @@ module.exports = {
     }
   },
   navigate:function(orgName,appName){
-    browser.driver.get(browser.baseUrl+'/#!/org-overview');
+    browser.driver.get(browser.baseUrl+'#!/org-overview');
     browser.sleep(1000);
     browser.wait(function () {
       return element.all(by.repeater("(k,v) in organizations")).count().then(function(count){
@@ -100,11 +101,79 @@ module.exports = {
       element(by.id('app-'+appName+'-link-id')).click();
       browser.sleep(1000);
     });
-    browser.driver.get(browser.baseUrl+'/#!/app-overview/summary');
+    browser.driver.get(browser.baseUrl+'#!/app-overview/summary');
     browser.wait(function(){
       return element(by.id('app-overview-title')).getText().then(function(text){
         return text===appName.toUpperCase();
       })
     });
+  },
+  createUser:function(username){
+    this.login();
+    this.navigate(browser.params.orgName,browser.params.appName1);
+    browser.driver.get(browser.baseUrl + '#!/users');
+    browser.wait(function(){
+      return element(by.id("new-user-button")).isDisplayed();
+    });
+    element(by.id("new-user-button")).isDisplayed().then(function(){
+      element(by.id("new-user-button")).click();
+    });
+    browser.wait(function(){
+      return element(by.id("new-user-username")).isDisplayed();
+    });
+    element(by.id('new-user-username')).isDisplayed().then(function () {
+      //fill in data
+      browser.sleep(500);
+      element(by.id('new-user-username')).clear();
+      element(by.id('new-user-username')).sendKeys(username);
+      element(by.id('new-user-fullname')).sendKeys('Test ' + username);
+      element(by.id('new-user-email')).sendKeys('sfeldman+test' + username + '@apigee.com');
+      element(by.id('new-user-password')).sendKeys('P@ssw0rd1');
+      element(by.id('new-user-re-password')).sendKeys('P@ssw0rd1');
+      browser.sleep(1000);
+      element(by.id('dialogButton-users')).submit();
+    });
+
+    browser.wait(function () {
+      return element(by.id('user-' + username + '-checkbox')).isPresent();
+    });
+  },
+  deleteUser:function(username){
+    this.login();
+    this.navigate(browser.params.orgName,browser.params.appName1);
+    browser.driver.get(browser.baseUrl + '#!/users');
+
+    browser.wait(function () {
+      return element(by.id('user-' + username + '-checkbox')).isPresent();
+    });
+    
+    element(by.id('user-' + username + '-checkbox')).isPresent().then(function () {
+      element(by.id('user-' + username + '-checkbox')).click();
+      browser.sleep(1000);
+      element(by.id('delete-user-button')).click();
+      element(by.id('dialogButton-deleteusers')).submit();
+    });
+    //need to wait for the element not to be there.
+    browser.wait(function(){
+      return element(by.id('user-' + username + '-checkbox')).isPresent().then(function (present) {
+        return !present;
+      });
+    });
+  },
+  getCoverage:function(){
+    var dname=path.normalize(__dirname+"/../../reports");
+    var fname=dname+'/coverage.json';
+    var browserCoverageObject="('__coverage__' in window)?__coverage__:null";
+    if(!fs.existsSync(dname)){
+      fs.mkdirSync(dname);
+    }
+    // console.log(__dirname, dname, fname);
+    browser.driver.executeScript("return "+browserCoverageObject+';').then(function(val){
+      if(val){
+        fs.writeFileSync(fname, JSON.stringify(val));
+      }else{
+        console.warn("No coverage object in the browser.")
+      }
+    });
   }
 };

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/protractorConf.js
----------------------------------------------------------------------
diff --git a/portal/tests/protractorConf.js b/portal/tests/protractorConf.js
index 5aeb5d3..69292c9 100644
--- a/portal/tests/protractorConf.js
+++ b/portal/tests/protractorConf.js
@@ -51,6 +51,7 @@ exports.config = {
   // Spec patterns are relative to the location of this config.
   specs: [
     'protractor/*.spec.js',
+    'protractor/coverage/coverage.spec.js'
   ],
 
   // ----- Capabilities to be passed to the webdriver instance ----
@@ -79,7 +80,7 @@ exports.config = {
   //
   // A base URL for your application under test. Calls to protractor.get()
   // with relative paths will be prepended with this.
-  baseUrl: 'http://localhost:3000',
+  baseUrl: 'http://localhost:3000/',
 
 
   // Options to be passed to Jasmine-node.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/097fd3bd/portal/tests/unit/sample.spec.js
----------------------------------------------------------------------
diff --git a/portal/tests/unit/sample.spec.js b/portal/tests/unit/sample.spec.js
index 1e2c540..e00b558 100644
--- a/portal/tests/unit/sample.spec.js
+++ b/portal/tests/unit/sample.spec.js
@@ -18,6 +18,7 @@ describe('PageCtrl', function(){
         'ug':{
           getAppSettings:function(){}
         },
+        'help':{},
         'utility':{},
         '$rootScope':$rootScope,
         '$location':{