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, can you help us on this requirement

we are configuring ATF on change request and required to impersonate to user(randomly from approval group) who is awaiting for approvals for the change.