2020-10-27 00:13:50 +03:00
# Unix SMB/CIFS implementation.
#
# Copyright (C) David Mulder <dmulder@samba.org> 2020
#
# 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.
#
# 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.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
"""
Confirm that net_s3 . join_member works
"""
import samba . tests
import os
from samba . net_s3 import Net as s3_Net
from samba . credentials import DONT_USE_KERBEROS
from samba . samba3 import param as s3param
from samba import WERRORError
def rm ( rmdir ) :
for f in os . listdir ( rmdir ) :
if os . path . isdir ( os . path . join ( rmdir , f ) ) :
rm ( os . path . join ( rmdir , f ) )
os . rmdir ( os . path . join ( rmdir , f ) )
else :
os . unlink ( os . path . join ( rmdir , f ) )
class NetS3JoinTests ( samba . tests . TestCaseInTempDir ) :
def setUp ( self ) :
super ( NetS3JoinTests , self ) . setUp ( )
self . realm = os . environ [ " REALM " ]
self . domain = os . environ [ " DOMAIN " ]
self . server = os . environ [ " SERVER " ]
self . lp = self . get_loadparm ( )
def tearDown ( self ) :
super ( NetS3JoinTests , self ) . tearDown ( )
def test_net_join ( self ) :
2021-08-20 02:26:02 +03:00
netbios_name = " S3NetJoinTest "
2020-10-27 00:13:50 +03:00
machinepass = " abcdefghij "
creds = self . insta_creds ( template = self . get_credentials ( ) ,
kerberos_state = DONT_USE_KERBEROS )
s3_lp = s3param . get_context ( )
s3_lp . load ( self . lp . configfile )
s3_lp . set ( ' realm ' , self . realm )
s3_lp . set ( ' workgroup ' , self . domain )
s3_lp . set ( " private dir " , self . tempdir )
s3_lp . set ( " lock dir " , self . tempdir )
s3_lp . set ( " state directory " , self . tempdir )
s3_lp . set ( ' server role ' , ' member server ' )
net = s3_Net ( creds , s3_lp , server = self . server )
try :
( domain_sid , domain_name ) = net . join_member ( netbios_name ,
machinepass = machinepass )
except WERRORError as e :
self . fail ( ' Join failed: %s ' % e . args [ 1 ] )
raise
try :
ret = net . leave ( )
except WERRORError as e :
self . fail ( ' Leave failed: %s ' % e . args [ 1 ] )
raise
self . assertTrue ( ret , ' Leave failed! ' )
rm ( self . tempdir )