def test_push(self): connection = Connection( [LOCK_RESPONSE_OK, EMPTY_RESPONSE_OK, EMPTY_RESPONSE_OK]) victory = DummyADTObject(connection=connection, name='SOFTWARE_ENGINEER') with victory.open_editor() as editor: editor.push() self.assertEqual( connection.mock_methods(), [('POST', '/sap/bc/adt/awesome/success/software_engineer'), ('PUT', '/sap/bc/adt/awesome/success/software_engineer'), ('POST', '/sap/bc/adt/awesome/success/software_engineer')]) request = connection.execs[1] self.assertEqual(sorted(request.headers.keys()), ['Content-Type']) self.assertEqual(request.headers['Content-Type'], 'application/vnd.sap.super.cool.txt+xml') self.assertEqual(sorted(request.params.keys()), ['lockHandle']) self.assertEqual(request.params['lockHandle'], 'win') self.maxDiff = None self.assertEqual( request.body, '''<?xml version="1.0" encoding="UTF-8"?> <win:dummies xmlns:win="http://www.example.com/never/lose" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:type="DUMMY/S" adtcore:description="adt fixtures dummy object" adtcore:name="SOFTWARE_ENGINEER"> <adtcore:packageRef/> </win:dummies>''')
def test_adt_include_serialize(self): conn = Connection() metadata = sap.adt.ADTCoreData(language='EN', master_language='EN', master_system='NPL', responsible='FILAK') include = sap.adt.Include(conn, 'ZHELLO_INCLUDE', package='$TEST', metadata=metadata) include.description = 'Hello include!' include.create() self.assertEqual(conn.mock_methods(), [('POST', '/sap/bc/adt/programs/includes')]) self.assertEqual( conn.execs[0].headers, { 'Content-Type': 'application/vnd.sap.adt.programs.includes.v2+xml; charset=utf-8' }) self.assertIsNone(conn.execs[0].params) self.maxDiff = None self.assertEqual(conn.execs[0].body.decode('utf-8'), CREATE_INCLUDE_PROGRAM_ADT_XML)
def read_package_node(self, responses, nodekeys): connection = Connection(responses) mypkg = sap.adt.Package(connection, '$VICTORY') repository = sap.adt.Repository(connection) if nodekeys is None: node = repository.read_node(mypkg) else: node = repository.read_node(mypkg, nodekeys=nodekeys) self.assertEqual(connection.mock_methods(), [('POST', '/sap/bc/adt/repository/nodestructure')]) self.assertEqual( connection.execs[0].headers, { 'Accept': 'application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.RepositoryObjectTreeContent', 'Content-Type': 'application/vnd.sap.as+xml; charset=UTF-8; dataname=null' }) self.assertEqual( connection.execs[0].params, { 'parent_name': '$VICTORY', 'parent_tech_name': '$VICTORY', 'parent_type': 'DEVC/K', 'withShortDescriptions': 'false' }) return (node, connection)
def test_2_reportes_2_classes(self): connection = Connection([ Response( status_code=200, content_type= 'application/vnd.sap.adt.checkmessages+xml; charset=utf-8', text=ADT_XML_RUN_CHECK_2_REPORTERS) ]) reporter = sap.adt.checks.Reporter('abapCheckRun') reporter.supported_types = '*' reports = sap.adt.checks.run_for_supported_objects( connection, reporter, [ sap.adt.Class(connection, 'CL_FIRST'), sap.adt.Class(connection, 'CL_SECOND') ]) self.assertEqual(connection.mock_methods(), [('POST', '/sap/bc/adt/checkruns')]) self.assertEqual(connection.execs[0].body, FIXTURE_TWO_CLASSES_REQUEST) self.assertEqual(['abapCheckRun', 'tableStatusCheck'], [report.reporter for report in reports]) self.assertEqual(['First', 'Second'], [msg.short_text for msg in reports[0].messages]) self.assertEqual(['Third', 'Fourth'], [msg.short_text for msg in reports[1].messages])
class TestCTSRelease(PatcherTestCase, ConsoleOutputTestCase): def setUp(self): ConsoleOutputTestCase.setUp(self) self.patch_console(console=self.console) self.connection = Connection() def test_release_invalid_request_type(self): with self.assertRaises(SAPCliError) as cm: sap.cli.cts.release(None, SimpleNamespace(type='foo', number='WHATEVER', recursive=False)) self.assertEqual(str(cm.exception), 'Internal error: unknown request type: foo') def release(self, **kwargs): sap.cli.cts.release(self.connection, SimpleNamespace(**kwargs)) def do_check_command_release(self, request_type, number, response): self.connection.set_responses( Response(response, 200, {}) ) self.release(type=request_type, number=number, recursive=False) self.assertEqual( [request.adt_uri for request in self.connection.execs], [f'/sap/bc/adt/cts/transportrequests/{number}/newreleasejobs'] ) self.assertConsoleContents(self.console, stdout=f'''Releasing {number} Transport request/task {number} was successfully released ''') def test_release_transport(self): self.do_check_command_release('transport', TRANSPORT_NUMBER, TRASNPORT_RELEASE_OK_RESPONSE) def test_release_task(self): self.do_check_command_release('task', TASK_NUMBER, TASK_RELEASE_OK_RESPONSE) @patch('sap.adt.cts.AbstractWorkbenchRequest.fetch') def test_recursive_release(self, fake_fetch): self.connection.set_responses( Response(TRASNPORT_RELEASE_OK_RESPONSE, 200, {}) ) self.release(type='transport', number=TRANSPORT_NUMBER, recursive=True) self.assertConsoleContents(self.console, stdout=f'''Fetching details of {TRANSPORT_NUMBER} because of recursive execution Releasing {TRANSPORT_NUMBER} Transport request/task {TRANSPORT_NUMBER} was successfully released ''') fake_fetch.assert_called_once()
def test_fetch_inactive_objects(self): exp_request = Request.get(adt_uri='activation/inactiveobjects') conn = Connection(responses=[(RESPONSE_INACTIVE_OBJECTS_V1, exp_request)]) conn.asserter = self my_inactive_objects = sap.adt.wb.fetch_inactive_objects(conn) self.assertEquals( my_inactive_objects.entries[0].transport.reference.name, 'C50K000377') self.assertEquals(my_inactive_objects.entries[1].object.reference.name, 'CL_HELLO_WORLD')
def test_adt_package_fetch(self): conn = Connection([Response(text=GET_PACKAGE_ADT_XML, status_code=200, headers={'Content-Type': 'application/vnd.sap.adt.packages.v1+xml; charset=utf-8'})]) package = sap.adt.Package(conn, '$IAMTHEKING') package.fetch() self.assertEqual(len(conn.execs), 1) self.assertEqual(conn.mock_methods(), [('GET', '/sap/bc/adt/packages/%24iamtheking')]) self.maxDiff = None self.assertEqual(package.description, 'This is a package')
def test_fetch(self): connection = Connection([Response(text=GET_DUMMY_OBJECT_ADT_XML, status_code=200, headers={})]) victory = DummyADTObject(connection=connection, name='SOFTWARE_ENGINEER') victory.fetch() self.assertEqual(connection.mock_methods(), [('GET', '/sap/bc/adt/awesome/success/software_engineer')]) self.assertEqual(victory.description, 'You cannot stop me!') self.assertEqual(victory.language, 'CZ') self.assertEqual(victory.name, 'SOFTWARE_ENGINEER') self.assertEqual(victory.master_language, 'EN') self.assertEqual(victory.master_system, 'NPL') self.assertEqual(victory.responsible, 'DEVELOPER') self.assertEqual(victory.active, 'active') self.assertEqual(victory.reference.name, 'UNIVERSE')
def test_program_serialize(self): conn = Connection() metadata = sap.adt.ADTCoreData(language='EN', master_language='EN', master_system='NPL', responsible='FILAK') program = sap.adt.Program(conn, 'ZHELLO_WORLD', package='$TEST', metadata=metadata) program.description = 'Say hello!' program.create() self.assertEqual(len(conn.execs), 1) self.assertEqual(conn.execs[0][0], 'POST') self.assertEqual(conn.execs[0][1], '/sap/bc/adt/programs/programs') self.assertEqual( conn.execs[0][2], { 'Content-Type': 'application/vnd.sap.adt.programs.programs.v2+xml; charset=utf-8' }) self.maxDiff = None self.assertEqual(conn.execs[0][3].decode('utf-8'), CREATE_EXECUTABLE_PROGRAM_ADT_XML)
def test_init(self): conn = Connection() metadata = sap.adt.ADTCoreData(language='EN', master_language='EN', master_system='NPL', responsible='FILAK') package = sap.adt.Package(conn, '$TEST', metadata=metadata) package.description = 'description' package.set_package_type('development') package.set_software_component('LOCAL') package.set_transport_layer('HOME') package.set_app_component('PPM') package.super_package.name = '$MASTER' package.create() self.assertEqual(len(conn.execs), 1) self.assertEqual(conn.execs[0][0], 'POST') self.assertEqual(conn.execs[0][1], '/sap/bc/adt/packages') self.assertEqual( conn.execs[0][2], {'Content-Type': 'application/vnd.sap.adt.packages.v1+xml'}) self.maxDiff = None self.assertEqual(conn.execs[0][3], FIXTURE_PACKAGE_XML)
def test_write_name_from_valid_file_name(self): connection = Connection( [LOCK_RESPONSE_OK, EMPTY_RESPONSE_OK, EMPTY_RESPONSE_OK]) args = fm_parse_args( 'write', '-', '-', './src/zfg_hello_world.fugr.z_fn_hello_world.abap') with patch('sap.cli.object.open', mock_open(read_data='source code')) as fake_open: args.execute(connection, args) fake_open.assert_called_once_with( './src/zfg_hello_world.fugr.z_fn_hello_world.abap', 'r') self.assertEqual([ (e.method, e.adt_uri) for e in connection.execs ], [( 'POST', '/sap/bc/adt/functions/groups/zfg_hello_world/fmodules/z_fn_hello_world' ), ('PUT', '/sap/bc/adt/functions/groups/zfg_hello_world/fmodules/z_fn_hello_world/source/main' ), ('POST', '/sap/bc/adt/functions/groups/zfg_hello_world/fmodules/z_fn_hello_world' )])
def test_text_mixed_endings(self): connection = Connection([Response(status_code=200, text='first\nsecond\r\nthird\r\n') ]) victory = DummyADTObject(connection=connection, name='SOFTWARE_ENGINEER') self.assertEqual(victory.text, 'first\nsecond\nthird\n')
def test_open_editor_with_lock_and_corrnr(self): connection = Connection([EMPTY_RESPONSE_OK]) victory = DummyADTObject(connection=connection, name='editor_no_lock') with victory.open_editor(corrnr='123456', lock_handle='clock') as editor: self.assertEqual(editor.lock_handle, 'clock') self.assertEqual(editor.corrnr, '123456')
def test_lock_modify_invalid(self): response = Response(text='invalid', status_code=200, headers={'Content-Type': 'text/plain'}) connection = Connection([response, response]) victory = DummyADTObject(connection=connection) try: victory.lock() self.assertFail('Exception was expected') except SAPCliError as ex: self.assertEquals( str(ex), f'Object {victory.uri}: lock response does not have lock result\ninvalid' ) try: victory.lock() self.assertFail('Exception was expected') except SAPCliError as ex: self.assertEquals( str(ex), f'Object {victory.uri}: lock response does not have lock result\ninvalid' )
def test_create_package_without_super(self): connection = Connection([EMPTY_RESPONSE_OK]) args = parse_args('create', '$TEST', 'description') sap.cli.package.create(connection, args) self.assertIn('<pak:superPackage/>', connection.execs[0].body)
def test_with_empty_subpackage(self): connection = Connection([PACKAGE_ROOT_NODESTRUCTURE_OK_RESPONSE, PACKAGE_SOURCE_LIBRARY_NODESTRUCUTRE_OK_RESPONSE, PACKAGE_EMPTY_NODESTRUCTURE_OK_RESPONSE]) walk_iter = sap.adt.package.walk(sap.adt.Package(connection, '$VICTORY')) root_path, subpackages, objects = next(walk_iter) self.assertEqual(connection.execs[0].adt_uri, '/sap/bc/adt/repository/nodestructure') self.assertEqual(connection.execs[0].params['parent_name'], '$VICTORY') self.assertEqual(connection.execs[0].body, PACKAGE_ROOT_REQUEST_XML) self.assertEqual(connection.execs[1].adt_uri, '/sap/bc/adt/repository/nodestructure') self.assertEqual(connection.execs[1].params['parent_name'], '$VICTORY') self.assertEqual(connection.execs[1].body, PACKAGE_SOURCE_LIBRARY_REQUEST_XML) self.assertEqual(root_path, []) self.assertEqual(subpackages, ['$VICTORY_TESTS']) self.assertEqual(objects, [SimpleNamespace(typ='CLAS/OC', name='ZCL_HELLO_WORLD', uri='/sap/bc/adt/oo/classes/zcl_hello_world'), SimpleNamespace(typ='INTF/OI', name='ZIF_HELLO_WORLD', uri='/sap/bc/adt/oo/interfaces/zif_hello_world'), SimpleNamespace(typ='PROG/P', name='Z_HELLO_WORLD', uri='/sap/bc/adt/programs/programs/z_hello_world')]) root_path, subpackages, objects = next(walk_iter) self.assertEqual(connection.execs[2].adt_uri, '/sap/bc/adt/repository/nodestructure') self.assertEqual(connection.execs[2].params['parent_name'], '$VICTORY_TESTS') self.assertEqual(connection.execs[2].body, PACKAGE_ROOT_REQUEST_XML) self.assertEqual(len(connection.execs), 3) self.assertEqual(root_path, ['$VICTORY_TESTS']) self.assertEqual(subpackages, []) self.assertEqual(objects, [])
def test_run_configuration_with_coverage(self): connection = Connection() victory = DummyADTObject(connection=connection) tested_objects = ADTObjectSets() tested_objects.include_object(victory) runner = sap.adt.aunit.AUnit(connection) response = runner.execute(tested_objects, activate_coverage=True) self.maxDiff = None self.assertEqual( connection.execs[0].body, '''<?xml version="1.0" encoding="UTF-8"?> <aunit:runConfiguration xmlns:aunit="http://www.sap.com/adt/aunit"> <external> <coverage active="true"/> </external> <options> <uriType value="semantic"/> <testDeterminationStrategy sameProgram="true" assignedTests="false" appendAssignedTestsPreview="true"/> <testRiskLevels harmless="true" dangerous="true" critical="true"/> <testDurations short="true" medium="true" long="true"/> <withNavigationUri enabled="false"/> </options> <adtcore:objectSets xmlns:adtcore="http://www.sap.com/adt/core"> <objectSet kind="inclusive"> <adtcore:objectReferences> <adtcore:objectReference adtcore:uri="/sap/bc/adt/awesome/success/noobject" adtcore:name="NOOBJECT"/> </adtcore:objectReferences> </objectSet> </adtcore:objectSets> </aunit:runConfiguration>''')
def test_create_ok_wihout_corrnr(self): connection = Connection([EMPTY_RESPONSE_OK]) victory = DummyADTObject(connection=connection, name='creator') victory.create() self.assertEqual(len(connection.execs), 1) self.assertEqual(connection.execs[0].method, 'POST') self.assertEqual(connection.execs[0].adt_uri, '/sap/bc/adt/awesome/success') self.assertEqual( connection.execs[0].headers['Content-Type'], 'application/vnd.sap.super.cool.txt+xml; charset=utf-8') self.assertEqual(sorted(connection.execs[0].headers.keys()), ['Content-Type']) self.assertIsNone(connection.execs[0].params) self.maxDiff = None self.assertEqual( connection.execs[0].body.decode('utf-8'), '''<?xml version="1.0" encoding="UTF-8"?> <win:dummies xmlns:win="http://www.example.com/never/lose" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:type="DUMMY/S" adtcore:description="adt fixtures dummy object" adtcore:name="creator"> <adtcore:packageRef/> </win:dummies>''')
def test_lock_modify_ok(self): connection = Connection([LOCK_RESPONSE_OK]) victory = DummyADTObject(connection=connection) victory.lock() self.assertEquals(victory._lock, 'win') self.assertEqual([(e.method, e.adt_uri) for e in connection.execs], [('POST', '/sap/bc/adt/awesome/success/noobject')]) lock_request = connection.execs[0] self.assertEqual(sorted(lock_request.params.keys()), ['_action', 'accessMode']) self.assertEqual(lock_request.params['_action'], 'LOCK') self.assertEqual(lock_request.params['accessMode'], 'MODIFY') self.assertEqual(sorted(lock_request.headers.keys()), ['Accept', 'X-sap-adt-sessiontype']) self.assertEqual(lock_request.headers['X-sap-adt-sessiontype'], 'stateful') self.assertEqual( lock_request.headers['Accept'], 'application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result;q=0.8, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result2;q=0.9' ) try: victory.lock() self.assertFail('Exception was expected') except SAPCliError as ex: self.assertEquals(str(ex), f'Object {victory.uri}: already locked')
def test_create_package_with_corrnr(self): connection = Connection([EMPTY_RESPONSE_OK]) args = parse_args('create', '$TEST', 'description', '--corrnr', '420') sap.cli.package.create(connection, args) self.assertEqual(connection.execs[0].params['corrNr'], '420')
def test_function_module_write(self): conn = Connection([LOCK_RESPONSE_OK, EMPTY_RESPONSE_OK, None]) function = sap.adt.FunctionModule(conn, 'Z_FN_HELLO_WORLD', 'ZFG_HELLO_WORLD') with function.open_editor() as editor: editor.write('FUGR') put_request = conn.execs[1] self.assertEqual(put_request.method, 'PUT') self.assertEqual( put_request.adt_uri, '/sap/bc/adt/functions/groups/zfg_hello_world/fmodules/z_fn_hello_world/source/main' ) self.assertEqual(sorted(put_request.headers), ['Accept', 'Content-Type']) self.assertEqual(put_request.headers['Accept'], 'text/plain') self.assertEqual(put_request.headers['Content-Type'], 'text/plain; charset=utf-8') self.assertEqual(put_request.params, {'lockHandle': 'win'}) self.maxDiff = None self.assertEqual(put_request.body, b'FUGR')
def test_adt_class_serialize(self): conn = Connection() metadata = sap.adt.ADTCoreData(language='EN', master_language='EN', master_system='NPL', responsible='FILAK') clas = sap.adt.Class(conn, 'ZCL_HELLO_WORLD', package='$TEST', metadata=metadata) clas.description = 'Say hello!' clas.create() self.assertEqual(len(conn.execs), 1) self.assertEqual(conn.execs[0][0], 'POST') self.assertEqual(conn.execs[0][1], '/sap/bc/adt/oo/classes') self.assertEqual( conn.execs[0][2], { 'Content-Type': 'application/vnd.sap.adt.oo.classes.v2+xml; charset=utf-8' }) self.maxDiff = None self.assertEqual(conn.execs[0][3].decode('utf-8'), CREATE_CLASS_ADT_XML) self.assertEqual('CLAS/OC ZCL_HELLO_WORLD', str(clas)) self.assertEqual('CLAS/OC ZCL_HELLO_WORLD/definitions', str(clas.definitions)) self.assertEqual('CLAS/OC ZCL_HELLO_WORLD/implementations', str(clas.implementations)) self.assertEqual('CLAS/OC ZCL_HELLO_WORLD/testclasses', str(clas.test_classes))
def test_dump_profiles_filtered(self): conn = Connection([ Response(status_code=200, text=ADT_XML_PROFILES_TABLE), Response(status_code=200, text=ADT_XML_PROFILES_TRAN_TABLE), Response(status_code=200, text=ADT_XML_PROFILES_CHECKS_TABLE) ]) dump = sap.adt.atc.dump_profiles(conn, ['PROFILE1']) self.assertDictEqual( dump, { 'profiles': { 'PROFILE1': { 'changed': '20080415161735', 'changed_by': 'CHGUSER1', 'created': '20010309180000', 'created_by': 'CREUSER1', 'checks': { 'CHECK1_1': { 'sequence_number': '00000001', 'since': '00000091', 'note': 'Note PRF1 CHK1' }, 'CHECK1_2': { 'sequence_number': '00000002', 'since': '00000092', 'note': 'Note PRF1 CHK2' } }, 'trans': { 'E': 'Standard Check Profile1 CheckMan 6.20' } } } })
def test_binding_fetch(self): connection = Connection([RESPONSE_BINDING_OK]) binding_name = 'TEST_BINDING' binding = sap.adt.businessservice.ServiceBinding(connection, binding_name) binding.fetch() self.assertEqual(binding.name, binding_name) self.assertEqual(binding.published, 'true') self.assertEqual(binding.release_supported, 'false') self.assertEqual(binding.binding.typ, 'ODATA') self.assertEqual(binding.binding.version, 'V2') self.assertEqual(binding.binding.implementation.name, binding_name) self.assertEqual(binding.services[0].version, '0001') self.assertEqual(binding.services[0].release_state, '') self.assertEqual(binding.services[0].definition.uri, '/sap/bc/adt/ddic/srvd/sources/test_service') self.assertEqual(binding.services[0].definition.typ, 'SRVD/SRV') self.assertEqual(binding.services[0].definition.name, 'TEST_SERVICE') self.assertEqual(binding.services[1].version, '0002') self.assertEqual(binding.services[1].release_state, '') self.assertEqual(binding.services[1].definition.uri, '/sap/bc/adt/ddic/srvd/sources/test_service_2') self.assertEqual(binding.services[1].definition.typ, 'SRVD/SRV') self.assertEqual(binding.services[1].definition.name, 'TEST_SERVICE_2')
def test_activate(self): connection = Connection([EMPTY_RESPONSE_OK]) victory = DummyADTObject(connection=connection, name='activator') sap.adt.wb.activate(victory) self.assertEqual(len(connection.execs), 1) self.assertEqual(connection.execs[0].method, 'POST') self.assertEqual(connection.execs[0].adt_uri, '/sap/bc/adt/activation') self.assertEqual(connection.execs[0].headers['Accept'], 'application/xml') self.assertEqual(connection.execs[0].headers['Content-Type'], 'application/xml') self.assertEqual(sorted(connection.execs[0].headers.keys()), ['Accept', 'Content-Type']) self.assertEqual(connection.execs[0].params['method'], 'activate') self.assertEqual(connection.execs[0].params['preauditRequested'], 'true') self.assertEqual(sorted(connection.execs[0].params.keys()), ['method', 'preauditRequested']) self.maxDiff = None self.assertEqual( connection.execs[0].body, '''<?xml version="1.0" encoding="UTF-8"?> <adtcore:objectReferences xmlns:adtcore="http://www.sap.com/adt/core"> <adtcore:objectReference adtcore:uri="/sap/bc/adt/awesome/success/activator" adtcore:name="ACTIVATOR"/> </adtcore:objectReferences>''')
def test_adt_iface_write(self): conn = Connection([LOCK_RESPONSE_OK, EMPTY_RESPONSE_OK, None]) iface = sap.adt.Interface(conn, 'ZIF_HELLO_WORLD') with iface.open_editor() as editor: editor.write(FIXTURE_IFACE_MAIN_CODE) put_request = conn.execs[1] self.assertEqual(put_request.method, 'PUT') self.assertEqual( put_request.adt_uri, '/sap/bc/adt/oo/interfaces/zif_hello_world/source/main') self.assertEqual(sorted(put_request.headers), ['Content-Type']) self.assertEqual(put_request.headers['Content-Type'], 'text/plain; charset=utf-8') self.assertEqual(sorted(put_request.params), ['lockHandle']) self.assertEqual(put_request.params['lockHandle'], 'win') self.maxDiff = None self.assertEqual(put_request.body, bytes(FIXTURE_IFACE_MAIN_CODE[:-1], 'utf-8'))
def test_lock_modify_ok(self): connection = Connection([LOCK_RESPONSE_OK, LOCK_RESPONSE_OK]) victory = DummyADTObject(connection=connection) handle = victory.lock() self.assertEquals(handle, 'win') self.assertEqual([(e.method, e.adt_uri) for e in connection.execs], [('POST', '/sap/bc/adt/awesome/success/noobject')]) lock_request = connection.execs[0] self.assertEqual(sorted(lock_request.params.keys()), ['_action', 'accessMode']) self.assertEqual(lock_request.params['_action'], 'LOCK') self.assertEqual(lock_request.params['accessMode'], 'MODIFY') self.assertEqual(sorted(lock_request.headers.keys()), ['Accept', 'X-sap-adt-sessiontype']) self.assertEqual(lock_request.headers['X-sap-adt-sessiontype'], 'stateful') self.assertEqual( lock_request.headers['Accept'], 'application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result;q=0.8, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.lock.result2;q=0.9' ) handle = victory.lock() self.assertEquals(handle, 'win')
def test_create_v0_priority(self): conn = Connection(collections={'/sap/bc/adt/awesome/success': ['application/vnd.sap.super.cool.txt+xml', 'application/vnd.sap.super.cool.txt.v2+xml']}) victory = DummyADTObject(connection=conn) victory.create() self.assertEqual(conn.execs[0][2], {'Content-Type': 'application/vnd.sap.super.cool.txt+xml; charset=utf-8'})
def test_query_default(self): connection = Connection() victory = DummyADTObject(connection=connection) tested_objects = ADTObjectSets() tested_objects.include_object(victory) coverage_identifier = 'FOOBAR' runner = sap.adt.acoverage.ACoverage(connection) response = runner.execute(coverage_identifier, tested_objects) self.assertEqual( connection.execs[0].body, '''<?xml version="1.0" encoding="UTF-8"?> <cov:query xmlns:cov="http://www.sap.com/adt/cov"> <adtcore:objectSets xmlns:adtcore="http://www.sap.com/adt/core"> <objectSet kind="inclusive"> <adtcore:objectReferences> <adtcore:objectReference adtcore:uri="/sap/bc/adt/awesome/success/noobject" adtcore:name="NOOBJECT"/> </adtcore:objectReferences> </objectSet> </adtcore:objectSets> </cov:query>''') self.assertEqual( connection.execs[0].adt_uri, '/sap/bc/adt/runtime/traces/coverage/measurements/FOOBAR')
def test_adt_include_and_master(self): conn = Connection() include_with = sap.adt.Include(conn, 'ZHELLO_WITH', master='ZHELLO_WORLD') include_without = sap.adt.Include(conn, 'ZHELLO_WITHOUT') self.assertEqual(include_with.master, 'ZHELLO_WORLD') self.assertIsNone(include_without.master) exp_master_uri = '%2Fsap%2Fbc%2Fadt%2Fprograms%2Fprograms%2Fzhello_world' self.assertEqual( include_with.uri, f'programs/includes/zhello_with?context={exp_master_uri}') self.assertEqual(include_without.uri, 'programs/includes/zhello_without') include_with.master = 'NEW_MASTER' include_without.master = 'NEW_MASTER' exp_new_master_uri = '%2Fsap%2Fbc%2Fadt%2Fprograms%2Fprograms%2Fnew_master' self.assertEqual( include_with.uri, f'programs/includes/zhello_with?context={exp_new_master_uri}') self.assertEqual( include_without.uri, f'programs/includes/zhello_without?context={exp_new_master_uri}')