You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by fe...@apache.org on 2018/03/09 07:08:51 UTC

zeppelin git commit: [ZEPPELIN-3180] BUGFIX - save operation on interpreter add whitespace to permissions

Repository: zeppelin
Updated Branches:
  refs/heads/master 0267ecf76 -> 4fc048238


[ZEPPELIN-3180] BUGFIX - save operation on interpreter add whitespace to permissions

### What is this PR for?
This PR fixes a bug when unnecessary spaces are added to the permissions.

### What type of PR is it?
[Bug Fix]

### What is the Jira issue?
[ZEPPELIN-3180](https://issues.apache.org/jira/browse/ZEPPELIN-3180)

### Questions:
* Does the licenses files need update? no
* Is there breaking changes for older versions? no
* Does this needs documentation? no

Author: Savalek <de...@mail.ru>

Closes #2749 from Savalek/ZEPPELIN-3180 and squashes the following commits:

b24f1d4 [Savalek] Merge branch 'master' into ZEPPELIN-3180
b2f58fb [Savalek] Merge remote-tracking branch 'upstream/master' into ZEPPELIN-3180
84ee2cb [Savalek] Merge remote-tracking branch 'upstream/master' into ZEPPELIN-3180
28c537e [Savalek] [ZEPPELIN-3212] add test
0d4a900 [Savalek] [ZEPPELIN-3180] FIX - interpreter add whitespace to permissions


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/4fc04823
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/4fc04823
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/4fc04823

Branch: refs/heads/master
Commit: 4fc0482385a150ab6712d7f44e00e37d16cd4bdf
Parents: 0267ecf
Author: Savalek <de...@mail.ru>
Authored: Tue Feb 27 14:08:18 2018 +0300
Committer: Felix Cheung <fe...@apache.org>
Committed: Thu Mar 8 23:08:46 2018 -0800

----------------------------------------------------------------------
 zeppelin-web/e2e/home.spec.js                   | 48 ++++++++++++++++++++
 .../app/interpreter/interpreter.controller.js   |  3 ++
 2 files changed, 51 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/4fc04823/zeppelin-web/e2e/home.spec.js
----------------------------------------------------------------------
diff --git a/zeppelin-web/e2e/home.spec.js b/zeppelin-web/e2e/home.spec.js
index 7fc9499..299fbb5 100644
--- a/zeppelin-web/e2e/home.spec.js
+++ b/zeppelin-web/e2e/home.spec.js
@@ -1,4 +1,26 @@
 describe('Home e2e Test', function() {
+  /*Common methods for interact with elements*/
+  let clickOn = function(elem) {
+    browser.actions().mouseMove(elem).click().perform()
+  }
+
+  let sendKeysToInput = function(input, keys) {
+    cleanInput(input)
+    input.sendKeys(keys)
+  }
+
+  let cleanInput = function(inputElem) {
+    inputElem.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "a"))
+    inputElem.sendKeys(protractor.Key.BACK_SPACE)
+  }
+
+  let scrollToElementAndClick = function(elem) {
+    browser.executeScript("arguments[0].scrollIntoView(false);", elem.getWebElement())
+    browser.sleep(100)
+    clickOn(elem)
+  }
+
+  //tests
   it('should have a welcome message', function() {
     browser.get('http://localhost:8080');
     var welcomeElem = element(by.id('welcome'))
@@ -15,4 +37,30 @@ describe('Home e2e Test', function() {
     var btn = element(by.cssContainingText('a', 'Create new note'))
     expect(btn.isPresent()).toBe(true)
   })
+
+  it('correct save permission in interpreter', function() {
+    var ownerName = 'admin'
+    var interpreterName = 'interpreter_e2e_test'
+    clickOn(element(by.xpath('//span[@class="username ng-binding"]')))
+    clickOn(element(by.xpath('//a[@href="#/interpreter"]')))
+    clickOn(element(by.xpath('//button[@ng-click="showAddNewSetting = !showAddNewSetting"]')))
+    sendKeysToInput(element(by.xpath('//input[@id="newInterpreterSettingName"]')), interpreterName)
+    clickOn(element(by.xpath('//select[@ng-model="newInterpreterSetting.group"]')))
+    browser.sleep(500)
+    browser.actions().sendKeys(protractor.Key.ARROW_DOWN).perform()
+    browser.actions().sendKeys(protractor.Key.ENTER).perform()
+    clickOn(element(by.xpath('//div[@ng-show="showAddNewSetting"]//input[@id="idShowPermission"]')))
+    sendKeysToInput(element(by.xpath('//div[@ng-show="showAddNewSetting"]//input[@class="select2-search__field"]')), ownerName)
+    browser.sleep(500)
+    browser.actions().sendKeys(protractor.Key.ENTER).perform()
+    scrollToElementAndClick(element(by.xpath('//span[@ng-click="addNewInterpreterSetting()"]')))
+    scrollToElementAndClick(element(by.xpath('//*[@id="' + interpreterName + '"]//span[@class="fa fa-pencil"]')))
+    scrollToElementAndClick(element(by.xpath('//*[@id="' + interpreterName + '"]//button[@type="submit"]')))
+    clickOn(element(by.xpath('//div[@class="bootstrap-dialog-footer-buttons"]//button[contains(text(), \'OK\')]')))
+    browser.get('http://localhost:8080/#/interpreter');
+    var text = element(by.xpath('//*[@id="' + interpreterName + '"]//li[contains(text(), \'admin\')]')).getText()
+    scrollToElementAndClick(element(by.xpath('//*[@id="' + interpreterName + '"]//span//span[@class="fa fa-trash"]')))
+    clickOn(element(by.xpath('//div[@class="bootstrap-dialog-footer-buttons"]//button[contains(text(), \'OK\')]')))
+    expect(text).toEqual(ownerName);
+  })
 })

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/4fc04823/zeppelin-web/src/app/interpreter/interpreter.controller.js
----------------------------------------------------------------------
diff --git a/zeppelin-web/src/app/interpreter/interpreter.controller.js b/zeppelin-web/src/app/interpreter/interpreter.controller.js
index 060c6b6..d220dba 100644
--- a/zeppelin-web/src/app/interpreter/interpreter.controller.js
+++ b/zeppelin-web/src/app/interpreter/interpreter.controller.js
@@ -379,6 +379,9 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou
             setting.option.remote = true;
           }
           setting.option.owners = angular.element('#' + setting.name + 'Owners').val();
+          for (let i = 0; i < setting.option.owners.length; i++) {
+            setting.option.owners[i] = setting.option.owners[i].trim();
+          }
 
           let request = {
             option: angular.copy(setting.option),