2007-11-21 14:31:26 +03:00
# Unix SMB/CIFS implementation.
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007
2011-09-13 03:10:37 +04:00
#
2007-11-21 14:31:26 +03:00
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
2011-09-13 03:10:37 +04:00
#
2007-11-21 14:31:26 +03:00
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
2011-09-13 03:10:37 +04:00
#
2007-11-21 14:31:26 +03:00
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
2010-12-05 18:56:27 +03:00
""" Tests for samba.registry. """
2007-12-22 14:03:02 +03:00
import os
2008-05-22 01:59:34 +04:00
from samba import registry
2007-12-22 14:03:02 +03:00
import samba . tests
2017-10-11 14:05:01 +03:00
from samba import WERRORError
from subprocess import Popen , PIPE
2007-11-21 14:31:26 +03:00
2010-06-19 20:58:18 +04:00
class HelperTests ( samba . tests . TestCase ) :
2007-11-21 14:31:26 +03:00
def test_predef_to_name ( self ) :
2020-02-07 01:02:38 +03:00
self . assertEqual ( " HKEY_LOCAL_MACHINE " ,
2008-12-18 19:49:33 +03:00
registry . get_predef_name ( 0x80000002 ) )
2007-11-21 14:31:26 +03:00
def test_str_regtype ( self ) :
2020-02-07 01:02:38 +03:00
self . assertEqual ( " REG_DWORD " , registry . str_regtype ( 4 ) )
2007-11-21 14:31:26 +03:00
2007-12-22 14:03:02 +03:00
class HiveTests ( samba . tests . TestCaseInTempDir ) :
2010-06-19 20:58:18 +04:00
2007-12-22 14:03:02 +03:00
def setUp ( self ) :
2023-11-28 06:38:22 +03:00
super ( ) . setUp ( )
2007-12-26 01:36:44 +03:00
self . hive_path = os . path . join ( self . tempdir , " ldb_new.ldb " )
self . hive = registry . open_ldb ( self . hive_path )
def tearDown ( self ) :
del self . hive
os . unlink ( self . hive_path )
2023-11-28 06:38:22 +03:00
super ( ) . tearDown ( )
2007-12-22 14:03:02 +03:00
def test_ldb_new ( self ) :
self . assertTrue ( self . hive is not None )
2017-10-11 14:05:01 +03:00
def test_set_value ( self ) :
self . assertIsNone ( self . hive . set_value ( ' foo1 ' , 1 , ' bar1 ' ) )
def test_flush ( self ) :
self . assertIsNone ( self . hive . set_value ( ' foo2 ' , 1 , ' bar2 ' ) )
self . assertIsNone ( self . hive . flush ( ) )
2017-11-22 18:53:52 +03:00
tdbdump_tool = ' tdbdump '
if os . path . isfile ( ' bin/tdbdump ' ) :
tdbdump_tool = ' bin/tdbdump '
proc = Popen ( [ tdbdump_tool , self . hive_path ] , stdout = PIPE , stderr = PIPE )
2017-10-11 14:05:01 +03:00
tdb_dump , err = proc . communicate ( )
self . assertTrue ( b ' DN=VALUE=FOO2,HIVE=NONE ' in tdb_dump )
def test_del_value ( self ) :
self . assertIsNone ( self . hive . set_value ( ' foo3 ' , 1 , ' bar3 ' ) )
self . assertIsNone ( self . hive . del_value ( ' foo3 ' ) )
2007-12-22 14:03:02 +03:00
2017-10-11 14:05:01 +03:00
def test_del_nonexisting_value ( self ) :
self . assertRaises ( WERRORError , self . hive . del_value , ' foo4 ' )
2007-12-22 14:03:02 +03:00
2010-06-19 20:58:18 +04:00
class RegistryTests ( samba . tests . TestCase ) :
2007-11-21 14:31:26 +03:00
def test_new ( self ) :
self . registry = registry . Registry ( )
2017-10-11 14:05:01 +03:00
self . assertIsNotNone ( self . registry )