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_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])
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_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 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_adt_include_fetch(self): conn = Connection([Response(text=GET_INCLUDE_PROGRAM_ADT_XML, status_code=200, headers={})]) include = sap.adt.Include(conn, 'ZHELLO_INCLUDE') include.fetch() self.assertEqual(conn.mock_methods(), [('GET', '/sap/bc/adt/programs/includes/zhello_include')]) get_request = conn.execs[0] self.assertIsNone(get_request.params) self.assertIsNone(get_request.headers) self.assertEqual(include.name, 'ZHELLO_INCLUDE') self.assertEqual(include.active, 'inactive') self.assertEqual(include.master_language, 'EN') self.assertEqual(include.description, 'Hello include!') self.assertEqual(include.fix_point_arithmetic, False)
def write_test_with_activation(self, typ): args = parse_args(['write', 'ZCL_WRITER', '--type', typ, '-', '--activate']) conn = Connection([LOCK_RESPONSE_OK, EMPTY_RESPONSE_OK, EMPTY_RESPONSE_OK, EMPTY_RESPONSE_OK]) with patch('sys.stdin', StringIO('* new content')): args.execute(conn, args) self.assertEqual(conn.mock_methods(), [('POST', f'/sap/bc/adt/oo/classes/zcl_writer'), ('PUT', f'/sap/bc/adt/oo/classes/zcl_writer/includes/{typ}'), ('POST', f'/sap/bc/adt/oo/classes/zcl_writer'), ('POST', f'/sap/bc/adt/activation')]) activate_request = conn.execs[3] self.assertIn('adtcore:uri="/sap/bc/adt/oo/classes/zcl_writer"', activate_request.body) self.assertIn('adtcore:name="ZCL_WRITER"', activate_request.body)
def test_adt_ddl_activate(self): conn = Connection([EMPTY_RESPONSE_OK]) ddl = sap.adt.DataDefinition(conn, name='MyUsers') sap.adt.wb.activate(ddl) self.assertEqual(conn.mock_methods(), [('POST', '/sap/bc/adt/activation')]) get_request = conn.execs[0] self.assertEqual(sorted(get_request.headers), ['Accept', 'Content-Type']) self.assertEqual(get_request.headers['Accept'], 'application/xml') self.assertEqual(get_request.headers['Content-Type'], 'application/xml') self.assertEqual(sorted(get_request.params), ['method', 'preauditRequested']) self.assertEqual(get_request.params['method'], 'activate') self.assertEqual(get_request.params['preauditRequested'], 'true') self.assertEqual(get_request.body, FIXTURE_ACTIVATION_REQUEST_XML)
def test_adt_ddl_read(self): conn = Connection([Response(text=FIXTURE_CDS_CODE, status_code=200, headers={'Content-Type': 'text/plain; charset=utf-8'})]) ddl = sap.adt.DataDefinition(conn, name='MyUsers') code = ddl.text self.assertEqual(conn.mock_methods(), [('GET', '/sap/bc/adt/ddic/ddl/sources/myusers/source/main')]) get_request = conn.execs[0] self.assertEqual(sorted(get_request.headers), ['Accept']) self.assertEqual(get_request.headers['Accept'], 'text/plain') self.assertIsNone(get_request.params) self.assertIsNone(get_request.body) self.maxDiff = None self.assertEqual(code, FIXTURE_CDS_CODE)