@@ -6,20 +6,76 @@ import uuid from "uuid/v4";
6
6
import { createTempDir } from "../../lib/ioUtil" ;
7
7
import { DEFAULT_PROJECT_NAME , WORKSPACE } from "./constants" ;
8
8
import { getAnswerFromFile , prompt } from "./prompt" ;
9
+ import * as servicePrincipalService from "./servicePrincipalService" ;
9
10
10
11
describe ( "test prompt function" , ( ) => {
11
- it ( "positive test" , async ( ) => {
12
+ it ( "positive test: No App Creation " , async ( ) => {
12
13
const answers = {
13
14
azdo_org_name : "org" ,
14
15
azdo_pat : "pat" ,
15
- azdo_project_name : "project"
16
+ azdo_project_name : "project" ,
17
+ create_app_repo : false
16
18
} ;
17
19
jest . spyOn ( inquirer , "prompt" ) . mockResolvedValueOnce ( answers ) ;
18
20
const ans = await prompt ( ) ;
19
21
expect ( ans ) . toStrictEqual ( {
20
22
accessToken : "pat" ,
21
23
orgName : "org" ,
22
24
projectName : "project" ,
25
+ toCreateAppRepo : false ,
26
+ workspace : WORKSPACE
27
+ } ) ;
28
+ } ) ;
29
+ it ( "positive test: create SP" , async ( ) => {
30
+ const answers = {
31
+ azdo_org_name : "org" ,
32
+ azdo_pat : "pat" ,
33
+ azdo_project_name : "project" ,
34
+ create_app_repo : true
35
+ } ;
36
+ jest . spyOn ( inquirer , "prompt" ) . mockResolvedValueOnce ( answers ) ;
37
+ jest . spyOn ( inquirer , "prompt" ) . mockResolvedValueOnce ( {
38
+ create_service_principal : true
39
+ } ) ;
40
+ jest
41
+ . spyOn ( servicePrincipalService , "createWithAzCLI" )
42
+ . mockReturnValueOnce ( Promise . resolve ( ) ) ;
43
+ const ans = await prompt ( ) ;
44
+ expect ( ans ) . toStrictEqual ( {
45
+ accessToken : "pat" ,
46
+ orgName : "org" ,
47
+ projectName : "project" ,
48
+ toCreateAppRepo : true ,
49
+ toCreateSP : true ,
50
+ workspace : WORKSPACE
51
+ } ) ;
52
+ } ) ;
53
+ it ( "positive test: no create SP" , async ( ) => {
54
+ const answers = {
55
+ azdo_org_name : "org" ,
56
+ azdo_pat : "pat" ,
57
+ azdo_project_name : "project" ,
58
+ create_app_repo : true
59
+ } ;
60
+ jest . spyOn ( inquirer , "prompt" ) . mockResolvedValueOnce ( answers ) ;
61
+ jest . spyOn ( inquirer , "prompt" ) . mockResolvedValueOnce ( {
62
+ create_service_principal : false
63
+ } ) ;
64
+ jest . spyOn ( inquirer , "prompt" ) . mockResolvedValueOnce ( {
65
+ az_sp_id : "b510c1ff-358c-4ed4-96c8-eb23f42bb65b" ,
66
+ az_sp_password : "a510c1ff-358c-4ed4-96c8-eb23f42bbc5b" ,
67
+ az_sp_tenant : "72f988bf-86f1-41af-91ab-2d7cd011db47"
68
+ } ) ;
69
+ const ans = await prompt ( ) ;
70
+ expect ( ans ) . toStrictEqual ( {
71
+ accessToken : "pat" ,
72
+ orgName : "org" ,
73
+ projectName : "project" ,
74
+ servicePrincipalId : "b510c1ff-358c-4ed4-96c8-eb23f42bb65b" ,
75
+ servicePrincipalPassword : "a510c1ff-358c-4ed4-96c8-eb23f42bbc5b" ,
76
+ servicePrincipalTenantId : "72f988bf-86f1-41af-91ab-2d7cd011db47" ,
77
+ toCreateAppRepo : true ,
78
+ toCreateSP : false ,
23
79
workspace : WORKSPACE
24
80
} ) ;
25
81
} ) ;
@@ -87,4 +143,60 @@ describe("test getAnswerFromFile function", () => {
87
143
getAnswerFromFile ( file ) ;
88
144
} ) . toThrow ( ) ;
89
145
} ) ;
146
+ it ( "positive test: with app creation, without SP creation" , ( ) => {
147
+ const dir = createTempDir ( ) ;
148
+ const file = path . join ( dir , "testfile" ) ;
149
+ const data = [
150
+ "azdo_org_name=orgname" ,
151
+ "azdo_pat=pat" ,
152
+ "azdo_project_name=project" ,
153
+ "az_create_app=true" ,
154
+ "az_sp_id=b510c1ff-358c-4ed4-96c8-eb23f42bb65b" ,
155
+ "az_sp_password=a510c1ff-358c-4ed4-96c8-eb23f42bbc5b" ,
156
+ "az_sp_tenant=72f988bf-86f1-41af-91ab-2d7cd011db47"
157
+ ] ;
158
+ fs . writeFileSync ( file , data . join ( "\n" ) ) ;
159
+ const requestContext = getAnswerFromFile ( file ) ;
160
+ expect ( requestContext . orgName ) . toBe ( "orgname" ) ;
161
+ expect ( requestContext . accessToken ) . toBe ( "pat" ) ;
162
+ expect ( requestContext . projectName ) . toBe ( "project" ) ;
163
+ expect ( requestContext . toCreateAppRepo ) . toBeTruthy ( ) ;
164
+ expect ( requestContext . toCreateSP ) . toBeFalsy ( ) ;
165
+ expect ( requestContext . servicePrincipalId ) . toBe (
166
+ "b510c1ff-358c-4ed4-96c8-eb23f42bb65b"
167
+ ) ;
168
+ expect ( requestContext . servicePrincipalPassword ) . toBe (
169
+ "a510c1ff-358c-4ed4-96c8-eb23f42bbc5b"
170
+ ) ;
171
+ expect ( requestContext . servicePrincipalTenantId ) . toBe (
172
+ "72f988bf-86f1-41af-91ab-2d7cd011db47"
173
+ ) ;
174
+ } ) ;
175
+ it ( "negative test: with app creation, incorrect SP values" , ( ) => {
176
+ const dir = createTempDir ( ) ;
177
+ const file = path . join ( dir , "testfile" ) ;
178
+ const data = [
179
+ "azdo_org_name=orgname" ,
180
+ "azdo_pat=pat" ,
181
+ "azdo_project_name=project" ,
182
+ "az_create_app=true"
183
+ ] ;
184
+ [ "." , ".##" , ".abc" ] . forEach ( ( v , i ) => {
185
+ if ( i === 0 ) {
186
+ data . push ( `az_sp_id=${ v } ` ) ;
187
+ } else if ( i === 1 ) {
188
+ data . pop ( ) ;
189
+ data . push ( "az_sp_id=b510c1ff-358c-4ed4-96c8-eb23f42bb65b" ) ;
190
+ data . push ( `az_sp_password=${ v } ` ) ;
191
+ } else {
192
+ data . pop ( ) ;
193
+ data . push ( "az_sp_password=a510c1ff-358c-4ed4-96c8-eb23f42bbc5b" ) ;
194
+ data . push ( `az_sp_tenant=${ v } ` ) ;
195
+ }
196
+ fs . writeFileSync ( file , data . join ( "\n" ) ) ;
197
+ expect ( ( ) => {
198
+ getAnswerFromFile ( file ) ;
199
+ } ) . toThrow ( ) ;
200
+ } ) ;
201
+ } ) ;
90
202
} ) ;
0 commit comments