mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Using Critical Test settings instead of popup
This commit is contained in:
parent
f9369da21a
commit
f6dcba99ad
|
@ -1535,10 +1535,10 @@ CLASS lcl_persistence_settings IMPLEMENTATION.
|
||||||
ro_settings->set_proxy_port( '' ).
|
ro_settings->set_proxy_port( '' ).
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
TRY.
|
TRY.
|
||||||
lv_critical_tests_as_boolean = lv_critical_tests_as_string = lcl_app=>db( )->read(
|
lv_critical_tests_as_string = lcl_app=>db( )->read(
|
||||||
iv_type = 'SETTINGS'
|
iv_type = 'SETTINGS'
|
||||||
iv_value = 'CRIT_TESTS'
|
iv_value = 'CRIT_TESTS' ).
|
||||||
).
|
lv_critical_tests_as_boolean = lv_critical_tests_as_string.
|
||||||
ro_settings->set_run_critical_tests( lv_critical_tests_as_boolean ).
|
ro_settings->set_run_critical_tests( lv_critical_tests_as_boolean ).
|
||||||
CATCH lcx_not_found.
|
CATCH lcx_not_found.
|
||||||
ro_settings->set_run_critical_tests( abap_false ).
|
ro_settings->set_run_critical_tests( abap_false ).
|
||||||
|
@ -1546,167 +1546,3 @@ CLASS lcl_persistence_settings IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS ltcl_persistence_settings DEFINITION FINAL FOR TESTING
|
|
||||||
DURATION SHORT
|
|
||||||
RISK LEVEL DANGEROUS.
|
|
||||||
|
|
||||||
PRIVATE SECTION.
|
|
||||||
METHODS:
|
|
||||||
setup,
|
|
||||||
clear_settings_database,
|
|
||||||
"Proxy
|
|
||||||
modify_settings_proxy_url FOR TESTING RAISING cx_static_check,
|
|
||||||
modify_settings_proxy_port FOR TESTING RAISING cx_static_check,
|
|
||||||
read_proxy_settings FOR TESTING RAISING cx_static_check,
|
|
||||||
read_not_found_url FOR TESTING RAISING cx_static_check,
|
|
||||||
read_not_found_port FOR TESTING RAISING cx_static_check,
|
|
||||||
"Run critical tests
|
|
||||||
modify_run_critical_tests FOR TESTING RAISING cx_static_check,
|
|
||||||
read_run_critical_tests FOR TESTING RAISING cx_static_check,
|
|
||||||
read_not_found_critical_tests FOR TESTING RAISING cx_static_check.
|
|
||||||
DATA:
|
|
||||||
mo_persistence_settings TYPE REF TO lcl_persistence_settings,
|
|
||||||
mo_settings TYPE REF TO lcl_settings.
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
CLASS ltcl_persistence_settings IMPLEMENTATION.
|
|
||||||
METHOD setup.
|
|
||||||
CREATE OBJECT mo_persistence_settings.
|
|
||||||
CREATE OBJECT mo_settings.
|
|
||||||
clear_settings_database( ).
|
|
||||||
|
|
||||||
"These tests may fail if you are locking the entries (e.g. the ZABAPGIT transaction is open)
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD modify_settings_proxy_url.
|
|
||||||
DATA lv_proxy_url TYPE string.
|
|
||||||
|
|
||||||
mo_settings->set_proxy_url( 'http://proxy' ).
|
|
||||||
|
|
||||||
mo_persistence_settings->modify( mo_settings ).
|
|
||||||
|
|
||||||
lv_proxy_url = lcl_app=>db( )->read(
|
|
||||||
iv_type = 'SETTINGS'
|
|
||||||
iv_value = 'PROXY_URL' ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
|
||||||
act = lv_proxy_url
|
|
||||||
exp = 'http://proxy' ).
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD modify_settings_proxy_port.
|
|
||||||
DATA lv_proxy_port TYPE string.
|
|
||||||
mo_settings->set_proxy_port( '8080' ).
|
|
||||||
|
|
||||||
mo_persistence_settings->modify( mo_settings ).
|
|
||||||
|
|
||||||
lv_proxy_port = lcl_app=>db( )->read(
|
|
||||||
iv_type = 'SETTINGS'
|
|
||||||
iv_value = 'PROXY_PORT' ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
|
||||||
act = lv_proxy_port
|
|
||||||
exp = '8080' ).
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD read_proxy_settings.
|
|
||||||
lcl_app=>db( )->modify(
|
|
||||||
iv_type = 'SETTINGS'
|
|
||||||
iv_value = 'PROXY_URL'
|
|
||||||
iv_data = 'A_URL' ).
|
|
||||||
|
|
||||||
lcl_app=>db( )->modify(
|
|
||||||
iv_type = 'SETTINGS'
|
|
||||||
iv_value = 'PROXY_PORT'
|
|
||||||
iv_data = '1000' ).
|
|
||||||
|
|
||||||
mo_settings = mo_persistence_settings->read( ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
|
||||||
act = mo_settings->get_proxy_url( )
|
|
||||||
exp = 'A_URL' ).
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
|
||||||
act = mo_settings->get_proxy_port( )
|
|
||||||
exp = '1000' ).
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD read_not_found_port.
|
|
||||||
mo_settings = mo_persistence_settings->read( ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
|
||||||
act = mo_settings->get_proxy_port( )
|
|
||||||
exp = '' ).
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD read_not_found_url.
|
|
||||||
|
|
||||||
mo_settings = mo_persistence_settings->read( ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
|
||||||
act = mo_settings->get_proxy_url( )
|
|
||||||
exp = '' ).
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD modify_run_critical_tests.
|
|
||||||
DATA lv_run_critical_tests TYPE abap_bool.
|
|
||||||
mo_settings->set_run_critical_tests( abap_true ).
|
|
||||||
|
|
||||||
mo_persistence_settings->modify( mo_settings ).
|
|
||||||
|
|
||||||
lv_run_critical_tests = lcl_app=>db( )->read(
|
|
||||||
iv_type = 'SETTINGS'
|
|
||||||
iv_value = 'CRIT_TESTS' ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
|
||||||
act = lv_run_critical_tests
|
|
||||||
exp = abap_true ).
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD read_run_critical_tests.
|
|
||||||
lcl_app=>db( )->modify(
|
|
||||||
iv_type = 'SETTINGS'
|
|
||||||
iv_value = 'CRIT_TESTS'
|
|
||||||
iv_data = 'X' ).
|
|
||||||
mo_settings = mo_persistence_settings->read( ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
|
||||||
act = mo_settings->get_run_critical_tests( )
|
|
||||||
exp = abap_true ).
|
|
||||||
ENDMETHOD.
|
|
||||||
METHOD read_not_found_critical_tests.
|
|
||||||
mo_settings = mo_persistence_settings->read( ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
|
||||||
act = mo_settings->get_run_critical_tests( )
|
|
||||||
exp = abap_false ).
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD clear_settings_database.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
lcl_app=>db( )->delete(
|
|
||||||
iv_type = 'SETTINGS'
|
|
||||||
iv_value = 'PROXY_URL' ).
|
|
||||||
CATCH cx_static_check.
|
|
||||||
"If entry didn't exist, that's okay
|
|
||||||
ENDTRY.
|
|
||||||
TRY.
|
|
||||||
lcl_app=>db( )->delete(
|
|
||||||
iv_type = 'SETTINGS'
|
|
||||||
iv_value = 'PROXY_PORT' ).
|
|
||||||
CATCH cx_static_check.
|
|
||||||
"If entry didn't exist, that's okay
|
|
||||||
ENDTRY.
|
|
||||||
TRY.
|
|
||||||
lcl_app=>db( )->delete(
|
|
||||||
iv_type = 'SETTINGS'
|
|
||||||
iv_value = 'CRIT_TESTS' ).
|
|
||||||
CATCH cx_static_check.
|
|
||||||
"If entry didn't exist, that's okay
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
|
@ -81,6 +81,28 @@ CLASS ltcl_convert IMPLEMENTATION.
|
||||||
|
|
||||||
ENDCLASS. "ltcl_convert IMPLEMENTATION
|
ENDCLASS. "ltcl_convert IMPLEMENTATION
|
||||||
|
|
||||||
|
CLASS lth_critical_tests DEFINITION .
|
||||||
|
PUBLIC SECTION.
|
||||||
|
CLASS-METHODS:
|
||||||
|
check_run_permission.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lth_critical_tests IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD check_run_permission.
|
||||||
|
DATA: lo_settings TYPE REF TO lcl_settings.
|
||||||
|
lo_settings = lcl_app=>settings( )->read( ).
|
||||||
|
|
||||||
|
"Objects will be created and deleted, do not run in customer system!
|
||||||
|
"These tests may fail if you are locking the entries (e.g. the ZABAPGIT transaction is open)
|
||||||
|
|
||||||
|
IF lo_settings->get_run_critical_tests( ) = abap_false.
|
||||||
|
cl_abap_unit_assert=>fail( 'Cancelled' ).
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
* CLASS ltcl_dangerous DEFINITION
|
* CLASS ltcl_dangerous DEFINITION
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -111,28 +133,7 @@ ENDCLASS. "ltcl_dangerous DEFINITION
|
||||||
CLASS ltcl_dangerous IMPLEMENTATION.
|
CLASS ltcl_dangerous IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD class_setup.
|
METHOD class_setup.
|
||||||
|
lth_critical_tests=>check_run_permission( ).
|
||||||
DATA: lv_text TYPE c LENGTH 100,
|
|
||||||
lv_answer TYPE c LENGTH 1.
|
|
||||||
|
|
||||||
|
|
||||||
lv_text = 'Objects will be created and deleted, do not run in customer system!'.
|
|
||||||
|
|
||||||
CALL FUNCTION 'POPUP_TO_CONFIRM'
|
|
||||||
EXPORTING
|
|
||||||
titlebar = 'Warning'
|
|
||||||
text_question = lv_text
|
|
||||||
text_button_1 = 'Run'
|
|
||||||
text_button_2 = 'Cancel'
|
|
||||||
default_button = '2'
|
|
||||||
display_cancel_button = abap_false
|
|
||||||
IMPORTING
|
|
||||||
answer = lv_answer.
|
|
||||||
|
|
||||||
IF lv_answer = '2'.
|
|
||||||
cl_abap_unit_assert=>fail( 'Cancelled' ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD. "class_setup
|
ENDMETHOD. "class_setup
|
||||||
|
|
||||||
METHOD run.
|
METHOD run.
|
||||||
|
@ -1609,7 +1610,7 @@ ENDCLASS.
|
||||||
|
|
||||||
CLASS ltcl_html_action_utils DEFINITION
|
CLASS ltcl_html_action_utils DEFINITION
|
||||||
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
|
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
|
||||||
INHERITING FROM CL_AUNIT_ASSERT.
|
INHERITING FROM cl_aunit_assert.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
@ -1668,7 +1669,7 @@ ENDCLASS. "ltcl_html_action_utils
|
||||||
|
|
||||||
CLASS ltcl_path DEFINITION
|
CLASS ltcl_path DEFINITION
|
||||||
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
|
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
|
||||||
INHERITING FROM CL_AUNIT_ASSERT.
|
INHERITING FROM cl_aunit_assert.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
METHODS is_root FOR TESTING.
|
METHODS is_root FOR TESTING.
|
||||||
|
@ -1797,7 +1798,7 @@ ENDCLASS. "ltcl_path
|
||||||
|
|
||||||
CLASS ltcl_file_status DEFINITION
|
CLASS ltcl_file_status DEFINITION
|
||||||
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
|
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
|
||||||
INHERITING FROM CL_AUNIT_ASSERT.
|
INHERITING FROM cl_aunit_assert.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
METHODS calculate_status FOR TESTING.
|
METHODS calculate_status FOR TESTING.
|
||||||
|
@ -1898,7 +1899,7 @@ ENDCLASS. "ltcl_file_status
|
||||||
|
|
||||||
CLASS ltcl_sap_package DEFINITION
|
CLASS ltcl_sap_package DEFINITION
|
||||||
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
|
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL
|
||||||
INHERITING FROM CL_AUNIT_ASSERT.
|
INHERITING FROM cl_aunit_assert.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
METHODS check FOR TESTING.
|
METHODS check FOR TESTING.
|
||||||
|
@ -2010,3 +2011,171 @@ CLASS ltcl_sap_package IMPLEMENTATION.
|
||||||
ENDMETHOD. " check.
|
ENDMETHOD. " check.
|
||||||
|
|
||||||
ENDCLASS. "ltcl_sap_package
|
ENDCLASS. "ltcl_sap_package
|
||||||
|
|
||||||
|
CLASS ltcl_persistence_settings DEFINITION FINAL FOR TESTING
|
||||||
|
DURATION SHORT
|
||||||
|
RISK LEVEL DANGEROUS.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
CLASS-METHODS:
|
||||||
|
class_setup.
|
||||||
|
|
||||||
|
METHODS:
|
||||||
|
setup,
|
||||||
|
clear_settings_database,
|
||||||
|
"Proxy
|
||||||
|
modify_settings_proxy_url FOR TESTING RAISING cx_static_check,
|
||||||
|
modify_settings_proxy_port FOR TESTING RAISING cx_static_check,
|
||||||
|
read_proxy_settings FOR TESTING RAISING cx_static_check,
|
||||||
|
read_not_found_url FOR TESTING RAISING cx_static_check,
|
||||||
|
read_not_found_port FOR TESTING RAISING cx_static_check,
|
||||||
|
"Run critical tests
|
||||||
|
modify_run_critical_tests FOR TESTING RAISING cx_static_check,
|
||||||
|
read_run_critical_tests FOR TESTING RAISING cx_static_check,
|
||||||
|
read_not_found_critical_tests FOR TESTING RAISING cx_static_check.
|
||||||
|
DATA:
|
||||||
|
mo_persistence_settings TYPE REF TO lcl_persistence_settings,
|
||||||
|
mo_settings TYPE REF TO lcl_settings.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS ltcl_persistence_settings IMPLEMENTATION.
|
||||||
|
METHOD class_setup.
|
||||||
|
lth_critical_tests=>check_run_permission( ).
|
||||||
|
ENDMETHOD.
|
||||||
|
METHOD setup.
|
||||||
|
CREATE OBJECT mo_persistence_settings.
|
||||||
|
CREATE OBJECT mo_settings.
|
||||||
|
clear_settings_database( ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD modify_settings_proxy_url.
|
||||||
|
DATA lv_proxy_url TYPE string.
|
||||||
|
|
||||||
|
mo_settings->set_proxy_url( 'http://proxy' ).
|
||||||
|
|
||||||
|
mo_persistence_settings->modify( mo_settings ).
|
||||||
|
|
||||||
|
lv_proxy_url = lcl_app=>db( )->read(
|
||||||
|
iv_type = 'SETTINGS'
|
||||||
|
iv_value = 'PROXY_URL' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lv_proxy_url
|
||||||
|
exp = 'http://proxy' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD modify_settings_proxy_port.
|
||||||
|
DATA lv_proxy_port TYPE string.
|
||||||
|
mo_settings->set_proxy_port( '8080' ).
|
||||||
|
|
||||||
|
mo_persistence_settings->modify( mo_settings ).
|
||||||
|
|
||||||
|
lv_proxy_port = lcl_app=>db( )->read(
|
||||||
|
iv_type = 'SETTINGS'
|
||||||
|
iv_value = 'PROXY_PORT' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lv_proxy_port
|
||||||
|
exp = '8080' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD read_proxy_settings.
|
||||||
|
lcl_app=>db( )->modify(
|
||||||
|
iv_type = 'SETTINGS'
|
||||||
|
iv_value = 'PROXY_URL'
|
||||||
|
iv_data = 'A_URL' ).
|
||||||
|
|
||||||
|
lcl_app=>db( )->modify(
|
||||||
|
iv_type = 'SETTINGS'
|
||||||
|
iv_value = 'PROXY_PORT'
|
||||||
|
iv_data = '1000' ).
|
||||||
|
|
||||||
|
mo_settings = mo_persistence_settings->read( ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = mo_settings->get_proxy_url( )
|
||||||
|
exp = 'A_URL' ).
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = mo_settings->get_proxy_port( )
|
||||||
|
exp = '1000' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD read_not_found_port.
|
||||||
|
mo_settings = mo_persistence_settings->read( ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = mo_settings->get_proxy_port( )
|
||||||
|
exp = '' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD read_not_found_url.
|
||||||
|
|
||||||
|
mo_settings = mo_persistence_settings->read( ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = mo_settings->get_proxy_url( )
|
||||||
|
exp = '' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD modify_run_critical_tests.
|
||||||
|
DATA lv_run_critical_tests TYPE abap_bool.
|
||||||
|
mo_settings->set_run_critical_tests( abap_true ).
|
||||||
|
|
||||||
|
mo_persistence_settings->modify( mo_settings ).
|
||||||
|
|
||||||
|
lv_run_critical_tests = lcl_app=>db( )->read(
|
||||||
|
iv_type = 'SETTINGS'
|
||||||
|
iv_value = 'CRIT_TESTS' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lv_run_critical_tests
|
||||||
|
exp = abap_true ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD read_run_critical_tests.
|
||||||
|
lcl_app=>db( )->modify(
|
||||||
|
iv_type = 'SETTINGS'
|
||||||
|
iv_value = 'CRIT_TESTS'
|
||||||
|
iv_data = 'X' ).
|
||||||
|
mo_settings = mo_persistence_settings->read( ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = mo_settings->get_run_critical_tests( )
|
||||||
|
exp = abap_true ).
|
||||||
|
ENDMETHOD.
|
||||||
|
METHOD read_not_found_critical_tests.
|
||||||
|
mo_settings = mo_persistence_settings->read( ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = mo_settings->get_run_critical_tests( )
|
||||||
|
exp = abap_false ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD clear_settings_database.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lcl_app=>db( )->delete(
|
||||||
|
iv_type = 'SETTINGS'
|
||||||
|
iv_value = 'PROXY_URL' ).
|
||||||
|
CATCH cx_static_check.
|
||||||
|
"If entry didn't exist, that's okay
|
||||||
|
ENDTRY.
|
||||||
|
TRY.
|
||||||
|
lcl_app=>db( )->delete(
|
||||||
|
iv_type = 'SETTINGS'
|
||||||
|
iv_value = 'PROXY_PORT' ).
|
||||||
|
CATCH cx_static_check.
|
||||||
|
"If entry didn't exist, that's okay
|
||||||
|
ENDTRY.
|
||||||
|
TRY.
|
||||||
|
lcl_app=>db( )->delete(
|
||||||
|
iv_type = 'SETTINGS'
|
||||||
|
iv_value = 'CRIT_TESTS' ).
|
||||||
|
CATCH cx_static_check.
|
||||||
|
"If entry didn't exist, that's okay
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
Loading…
Reference in New Issue
Block a user