summaryrefslogtreecommitdiff
path: root/source3/script/tests/test_wbinfo_sids2xids_int.py
blob: 1b79e005dceeb2d055df8f1a1998c84efa47ae74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python

import sys,os,subprocess


if len(sys.argv) != 3:
    print "Usage: test_wbinfo_sids2xids_int.py wbinfo net"
    sys.exit(1)

wbinfo = sys.argv[1]
netcmd = sys.argv[2]

def flush_cache():
    os.system(netcmd + "cache flush")

domain = subprocess.Popen([wbinfo, "--own-domain"],
                          stdout=subprocess.PIPE).communicate()[0].strip()
domsid = subprocess.Popen([wbinfo, "-n", domain + "\\"],
                          stdout=subprocess.PIPE).communicate()[0]
domsid = domsid.split(' ')[0]

#print domain
#print domsid

sids=[ domsid + '-512', 'S-1-5-32-545', domsid + '-513' ]

flush_cache

sids2xids = subprocess.Popen([wbinfo, '--sids-to-unix-ids=' +  ','.join(sids)],
                             stdout=subprocess.PIPE).communicate()[0].strip()

gids=[]

for line in sids2xids.split('\n'):
    result = line.split(' ')[2:]

    if result[0] == 'gid' or result[0] == 'uid/gid':
        gid = result[1]
    else:
        gid = ''
    if gid == '-1':
        gid = ''
    gids.append(gid)

# Check the list produced by the sids-to-xids call with the
# singular variant (sid-to-gid) for each sid in turn.
def check_singular(sids, gids):
    i=0
    for sid in sids:
        gid = subprocess.Popen([wbinfo, '--sid-to-gid', sid],
                               stdout=subprocess.PIPE).communicate()[0].strip()
        if gid != gids[i]:
            print "Expected %s, got %s\n", gid, gids[i]
            sys.exit(1)
        i+=1

# first round: with filled cache
check_singular(sids, gids)

# second round: with empty cache
flush_cache
check_singular(sids, gids)

sys.exit(0)