a/Allura/allura/tests/test_commands.py b/Allura/allura/tests/test_commands.py
1
from nose.tools import assert_raises
1
from nose.tools import assert_raises
2
from ming.orm import ThreadLocalORMSession
2
3
3
from alluratest.controller import setup_basic_test, setup_global_objects
4
from alluratest.controller import setup_basic_test, setup_global_objects
4
from allura.command import script, set_neighborhood_features, \
5
from allura.command import script, set_neighborhood_features, \
5
                           create_neighborhood
6
                           create_neighborhood
6
from allura import model as M
7
from allura import model as M
...
...
18
    setup_global_objects()
19
    setup_global_objects()
19
20
20
def test_script():
21
def test_script():
21
    cmd = script.ScriptCommand('script')
22
    cmd = script.ScriptCommand('script')
22
    cmd.run([test_config, 'allura/tests/tscript.py' ])
23
    cmd.run([test_config, 'allura/tests/tscript.py' ])
23
    cmd.command()
24
    assert_raises(ValueError, cmd.run, [test_config, 'allura/tests/tscript_error.py' ])
24
    assert_raises(ValueError, cmd.run, [test_config, 'allura/tests/tscript_error.py' ])
25
25
26
def test_set_neighborhood_max_projects():
26
def test_set_neighborhood_max_projects():
27
    neighborhood = M.Neighborhood.query.find().first()
27
    neighborhood = M.Neighborhood.query.find().first()
28
    n_id = neighborhood._id
28
    n_id = neighborhood._id
29
    cmd = set_neighborhood_features.SetNeighborhoodFeaturesCommand('setnbfeatures')
29
    cmd = set_neighborhood_features.SetNeighborhoodFeaturesCommand('setnbfeatures')
30
30
31
    # a valid number
31
    # a valid number
32
    cmd.run([test_config, str(n_id), 'max_projects', '50'])
32
    cmd.run([test_config, str(n_id), 'max_projects', '50'])
33
    cmd.command()
34
    neighborhood = M.Neighborhood.query.get(_id=n_id)
33
    neighborhood = M.Neighborhood.query.get(_id=n_id)
35
    assert neighborhood.features['max_projects'] == 50
34
    assert neighborhood.features['max_projects'] == 50
36
35
37
    # none is also valid
36
    # none is also valid
38
    cmd.run([test_config, str(n_id), 'max_projects', 'None'])
37
    cmd.run([test_config, str(n_id), 'max_projects', 'None'])
39
    cmd.command()
40
    neighborhood = M.Neighborhood.query.get(_id=n_id)
38
    neighborhood = M.Neighborhood.query.get(_id=n_id)
41
    assert neighborhood.features['max_projects'] == None
39
    assert neighborhood.features['max_projects'] == None
42
40
43
    # check validation
41
    # check validation
44
    assert_raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'max_projects', 'string'])
42
    assert_raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'max_projects', 'string'])
...
...
49
    n_id = neighborhood._id
47
    n_id = neighborhood._id
50
    cmd = set_neighborhood_features.SetNeighborhoodFeaturesCommand('setnbfeatures')
48
    cmd = set_neighborhood_features.SetNeighborhoodFeaturesCommand('setnbfeatures')
51
49
52
    # allow private projects
50
    # allow private projects
53
    cmd.run([test_config, str(n_id), 'private_projects', 'True'])
51
    cmd.run([test_config, str(n_id), 'private_projects', 'True'])
54
    cmd.command()
55
    neighborhood = M.Neighborhood.query.get(_id=n_id)
52
    neighborhood = M.Neighborhood.query.get(_id=n_id)
56
    assert neighborhood.features['private_projects']
53
    assert neighborhood.features['private_projects']
57
54
58
    # disallow private projects
55
    # disallow private projects
59
    cmd.run([test_config, str(n_id), 'private_projects', 'False'])
56
    cmd.run([test_config, str(n_id), 'private_projects', 'False'])
60
    cmd.command()
61
    neighborhood = M.Neighborhood.query.get(_id=n_id)
57
    neighborhood = M.Neighborhood.query.get(_id=n_id)
62
    assert not neighborhood.features['private_projects']
58
    assert not neighborhood.features['private_projects']
63
59
64
    # check validation
60
    # check validation
65
    assert_raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'private_projects', 'string'])
61
    assert_raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'private_projects', 'string'])
...
...
71
    n_id = neighborhood._id
67
    n_id = neighborhood._id
72
    cmd = set_neighborhood_features.SetNeighborhoodFeaturesCommand('setnbfeatures')
68
    cmd = set_neighborhood_features.SetNeighborhoodFeaturesCommand('setnbfeatures')
73
69
74
    # allow private projects
70
    # allow private projects
75
    cmd.run([test_config, str(n_id), 'google_analytics', 'True'])
71
    cmd.run([test_config, str(n_id), 'google_analytics', 'True'])
76
    cmd.command()
77
    neighborhood = M.Neighborhood.query.get(_id=n_id)
72
    neighborhood = M.Neighborhood.query.get(_id=n_id)
78
    assert neighborhood.features['google_analytics']
73
    assert neighborhood.features['google_analytics']
79
74
80
    # disallow private projects
75
    # disallow private projects
81
    cmd.run([test_config, str(n_id), 'google_analytics', 'False'])
76
    cmd.run([test_config, str(n_id), 'google_analytics', 'False'])
82
    cmd.command()
83
    neighborhood = M.Neighborhood.query.get(_id=n_id)
77
    neighborhood = M.Neighborhood.query.get(_id=n_id)
84
    assert not neighborhood.features['google_analytics']
78
    assert not neighborhood.features['google_analytics']
85
79
86
    # check validation
80
    # check validation
87
    assert_raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'google_analytics', 'string'])
81
    assert_raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'google_analytics', 'string'])
...
...
93
    n_id = neighborhood._id
87
    n_id = neighborhood._id
94
    cmd = set_neighborhood_features.SetNeighborhoodFeaturesCommand('setnbfeatures')
88
    cmd = set_neighborhood_features.SetNeighborhoodFeaturesCommand('setnbfeatures')
95
89
96
    # none
90
    # none
97
    cmd.run([test_config, str(n_id), 'css', 'none'])
91
    cmd.run([test_config, str(n_id), 'css', 'none'])
98
    cmd.command()
99
    neighborhood = M.Neighborhood.query.get(_id=n_id)
92
    neighborhood = M.Neighborhood.query.get(_id=n_id)
100
    assert neighborhood.features['css'] == 'none'
93
    assert neighborhood.features['css'] == 'none'
101
94
102
    # picker
95
    # picker
103
    cmd.run([test_config, str(n_id), 'css', 'picker'])
96
    cmd.run([test_config, str(n_id), 'css', 'picker'])
104
    cmd.command()
105
    neighborhood = M.Neighborhood.query.get(_id=n_id)
97
    neighborhood = M.Neighborhood.query.get(_id=n_id)
106
    assert neighborhood.features['css'] == 'picker'
98
    assert neighborhood.features['css'] == 'picker'
107
99
108
    # custom
100
    # custom
109
    cmd.run([test_config, str(n_id), 'css', 'custom'])
101
    cmd.run([test_config, str(n_id), 'css', 'custom'])
110
    cmd.command()
111
    neighborhood = M.Neighborhood.query.get(_id=n_id)
102
    neighborhood = M.Neighborhood.query.get(_id=n_id)
112
    assert neighborhood.features['css'] == 'custom'
103
    assert neighborhood.features['css'] == 'custom'
113
104
114
    # check validation
105
    # check validation
115
    assert_raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'css', 'string'])
106
    assert_raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'css', 'string'])
...
...
119
    assert_raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'css', 'True'])
110
    assert_raises(InvalidNBFeatureValueError, cmd.run, [test_config, str(n_id), 'css', 'True'])
120
111
121
def test_update_neighborhood():
112
def test_update_neighborhood():
122
    cmd = create_neighborhood.UpdateNeighborhoodCommand('update-neighborhood')
113
    cmd = create_neighborhood.UpdateNeighborhoodCommand('update-neighborhood')
123
    cmd.run([test_config, 'Projects', 'True'])
114
    cmd.run([test_config, 'Projects', 'True'])
124
    cmd.command()
115
    ThreadLocalORMSession.close_all() # make sure the app_configs get freshly queried
125
    nb = M.Neighborhood.query.get(name='Projects')
116
    nb = M.Neighborhood.query.get(name='Projects')
126
    assert nb.has_home_tool == True
117
    assert nb.has_home_tool == True
127
118
128
    cmd = create_neighborhood.UpdateNeighborhoodCommand('update-neighborhood')
119
    cmd = create_neighborhood.UpdateNeighborhoodCommand('update-neighborhood')
129
    cmd.run([test_config, 'Projects', 'False'])
120
    cmd.run([test_config, 'Projects', 'False'])
130
    cmd.command()
121
    ThreadLocalORMSession.close_all() # make sure the app_configs get freshly queried
131
    nb = M.Neighborhood.query.get(name='Projects')
122
    nb = M.Neighborhood.query.get(name='Projects')
132
    assert nb.has_home_tool == False
123
    assert nb.has_home_tool == False