Initial import.
[gitosis.git] / gitosis / test / test_group.py
1 from nose.tools import eq_ as eq, assert_raises
2
3 from ConfigParser import RawConfigParser
4
5 from gitosis import group
6
7 def test_no_emptyConfig():
8     cfg = RawConfigParser()
9     gen = group.getMembership(config=cfg, user='jdoe')
10     assert_raises(StopIteration, gen.next)
11
12 def test_no_emptyGroup():
13     cfg = RawConfigParser()
14     cfg.add_section('group hackers')
15     gen = group.getMembership(config=cfg, user='jdoe')
16     assert_raises(StopIteration, gen.next)
17
18 def test_no_notListed():
19     cfg = RawConfigParser()
20     cfg.add_section('group hackers')
21     cfg.set('group hackers', 'members', 'wsmith')
22     gen = group.getMembership(config=cfg, user='jdoe')
23     assert_raises(StopIteration, gen.next)
24
25 def test_yes_simple():
26     cfg = RawConfigParser()
27     cfg.add_section('group hackers')
28     cfg.set('group hackers', 'members', 'jdoe')
29     gen = group.getMembership(config=cfg, user='jdoe')
30     eq(gen.next(), 'hackers')
31     assert_raises(StopIteration, gen.next)
32
33 def test_yes_leading():
34     cfg = RawConfigParser()
35     cfg.add_section('group hackers')
36     cfg.set('group hackers', 'members', 'jdoe wsmith')
37     gen = group.getMembership(config=cfg, user='jdoe')
38     eq(gen.next(), 'hackers')
39     assert_raises(StopIteration, gen.next)
40
41 def test_yes_trailing():
42     cfg = RawConfigParser()
43     cfg.add_section('group hackers')
44     cfg.set('group hackers', 'members', 'wsmith jdoe')
45     gen = group.getMembership(config=cfg, user='jdoe')
46     eq(gen.next(), 'hackers')
47     assert_raises(StopIteration, gen.next)
48
49 def test_yes_middle():
50     cfg = RawConfigParser()
51     cfg.add_section('group hackers')
52     cfg.set('group hackers', 'members', 'wsmith jdoe danny')
53     gen = group.getMembership(config=cfg, user='jdoe')
54     eq(gen.next(), 'hackers')
55     assert_raises(StopIteration, gen.next)
56
57 def test_yes_recurse_one():
58     cfg = RawConfigParser()
59     cfg.add_section('group hackers')
60     cfg.set('group hackers', 'members', 'wsmith @smackers')
61     cfg.add_section('group smackers')
62     cfg.set('group smackers', 'members', 'danny jdoe')
63     gen = group.getMembership(config=cfg, user='jdoe')
64     eq(gen.next(), 'smackers')
65     eq(gen.next(), 'hackers')
66     assert_raises(StopIteration, gen.next)
67
68 def test_yes_recurse_one_ordering():
69     cfg = RawConfigParser()
70     cfg.add_section('group smackers')
71     cfg.set('group smackers', 'members', 'danny jdoe')
72     cfg.add_section('group hackers')
73     cfg.set('group hackers', 'members', 'wsmith @smackers')
74     gen = group.getMembership(config=cfg, user='jdoe')
75     eq(gen.next(), 'smackers')
76     eq(gen.next(), 'hackers')
77     assert_raises(StopIteration, gen.next)
78
79 def test_yes_recurse_three():
80     cfg = RawConfigParser()
81     cfg.add_section('group hackers')
82     cfg.set('group hackers', 'members', 'wsmith @smackers')
83     cfg.add_section('group smackers')
84     cfg.set('group smackers', 'members', 'danny @snackers')
85     cfg.add_section('group snackers')
86     cfg.set('group snackers', 'members', '@whackers foo')
87     cfg.add_section('group whackers')
88     cfg.set('group whackers', 'members', 'jdoe')
89     gen = group.getMembership(config=cfg, user='jdoe')
90     eq(gen.next(), 'whackers')
91     eq(gen.next(), 'snackers')
92     eq(gen.next(), 'smackers')
93     eq(gen.next(), 'hackers')
94     assert_raises(StopIteration, gen.next)
95
96 def test_yes_recurse_junk():
97     cfg = RawConfigParser()
98     cfg.add_section('group hackers')
99     cfg.set('group hackers', 'members', '@notexist @smackers')
100     cfg.add_section('group smackers')
101     cfg.set('group smackers', 'members', 'jdoe')
102     gen = group.getMembership(config=cfg, user='jdoe')
103     eq(gen.next(), 'smackers')
104     eq(gen.next(), 'hackers')
105     assert_raises(StopIteration, gen.next)
106
107 def test_yes_recurse_loop():
108     cfg = RawConfigParser()
109     cfg.add_section('group hackers')
110     cfg.set('group hackers', 'members', '@smackers')
111     cfg.add_section('group smackers')
112     cfg.set('group smackers', 'members', '@hackers jdoe')
113     gen = group.getMembership(config=cfg, user='jdoe')
114     eq(gen.next(), 'smackers')
115     eq(gen.next(), 'hackers')
116     assert_raises(StopIteration, gen.next)
117
118 def test_no_recurse_loop():
119     cfg = RawConfigParser()
120     cfg.add_section('group hackers')
121     cfg.set('group hackers', 'members', '@smackers')
122     cfg.add_section('group smackers')
123     cfg.set('group smackers', 'members', '@hackers')
124     gen = group.getMembership(config=cfg, user='jdoe')
125     assert_raises(StopIteration, gen.next)