From 245d6092d4091cc3380bfc9306653c69f45c596f Mon Sep 17 00:00:00 2001
From: pkupczyk <pkupczyk>
Date: Thu, 21 Mar 2013 17:07:48 +0000
Subject: [PATCH] SP-571 / BIS-372: Meta projects: OBSERVERs can have meta
 projects, INSTANCE_OBSERVERs can get them for specified users - add new
 methods to the openbis.js facade and test them with qunit

SVN: 28670
---
 .../openbis/public/resources/js/openbis.js    | 28 +++++++++++
 .../webapps/openbis-test/html/openbis-test.js | 48 +++++++++++++++++++
 2 files changed, 76 insertions(+)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
index 2f5ebb65ef3..f66cb59c561 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js
@@ -911,6 +911,20 @@ openbis.prototype.listMetaprojects = function(action) {
 	});
 }
 
+/**
+ * @see IGeneralInformationService.listMetaprojectsOnBehalfOfUser(String, String)
+ * @method
+ */
+openbis.prototype.listMetaprojectsOnBehalfOfUser = function(userId, action) {
+	this._internal.ajaxRequest({
+		url: this._internal.generalInfoServiceUrl,
+		data: { "method" : "listMetaprojectsOnBehalfOfUser",
+				"params" : [ this.getSession(), userId ] 
+			  },
+		success: action
+	});
+}
+
 /**
  * @see IGeneralInformationService.getMetaproject(String, IMetaprojectId)
  * @method
@@ -925,6 +939,20 @@ openbis.prototype.getMetaproject = function(metaprojectId, action) {
 	});
 }
 
+/**
+ * @see IGeneralInformationService.getMetaprojectOnBehalfOfUser(String, IMetaprojectId, String)
+ * @method
+ */
+openbis.prototype.getMetaprojectOnBehalfOfUser = function(metaprojectId, userId, action) {
+	this._internal.ajaxRequest({
+		url: this._internal.generalInfoServiceUrl,
+		data: { "method" : "getMetaprojectOnBehalfOfUser",
+				"params" : [ this.getSession(), metaprojectId, userId ] 
+			  },
+		success: action
+	});
+}
+
 /**
  * @see IGeneralInformationService.listAttachmentsForProject(String, IProjectId, boolean)
  * @method
diff --git a/screening/sourceTest/core-plugins/JsTests/1/as/webapps/openbis-test/html/openbis-test.js b/screening/sourceTest/core-plugins/JsTests/1/as/webapps/openbis-test/html/openbis-test.js
index 32ebbbe57f0..0de5a32211e 100644
--- a/screening/sourceTest/core-plugins/JsTests/1/as/webapps/openbis-test/html/openbis-test.js
+++ b/screening/sourceTest/core-plugins/JsTests/1/as/webapps/openbis-test/html/openbis-test.js
@@ -872,6 +872,30 @@ test("createMetaproject(), listMetaprojects()", function(){
 	});
 });
 
+test("createMetaproject(), listMetaprojectsOnBehalfOfUser()", function(){
+	var powerUserId = "power_user";
+	var powerUserPassword = "password";
+
+	createFacadeAndLoginForUserAndPassword(powerUserId, powerUserPassword, function(facadePowerUser){
+		var powerUserMetaprojectIdentifier = "/" + powerUserId + "/JS_TEST_METAPROJECT_POWER_USER"
+		createNewMetaproject(facadePowerUser, powerUserMetaprojectIdentifier, function(response){
+			
+			createFacadeAndLoginForUserAndPassword(testUserId, testUserPassword, function(facadeTestUser){
+				var testUserMetaprojectIdentifier = "/" + testUserId + "/JS_TEST_METAPROJECT";
+				createNewMetaproject(facadeTestUser, testUserMetaprojectIdentifier, function(response){
+					
+					facadeTestUser.listMetaprojectsOnBehalfOfUser(powerUserId, function(response){
+						assertObjectsCount(response.result, 1);
+						assertObjectsWithValues(response.result, 'name', ['JS_TEST_METAPROJECT_POWER_USER']);
+						facadePowerUser.close();
+						facadeTestUser.close();
+					});
+				});
+			}, testUrl);
+		})
+	}, testUrl);
+});
+
 test("createMetaproject(), getMetaproject()", function(){
 	createFacadeAndLogin(function(facade){
 		var metaprojectIdentifier = "/" + testUserId + "/JS_TEST_METAPROJECT";
@@ -887,6 +911,30 @@ test("createMetaproject(), getMetaproject()", function(){
 	});
 });
 
+test("createMetaproject(), getMetaprojectOnBehalfOfUser()", function(){
+	var powerUserId = "power_user";
+	var powerUserPassword = "password";
+
+	createFacadeAndLoginForUserAndPassword(powerUserId, powerUserPassword, function(facadePowerUser){
+		var powerUserMetaprojectIdentifier = "/" + powerUserId + "/JS_TEST_METAPROJECT_POWER_USER";
+		var powerUserMetaprojectId = createMetaprojectIdentifierId(powerUserMetaprojectIdentifier);
+		createNewMetaproject(facadePowerUser, powerUserMetaprojectIdentifier, function(response){
+			
+			createFacadeAndLoginForUserAndPassword(testUserId, testUserPassword, function(facadeTestUser){
+				var testUserMetaprojectIdentifier = "/" + testUserId + "/JS_TEST_METAPROJECT";
+				createNewMetaproject(facadeTestUser, testUserMetaprojectIdentifier, function(response){
+					
+					facadeTestUser.getMetaprojectOnBehalfOfUser(powerUserMetaprojectId, powerUserId, function(response){
+						equal(response.result.metaproject.identifier, powerUserMetaprojectIdentifier, 'Metaproject identifier is correct');
+						facadePowerUser.close();
+						facadeTestUser.close();
+					});
+				});
+			}, testUrl);
+		})
+	}, testUrl);
+});
+
 test("createMetaproject(), updateMetaproject()", function(){
 	createFacadeAndLogin(function(facade){
 		var metaprojectIdentifier = "/" + testUserId + "/JS_TEST_METAPROJECT";
-- 
GitLab