Exemple #1
0
    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)
Exemple #4
0
    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])
Exemple #5
0
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')
Exemple #8
0
    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)
Exemple #10
0
    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)
Exemple #11
0
    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'
             )])
Exemple #12
0
    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')
Exemple #13
0
    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')
Exemple #14
0
    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'
            )
Exemple #15
0
    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, [])
Exemple #17
0
    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>''')
Exemple #18
0
    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>''')
Exemple #19
0
    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')
Exemple #20
0
    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')
Exemple #22
0
    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))
Exemple #23
0
    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'
                        }
                    }
                }
            })
Exemple #24
0
    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')
Exemple #25
0
    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'))
Exemple #27
0
    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')
Exemple #28
0
    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}')