示例#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>''')
示例#2
0
    def test_properties(self):
        victory = DummyADTObject()

        with self.assertRaises(SAPCliError) as cm:
            victory.name = 'somethingelse'

        self.assertEqual(str(cm.exception), 'Deserializing wrong object: noobject != somethingelse')
示例#3
0
    def test_unlock_not_locked(self):
        victory = DummyADTObject()

        try:
            victory.unlock()
        except SAPCliError as ex:
            self.assertEquals(str(ex), f'Object {victory.uri}: not locked')
示例#4
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'})
示例#5
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>''')
示例#6
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')
示例#7
0
    def test_activate(self):
        connection = Connection([EMPTY_RESPONSE_OK])
        victory = DummyADTObject(connection=connection, name='activator')

        victory.activate()

        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>''')
示例#8
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')
示例#9
0
    def test_create_mime_not_found(self):
        conn = Connection(collections={'/sap/bc/adt/awesome/success': ['application/something.else+xml']})
        victory = DummyADTObject(connection=conn)

        with self.assertRaises(sap.errors.SAPCliError) as caught:
            victory.create()

        self.assertEqual(str(caught.exception), 'Not supported mimes: application/something.else+xml not in application/vnd.sap.super.cool.txt+xml;application/vnd.sap.super.cool.txt.v2+xml')
示例#10
0
    def test_create_ok_wih_corrnr(self):
        connection = Connection([EMPTY_RESPONSE_OK])
        victory = DummyADTObject(connection=connection, name='creator')

        victory.create(corrnr='NPL000008')

        self.assertEqual(connection.execs[0].params['corrNr'], 'NPL000008')
        self.assertEqual(sorted(connection.execs[0].params.keys()), ['corrNr'])
示例#11
0
    def test_open_editor_default(self):
        connection = Connection([LOCK_RESPONSE_OK, EMPTY_RESPONSE_OK])
        victory = DummyADTObject(connection=connection, name='editor_test')

        with victory.open_editor() as editor:
            self.assertEqual(editor.uri, 'awesome/success/editor_test')
            self.assertEqual(editor.mimetype, 'application/vnd.sap.super.cool.txt+xml')
            self.assertEqual(editor.connection, connection)
            self.assertEqual(editor.lock_handle, 'win')
            self.assertIsNone(editor.corrnr)
示例#12
0
    def test_activate_fails(self):
        connection = Connection([Response(ACTIVATE_RESPONSE_FAILED, 200, {})])
        victory = DummyADTObject(connection=connection, name='activator')

        with self.assertRaises(SAPCliError) as cm:
            victory.activate()

        self.maxDiff = None
        self.assertEqual(
            str(cm.exception),
            f'Could not activate the object activator: {ACTIVATE_RESPONSE_FAILED}'
        )
示例#13
0
    def test_create_v2(self):
        conn = Connection(collections={'/sap/bc/adt/awesome/success': ['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.v2+xml; charset=utf-8'})

        self.maxDiff = None
        self.assertEqual(conn.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="noobject">
<adtcore:packageRef/>
<elemv2>version2</elemv2>
</win:dummies>''' )
示例#14
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')
示例#15
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')
示例#16
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>''')
示例#17
0
    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')
示例#18
0
    def test_unlock_ok(self):
        connection = Connection([LOCK_RESPONSE_OK, None])

        victory = DummyADTObject(connection=connection)
        handle = victory.lock()
        victory.unlock(handle)

        self.assertEqual(
            [(e.method, e.adt_uri) for e in connection.execs],
            2 * [('POST', '/sap/bc/adt/awesome/success/noobject')])

        unlock_request = connection.execs[1]
        self.assertEqual(sorted(unlock_request.params.keys()), ['_action', 'lockHandle'])
        self.assertEqual(unlock_request.params['_action'], 'UNLOCK')
        self.assertEqual(unlock_request.params['lockHandle'], 'win')

        self.assertEqual(sorted(unlock_request.headers.keys()), ['X-sap-adt-sessiontype'])
        self.assertEqual(unlock_request.headers['X-sap-adt-sessiontype'], 'stateful')
示例#19
0
    def test_unlock_not_locked(self):
        connection = Connection([LOCK_RESPONSE_OK, None])

        victory = DummyADTObject(connection=connection)

        try:
            victory.unlock('NOTLOCKED')
        except SAPCliError as ex:
            self.assertEquals(str(ex), f'Object {victory.uri}: not locked')

        self.assertEqual([(e.method, e.adt_uri) for e in connection.execs],
                         [('POST', '/sap/bc/adt/awesome/success/noobject')])

        unlock_request = connection.execs[0]
        self.assertEqual(sorted(unlock_request.params.keys()),
                         ['_action', 'lockHandle'])
        self.assertEqual(unlock_request.params['_action'], 'UNLOCK')
        self.assertEqual(unlock_request.params['lockHandle'], 'NOTLOCKED')
示例#20
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'
            )
示例#21
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')
示例#22
0
    def test_build_tested_object_uri(self):
        victory = DummyADTObject()

        victory_uri = sap.adt.AUnit.build_tested_object_uri(
            connection, victory)
        self.assertEquals(victory_uri, '/sap/bc/adt/awesome/success/noobject')
示例#23
0
    def test_str(self):
        victory = DummyADTObject(name='objname')

        self.assertEquals(str(victory), 'DUMMY/S objname')
示例#24
0
    def test_uri(self):
        victory = DummyADTObject()

        self.assertEquals(victory.uri, 'awesome/success/noobject')
示例#25
0
 def test_text_single_line(self):
     connection = Connection([Response(status_code=200, text='content')])
     victory = DummyADTObject(connection=connection, name='SOFTWARE_ENGINEER')
     self.assertEqual(victory.text, 'content')