copy context owner when user copied a config/metaconfig
Context owner is now in values (no more in settings). The context owner is set in storage. So when copy/deepcopy a config, owner is copied to. For user, when export values, context owner is not returned by default.
This commit is contained in:
@ -185,6 +185,15 @@ def test_meta_new_config():
|
||||
assert len(list(meta.config.list())) == 3
|
||||
|
||||
|
||||
def test_meta_new_metaconfig():
|
||||
od = make_description()
|
||||
meta = MetaConfig(['name1', 'name2'], optiondescription=od)
|
||||
meta.config.new('newconf1', type='metaconfig')
|
||||
meta.config('newconf1').config.new('newconf2', type='metaconfig')
|
||||
meta.config('newconf1').config('newconf2').config.new('newconf3')
|
||||
assert meta.config('newconf1').config('newconf2').config('newconf3').config.name() == 'newconf3'
|
||||
|
||||
|
||||
def test_meta_pop_config():
|
||||
od = make_description()
|
||||
meta = MetaConfig(['name1', 'name2'], optiondescription=od)
|
||||
@ -777,6 +786,46 @@ def test_meta_properties_submeta_deepcopy():
|
||||
assert meta_copy.config('copy_meta1').config('conf2').config.name() == 'conf2'
|
||||
|
||||
|
||||
def test_meta_properties_submeta_deepcopy_owner():
|
||||
ip_admin_eth0 = NetworkOption('ip_admin_eth0', "ip")
|
||||
netmask_admin_eth0 = NetmaskOption('netmask_admin_eth0', "mask")
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf1.owner.set('conf1_user')
|
||||
conf1.property.read_write()
|
||||
meta1 = MetaConfig([conf1], session_id='meta1')
|
||||
meta1.owner.set('meta1_user')
|
||||
meta2 = MetaConfig([meta1], session_id='meta2')
|
||||
meta2.owner.set('meta2_user')
|
||||
#
|
||||
conf1.option('ip_admin_eth0').value.set('192.168.0.1')
|
||||
assert conf1.option('ip_admin_eth0').owner.get() == 'conf1_user'
|
||||
meta1.option('ip_admin_eth0').value.set('192.168.0.2')
|
||||
assert meta1.option('ip_admin_eth0').owner.get() == 'meta1_user'
|
||||
meta2.option('ip_admin_eth0').value.set('192.168.0.3')
|
||||
assert meta2.option('ip_admin_eth0').owner.get() == 'meta2_user'
|
||||
#
|
||||
meta2_copy = conf1.config.deepcopy(session_id='conf2',
|
||||
metaconfig_prefix='copy_')
|
||||
meta2_copy.option('netmask_admin_eth0').value.set('255.255.255.255')
|
||||
assert meta2_copy.option('ip_admin_eth0').value.get() == '192.168.0.3'
|
||||
assert meta2_copy.option('ip_admin_eth0').owner.get() == 'meta2_user'
|
||||
assert meta2_copy.option('netmask_admin_eth0').owner.get() == 'meta2_user'
|
||||
#
|
||||
meta1_copy = meta2_copy.config('copy_meta1')
|
||||
meta1_copy.option('netmask_admin_eth0').value.set('255.255.255.255')
|
||||
assert meta1_copy.option('ip_admin_eth0').value.get() == '192.168.0.2'
|
||||
assert meta1_copy.option('ip_admin_eth0').owner.get() == 'meta1_user'
|
||||
assert meta1_copy.option('netmask_admin_eth0').owner.get() == 'meta1_user'
|
||||
#
|
||||
conf2 = meta1_copy.config('conf2')
|
||||
conf2.owner.set('conf2_user')
|
||||
conf2.option('netmask_admin_eth0').value.set('255.255.255.255')
|
||||
assert conf2.option('netmask_admin_eth0').owner.get() == 'conf2_user'
|
||||
assert conf2.option('ip_admin_eth0').value.get() == '192.168.0.1'
|
||||
assert conf2.option('ip_admin_eth0').owner.get() == 'conf1_user'
|
||||
|
||||
|
||||
def test_meta_properties_meta_set_value():
|
||||
ip_admin_eth0 = NetworkOption('ip_admin_eth0', "ip", multi=True, default=['192.168.1.1'])
|
||||
netmask_admin_eth0 = NetmaskOption('netmask_admin_eth0', "mask", multi=True, properties=('disabled',))
|
||||
|
@ -34,9 +34,9 @@ def test_delete_not_persisten():
|
||||
Config(o, session_id='test_persistent', persistent=True)
|
||||
except:
|
||||
c = Config(o, session_id='not_test_persistent')
|
||||
assert list_sessions('all') == ['not_test_persistent']
|
||||
assert 'not_test_persistent' in list_sessions('all')
|
||||
del c
|
||||
assert list_sessions('all') == []
|
||||
assert 'not_test_persistent' not in list_sessions('all')
|
||||
#
|
||||
c = Config(o, session_id='not_test_persistent')
|
||||
raises(ValueError, "delete_session('not_test_persistent')")
|
||||
|
Reference in New Issue
Block a user