#=============================================================================================
#
# @TITLE			Configure users - Rename/Delete Group with members
#
# @NUMBER			DBM3_DBUser_018_Configure_users_NewGroup_wUser_rename_delete
#
# @DESCRIPTION		Rename/Delete Group which has member(s)
#
#=============================================================================================

static TestName = "DBM3_DBUser_018_Configure_users_NewGroup_wUser_rename_delete";
static expHeaderTitle = "Configure Database Users / User Groups";
static expHeaderSubtitle = "Configure database user for the database administrator 'DBA'.";
static Failure = 0;

#=============================================================================================
# @STEP 1			check if Config Wizard is open --> texit
#=============================================================================================
if (win_exists("Configuration Wizard",0) != E_OK)
{
	tl_step ("Wizard not open",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	texit("true");
}	

#=============================================================================================
# @STEP 2		check header title ---> texit
#=============================================================================================	
#get header title
set_window("Configuration Wizard", 1);
ActiveX_get_info("DBMWfr3.Framework","HeaderTitle",HeaderTitle);
ActiveX_get_info("DBMWfr3.Framework","HeaderSubtitle",HeaderSubtitle);

# check if header title is correct
if (HeaderTitle != expHeaderTitle || HeaderSubtitle != expHeaderSubtitle)
{
	tl_step ("Header title not correct",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	texit("true");
}


#=============================================================================================
# @STEP 3		Check state of user/group list
#=============================================================================================	
toolbar_get_button("msvb_lib_toolbar",0,firstButton_Name);
if (firstButton_Name == "Close User Group")
{
	toolbar_button_press ("msvb_lib_toolbar", "Close User Group");
}


#=============================================================================================
# @STEP 4		Check TEST_GROUP ---> texit
#=============================================================================================	
set_window ("Configuration Wizard", 1);
if (list_select_item ("lvwSQLUser", "TEST_GROUP") != E_OK)
{
	tl_step ("No TEST_GROUP",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	texit("true");
}


#=============================================================================================
# @STEP 5		Check  Toolbar Buttons
#=============================================================================================	

toolbar_get_button_info("msvb_lib_toolbar","New User",ENABLED,btn_NewUser);
toolbar_get_button_info("msvb_lib_toolbar","New User Group",ENABLED,btn_NewUserGroup);
toolbar_get_button_info("msvb_lib_toolbar","Properties",ENABLED,btn_Properties);
toolbar_get_button_info("msvb_lib_toolbar","Copy",ENABLED,btn_Copy);
toolbar_get_button_info("msvb_lib_toolbar","Delete",ENABLED,btn_Delete);
toolbar_get_button_info("msvb_lib_toolbar","Rename",ENABLED,btn_Rename);

if (btn_NewUser == 0 || btn_NewUserGroup == 0 || btn_Properties == 0 || btn_Copy == 1 || btn_Delete == 0 || btn_Rename == 0 )
{
	tl_step ("Toolbar Buttons not in correct state",1,"Testname: " & TestName & ", Line:" & getvar("line_no")); 
	Failure = 1;
}

#=============================================================================================
# @STEP 6		check members of group before renaming
#=============================================================================================	

list_select_item ("lvwSQLUser", "TEST_GROUP");
list_activate_item ("lvwSQLUser", "TEST_GROUP");

wait(2);
list_get_info("lvwSQLUser","count",members_before_rename);
if (members_before_rename == 0)
{
  tl_step ("group has no members",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
  Failure = 1;
}


#=============================================================================================
# @STEP 7		rename the Group 
#=============================================================================================	

#go back to main list
toolbar_button_press ("msvb_lib_toolbar", "Close User Group");
#rename group
toolbar_button_press ("msvb_lib_toolbar", "Rename");
edit_set ("Edit", "TEST_GROUP_RENAME");
obj_type ("Edit","<kReturn>");
#set_window("Configuration Wizard");

wait(2);
list_get_info("lvwSQLUser","count",item_count);
rename_success = "false";
for(i=0;i<item_count;i++)
{
	list_get_item("lvwSQLUser",i,item_value);
	if (item_value == "TEST_GROUP_RENAME")
	{
		rename_success = "true";
	}
}

if (rename_success == "false")
{
	tl_step ("No TEST_GROUP_RENAME - renaming failed",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	Failure = 1;
}

#=============================================================================================
# @STEP 7.1		check members of group after renaming
#=============================================================================================	

list_select_item ("lvwSQLUser", "TEST_GROUP_rename");
list_activate_item ("lvwSQLUser", "TEST_GROUP_rename");

wait(2);
list_get_info("lvwSQLUser","count",members_after_rename);

if (members_before_rename != members_after_rename)
{
	tl_step ("Number of members have changed after renaming group",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	Failure = 1;
}

#=============================================================================================
# @STEP 7.2		re-rename group to "standard" values
#=============================================================================================	

#go back to main list
toolbar_button_press ("msvb_lib_toolbar", "Close User Group");
#rename group
toolbar_button_press ("msvb_lib_toolbar", "Rename");
edit_set ("Edit", "TEST_GROUP");


#=============================================================================================
# @STEP 8		delete group
#=============================================================================================	
#count items before delete
list_get_info("lvwSQLUser","count",item_count_before_del);

#=============================================================================================
# @STEP 8.1		cancel delete & check if Group exists anymore
#=============================================================================================	

toolbar_button_press ("msvb_lib_toolbar", "Delete");

if (win_exists("Confirm SQL User Delete",0) != E_OK)
{
	tl_step ("Confirm Delete window not open",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	texit("true");
}

set_window("Confirm SQL User Delete");
button_press("Cancel");


if (win_exists("Configuration Wizard",0) != E_OK)
{
	tl_step ("No Configuration Wizard window after cancel delete group",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	texit("true");
}

set_window("Configuration Wizard");

list_get_info("lvwSQLUser","count",item_count);
if (item_count != item_count_before_del)
{
	tl_step ("number of list items changed after CANCEL deleting group",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	texit("true");
}

#=============================================================================================
# @STEP 8.2		delete the group 
#=============================================================================================	

toolbar_button_press ("msvb_lib_toolbar", "Delete");

if (win_exists("Confirm SQL User Delete",0) != E_OK)
{
	tl_step ("Confirm Delete window not open",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	texit("true");
}
set_window("Confirm SQL User Delete");

button_get_state("Default",checked);
button_get_state("Restrict",checked_2);

if (checked == 0 || checked_2 == 1)
{
	tl_step ("Check Buttons not in correct state (confirm delete window)",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	Failure=1;
}

if (button_set("Restrict",ON) != E_OK)
{
	tl_step ("Not able to set <restrict> radio Button (confirm delete window)",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	Failure=1;
}

if (button_set("Default",ON) != E_OK)
{
	tl_step ("Not able to set <default> radio Button (confirm delete window)",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	Failure=1;
}

button_press("OK");

#=============================================================================================
# @STEP 8.3		check if group was deleted
#=============================================================================================	

if (win_exists("Configuration Wizard",0) != E_OK)
{
	tl_step ("No Configuration Wizard window after cancel delete group",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	texit("true");
}

set_window("Configuration Wizard");
list_get_info("lvwSQLUser","count",item_count);

if (item_count != item_count_before_del-1 )
{
	tl_step ("More than one item was deleted",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
	Failure = 1;
}

for(i=0;i<item_count;i++)
{
	list_get_item("lvwSQLUser",i,item_value);
	if (item_value == "TEST_GROUP")
	{
		tl_step ("TEST_GROUP still exists after deleting",1,"Testname: " & TestName & ", Line:" & getvar("line_no"));
		Failure = 1;
	}
}

#=============================================================================================
# @STEP 9		check if test passed successfully
#=============================================================================================	
if (Failure == 0)
	tl_step ("Test passed successfully",0,"Testname: " & TestName & ", Line:" & getvar("line_no"));
