-
Notifications
You must be signed in to change notification settings - Fork 268
Expand file tree
/
Copy pathtest_boardsIterationTest.py
More file actions
166 lines (136 loc) · 13 KB
/
test_boardsIterationTest.py
File metadata and controls
166 lines (136 loc) · 13 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
import os
import unittest
from knack.util import CLIError
from azure_devtools.scenario_tests import AllowLargeResponse
from .utilities.helper import DevopsScenarioTest, disable_telemetry, set_authentication, get_test_org_from_env_variable
DEVOPS_CLI_TEST_ORGANIZATION = get_test_org_from_env_variable() or 'https://dev.azure.com/ChatOpstestOrg'
class BoardsIterationsTest(DevopsScenarioTest):
@AllowLargeResponse(size_kb=3072)
@disable_telemetry
@set_authentication
def test_boards_iterations(self):
random_project_name = 'Iteration' + self.create_random_name(prefix='Proj_', length=15)
self.cmd('az devops configure --defaults organization=' + DEVOPS_CLI_TEST_ORGANIZATION + ' project=' + random_project_name)
try:
# PROJECT LEVEL ITERATIONS
#create project
create_project_command = 'az devops project create --name ' + random_project_name + ' --output json --detect false'
project_create_output = self.cmd(create_project_command).get_output_in_json()
created_project_id = project_create_output["id"]
list_project_iteration_cmd = 'az boards iteration project list --project ' + random_project_name + ' --output json --detect false'
list_project_iteration = self.cmd(list_project_iteration_cmd).get_output_in_json()
initial_iterations_number = len(list_project_iteration['children'])
#create team
team_name = self.create_random_name(prefix='teamName1_', length=15)
create_team_cmd = 'az devops team create --name ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
create_team = self.cmd(create_team_cmd).get_output_in_json()
assert create_team['name'] == team_name
list_project_iteration_cmd = 'az boards iteration project list --depth 0 --project ' + random_project_name + ' --output json --detect false'
list_project_iteration = self.cmd(list_project_iteration_cmd).get_output_in_json()
project_root_node_name = list_project_iteration['name']
project_root_node_identifier = list_project_iteration['identifier']
#create project root level iteration
root_iteration_name = team_name + self.create_random_name(prefix='_Root_Itr_', length=15)
create_project_iteration_cmd = 'az boards iteration project create --name '+ root_iteration_name + ' --project ' + random_project_name + ' --output json --detect false'
create_project_iteration = self.cmd(create_project_iteration_cmd).get_output_in_json()
root_project_iteration_path = create_project_iteration['path']
root_project_iteration_id = create_project_iteration['id']
root_project_iteration_identifier = create_project_iteration['identifier']
#list project iterations
list_project_iteration_cmd = 'az boards iteration project list --project ' + random_project_name + ' --output json --detect false'
list_project_iteration = self.cmd(list_project_iteration_cmd).get_output_in_json()
assert len(list_project_iteration['children']) == initial_iterations_number + 1
#create 2 project child level iterations
child_iteration_name1 = self.create_random_name(prefix='Child_Itr_', length=15)
create_project_iteration_child_cmd = 'az boards iteration project create --name ' + child_iteration_name1 + ' --path "'+ root_project_iteration_path + '" --project ' + random_project_name + ' --output json --detect false'
create_project_iteration_child = self.cmd(create_project_iteration_child_cmd).get_output_in_json()
child_iteration1_path = create_project_iteration_child['path']
child_iteration1_id = create_project_iteration_child['id']
child_iteration1_identifier = create_project_iteration_child['identifier']
child_iteration_name2 = self.create_random_name(prefix='Child_Itr_', length=15)
create_project_iteration_child_cmd = 'az boards iteration project create --name ' + child_iteration_name2 + ' --start-date "2019-06-17" --finish-date "2019-06-28"' + ' --path "'+ root_project_iteration_path + '" --project ' + random_project_name + ' --output json --detect false'
create_project_iteration_child = self.cmd(create_project_iteration_child_cmd).get_output_in_json()
child_iteration2_path = create_project_iteration_child['path']
child_iteration2_identifier = create_project_iteration_child['identifier']
child_iteration2_id = create_project_iteration_child['id']
list_project_iteration_cmd = 'az boards iteration project list --depth 2 --project ' + random_project_name + ' --output json --detect false'
list_project_iteration = self.cmd(list_project_iteration_cmd).get_output_in_json()
root_list_project_iteration = list_project_iteration['children']
assert len(root_list_project_iteration) == (initial_iterations_number + 1)
for entry in root_list_project_iteration:
if entry['name'] == root_iteration_name and entry['hasChildren'] and entry['children']:
child_name_list = [entry['children'][0]['name'], entry['children'][1]['name']]
assert child_iteration_name1 in child_name_list
assert child_iteration_name2 in child_name_list
# show project iteration
show_project_iteration_cmd = 'az boards iteration project show --id ' + str(child_iteration1_id) + ' --project ' + random_project_name + ' --output json --detect false'
show_project_iteration = self.cmd(show_project_iteration_cmd).get_output_in_json()
assert show_project_iteration[0]['path'] == child_iteration1_path
assert show_project_iteration[0]['id'] == child_iteration1_id
# update project iteration
update_project_iteration_name_cmd = 'az boards iteration project update --path "' + child_iteration1_path + '" --child-id ' + str(child_iteration2_id) + ' --project ' + random_project_name + ' --output json --detect false'
print(update_project_iteration_name_cmd)
update_project_iteration = self.cmd(update_project_iteration_name_cmd).get_output_in_json()
assert update_project_iteration['path'] == child_iteration1_path
assert update_project_iteration['id'] == child_iteration1_id
# TEAM LEVEL ITERATIONS
list_team_iteration_cmd = 'az boards iteration team list --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
list_team_iteration = self.cmd(list_team_iteration_cmd).get_output_in_json()
assert len(list_team_iteration) == 0
# Adding a new iteration to team before configuring backlog iteration should throw error.
with self.assertRaises(Exception) as exc:
team_iteration_add_cmd = 'az boards iteration team add --id ' + root_project_iteration_identifier + ' --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
team_iteration_add = self.cmd(team_iteration_add_cmd).get_output_in_json()
self.assertIn('No backlog iteration has been selected for your team. Before you can select iterations for your team to participate in, you must first specify a backlog iteration.', str(exc.exception))
# set back log iteration and then add both child iterations to team
backlog_team_iteration_set_cmd = 'az boards iteration team set-backlog-iteration --id ' + project_root_node_identifier + ' --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
backlog_team_iteration_set = self.cmd(backlog_team_iteration_set_cmd).get_output_in_json()
assert backlog_team_iteration_set['backlogIteration']['id'] == project_root_node_identifier
assert backlog_team_iteration_set['backlogIteration']['name'] == project_root_node_name ## '\\'+random_project_name+'\\'+'Iteration'
backlog_team_iteration_show_cmd = 'az boards iteration team show-backlog-iteration --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
backlog_team_iteration_show = self.cmd(backlog_team_iteration_show_cmd).get_output_in_json()
assert backlog_team_iteration_set['backlogIteration']['id'] == project_root_node_identifier
assert backlog_team_iteration_set['backlogIteration']['name'] == project_root_node_name
team_iteration_add_cmd = 'az boards iteration team add --id ' + child_iteration1_identifier + ' --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
team_iteration_add = self.cmd(team_iteration_add_cmd).get_output_in_json()
assert team_iteration_add['id'] == child_iteration1_identifier
assert team_iteration_add['name'] == child_iteration_name1
team_iteration_add_cmd = 'az boards iteration team add --id ' + child_iteration2_identifier + ' --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
team_iteration_add = self.cmd(team_iteration_add_cmd).get_output_in_json()
assert team_iteration_add['id'] == child_iteration2_identifier
assert team_iteration_add['name'] == child_iteration_name2
# set and get default team iteration
default_team_iteration_set_cmd = 'az boards iteration team set-default-iteration --id ' + root_project_iteration_identifier + ' --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
default_team_iteration_set = self.cmd(default_team_iteration_set_cmd).get_output_in_json()
assert default_team_iteration_set['defaultIteration']['id'] == root_project_iteration_identifier
assert default_team_iteration_set['defaultIteration']['name'] == root_iteration_name
self.sleep_in_live_run(30)
default_team_iteration_show_cmd = 'az boards iteration team show-default-iteration --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
default_team_iteration_show = self.cmd(default_team_iteration_show_cmd).get_output_in_json()
assert default_team_iteration_show['defaultIteration']['id'] == root_project_iteration_identifier
assert default_team_iteration_show['defaultIteration']['name'] == root_iteration_name
list_team_iteration_cmd = 'az boards iteration team list --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
list_team_iteration = self.cmd(list_team_iteration_cmd).get_output_in_json()
assert len(list_team_iteration) == 2
team_iteration_remove_cmd = 'az boards iteration team remove --id ' + child_iteration1_identifier + ' --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
team_iteration_remove = self.cmd(team_iteration_remove_cmd)
list_team_iteration_cmd = 'az boards iteration team list --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
list_team_iteration = self.cmd(list_team_iteration_cmd).get_output_in_json()
assert len(list_team_iteration) == 1
team_iteration_remove_cmd = 'az boards iteration team remove --id ' + child_iteration2_identifier + ' --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
team_iteration_remove = self.cmd(team_iteration_remove_cmd)
list_team_iteration_cmd = 'az boards iteration team list --team ' + team_name + ' --project ' + random_project_name + ' --output json --detect false'
list_team_iteration = self.cmd(list_team_iteration_cmd).get_output_in_json()
assert len(list_team_iteration) == 0
delete_project_iteration_cmd = 'az boards iteration project delete --path "'+ root_project_iteration_path + '" --project ' + random_project_name + ' --output json --detect false -y'
delete_project_iteration = self.cmd(delete_project_iteration_cmd)
list_project_iteration = self.cmd(list_project_iteration_cmd).get_output_in_json()
assert len(list_project_iteration['children']) == initial_iterations_number
finally:
if created_project_id is not None:
delete_project_command = 'az devops project delete --id ' + created_project_id + ' --output json --detect false -y'
self.cmd(delete_project_command)