@@ -6,20 +6,76 @@ import uuid from "uuid/v4";
66import { createTempDir } from "../../lib/ioUtil" ;
77import { DEFAULT_PROJECT_NAME , WORKSPACE } from "./constants" ;
88import { getAnswerFromFile , prompt } from "./prompt" ;
9+ import * as servicePrincipalService from "./servicePrincipalService" ;
910
1011describe ( "test prompt function" , ( ) => {
11- it ( "positive test" , async ( ) => {
12+ it ( "positive test: No App Creation " , async ( ) => {
1213 const answers = {
1314 azdo_org_name : "org" ,
1415 azdo_pat : "pat" ,
15- azdo_project_name : "project"
16+ azdo_project_name : "project" ,
17+ create_app_repo : false
1618 } ;
1719 jest . spyOn ( inquirer , "prompt" ) . mockResolvedValueOnce ( answers ) ;
1820 const ans = await prompt ( ) ;
1921 expect ( ans ) . toStrictEqual ( {
2022 accessToken : "pat" ,
2123 orgName : "org" ,
2224 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 ,
2379 workspace : WORKSPACE
2480 } ) ;
2581 } ) ;
@@ -87,4 +143,60 @@ describe("test getAnswerFromFile function", () => {
87143 getAnswerFromFile ( file ) ;
88144 } ) . toThrow ( ) ;
89145 } ) ;
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+ } ) ;
90202} ) ;
0 commit comments