ATF - Select member from Group

gtk
Mega Sage

in ATF usually we need to select a member of assignment group to impersonate and now we got a requirement to make it dynamic like select any one from assignment group to be impersonated.

 

for example : if Group A is having 6 users then system has to impersonate to anyone of 6 users (randomly)

here is the piece of code i am using but not worked 'Run Server Side Script' before the impersonation step

(function(outputs, steps, stepResult, assertEqual) {
	var group ;
	var chg = new GlideRecord('change_request');
	chg.get(steps('795486dbdb51f7000eb3ec51ca9619ee').record_id); //substitute the sys_id from the previous test step that references your change request
chg.query();
	while(chg.next()){
		group = chg.assignment_group;
	}

	var grMember = new GlideRecord('sys_user_grmember');
	grMember.addQuery('group', group); //call group with sys_id
	grMember.query();

	if (grMember.next()) { //this will get the first group member record that is returned
		outputs.table = 'sys_user';
		outputs.record_id = grMember.user;

		if (outputs.record_id) {
			stepResult.setOutputMessage("Successfully collected user sys_id");
			return true;
		} else {
			stepResult.setOutputMessage("Failed to collect user sys_id"); //This likely means that the group member record is bad
			return false;
		}
	} else {
		stepResult.setOutputMessage("Failed to find group members"); //This likely means that there are no group members
		return false;
	}
})(outputs, steps, stepResult, assertEqual);
1 ACCEPTED SOLUTION

Vaibhav
Mega Guru

Hi

I try this on Incident record, which is created by step: Open New Form and after step: Submit a Form and use this record sys_id in step: Run Server Side Script.

Please go through the below code.

Hopefully, it will helpful for you.

Regards,

Vaibhav Chaudhari

 

(function(outputs, steps, stepResult, assertEqual) {
	describe('making jasmine wiggle when poked', function (){
		var STEP_3_SYS_ID= '31dc97d3371533008020036973990eb8';   // Incident Submit form step sys_id
		it('any RITM exist from STEP_3', function(){
			
			var step_3_output = steps(STEP_3_SYS_ID);
			gs.warn(JSON.stringify(step_3_output));
			gs.warn("record_id = " + step_3_output.record_id);
			gs.warn("------------------------------------------------------");
			
			var INC = new GlideRecord('incident');
			INC.addQuery('sys_id',step_3_output.record_id);
			INC.query();
			INC.next();
			gs.log("Found Group : " + INC.assignment_group);
			gs.log("Found INC : " + INC.number);
			gs.log("Found Caller : " + INC.caller_id);
			
			var grMember = new GlideRecord('sys_user_grmember');
			grMember.addQuery('group',INC.assignment_group); //call group with sys_id
			grMember.query();
			if(grMember.next()) { //this will get the first group member record that is returned
				expect(grMember.next());
				
				outputs.table = 'sys_user_grmember';
				outputs.record_id = grMember.user.sys_id;
				
				gs.log("Found User : " + grMember.user.sys_id);
				
				stepResult.setOutputMessage("Successfully collected user sys_id");
				var sys_id = outputs.record_id;
			}
		});
	});
	
})(outputs, steps, stepResult, assertEqual);
jasmine.getEnv().execute();

View solution in original post

5 REPLIES 5

Vaibhav
Mega Guru

Hi

I try this on Incident record, which is created by step: Open New Form and after step: Submit a Form and use this record sys_id in step: Run Server Side Script.

Please go through the below code.

Hopefully, it will helpful for you.

Regards,

Vaibhav Chaudhari

 

(function(outputs, steps, stepResult, assertEqual) {
	describe('making jasmine wiggle when poked', function (){
		var STEP_3_SYS_ID= '31dc97d3371533008020036973990eb8';   // Incident Submit form step sys_id
		it('any RITM exist from STEP_3', function(){
			
			var step_3_output = steps(STEP_3_SYS_ID);
			gs.warn(JSON.stringify(step_3_output));
			gs.warn("record_id = " + step_3_output.record_id);
			gs.warn("------------------------------------------------------");
			
			var INC = new GlideRecord('incident');
			INC.addQuery('sys_id',step_3_output.record_id);
			INC.query();
			INC.next();
			gs.log("Found Group : " + INC.assignment_group);
			gs.log("Found INC : " + INC.number);
			gs.log("Found Caller : " + INC.caller_id);
			
			var grMember = new GlideRecord('sys_user_grmember');
			grMember.addQuery('group',INC.assignment_group); //call group with sys_id
			grMember.query();
			if(grMember.next()) { //this will get the first group member record that is returned
				expect(grMember.next());
				
				outputs.table = 'sys_user_grmember';
				outputs.record_id = grMember.user.sys_id;
				
				gs.log("Found User : " + grMember.user.sys_id);
				
				stepResult.setOutputMessage("Successfully collected user sys_id");
				var sys_id = outputs.record_id;
			}
		});
	});
	
})(outputs, steps, stepResult, assertEqual);
jasmine.getEnv().execute();

fantastic it is working and selecting user from the assignment group. a small modification

 

for change request - > it has to impersonate user from the approval group of change (any one has awaiting approval for a change)

 

and here is the code i modified according to it

(function(outputs, steps, stepResult, assertEqual) {
	describe('making jasmine wiggle when poked', function (){
		var STEP_3_SYS_ID = 'f4b5c65fdb51f7000eb3ec51ca96194e';   // Change Submit form step sys_id
		it('any RITM exist from STEP_3', function(){
			
			var step_3_output = steps(STEP_3_SYS_ID);
			gs.warn(JSON.stringify(step_3_output));
			gs.warn("record_id = " + step_3_output.record_id);
			gs.warn("------------------------------------------------------");
			
			var CHG = new GlideRecord('sysapproval_approver');
			CHG.addQuery('sysapproval',step_3_output.record_id);
			CHG.query();
			CHG.next();
			gs.log("Found Group : " + CHG.assignment_group);
			gs.log("Found CHG : " + CHG.number);
			gs.log("Found Caller : " + CHG.caller_id);
			
			var grMember = new GlideRecord('sys_user_grmember');
			grMember.addQuery('group',CHG.assignment_group); //call group with sys_id
			grMember.query();
			if(grMember.next()) { //this will get the first group member record that is returned
				expect(grMember.next());
				
				outputs.table = 'sys_user_grmember';
				outputs.record_id = grMember.user.sys_id;
				
				gs.log("Found User : " + grMember.user.sys_id);
				
				stepResult.setOutputMessage("Successfully collected user sys_id");
				var sys_id = outputs.record_id;
			}
		});
	});
	
})(outputs, steps, stepResult, assertEqual);
jasmine.getEnv().execute();

Thanks to appreciating.

If a script is working fine please mark it correct it will also easy to find others & I will look into it respond you asap. 

I do not understand why you want to peek approvers also, because generally they didn't see change form or is that you want that? 

yes we are configuring ATF Test Step on change management