@@ -83,6 +83,7 @@ public class EntitlementTestCase {
8383 public bool Required ;
8484 public bool IsSimulator ;
8585 public bool ? CodesignRequireProvisioningProfile ;
86+ public bool ? ExpectedProvisioningProfile ;
8687
8788 public override string ToString ( )
8889 {
@@ -99,7 +100,7 @@ static EntitlementTestCase [] GetEntitlementsTestCases ()
99100 new EntitlementTestCase { Name = nameof ( EmptyEntitlements2 ) , Entitlements = EmptyEntitlements2 , IsSimulator = true } ,
100101 new EntitlementTestCase { Name = nameof ( EmptyEntitlements3 ) , Entitlements = EmptyEntitlements3 , IsSimulator = true } ,
101102 new EntitlementTestCase { Name = nameof ( EmptyEntitlements4 ) , Entitlements = EmptyEntitlements4 , IsSimulator = true } ,
102- new EntitlementTestCase { Name = nameof ( NonEmptyEntitlements1 ) , Entitlements = NonEmptyEntitlements1 , IsSimulator = true } ,
103+ new EntitlementTestCase { Name = nameof ( NonEmptyEntitlements1 ) , Entitlements = NonEmptyEntitlements1 , IsSimulator = true , ExpectedProvisioningProfile = true } ,
103104 new EntitlementTestCase { Name = nameof ( EmptyEntitlements1 ) + "_Required" , Entitlements = EmptyEntitlements1 , IsSimulator = true , CodesignRequireProvisioningProfile = true } ,
104105 new EntitlementTestCase { Name = nameof ( NonEmptyEntitlements1 ) + "_NotRequired" , Entitlements = NonEmptyEntitlements1 , IsSimulator = true , CodesignRequireProvisioningProfile = false } ,
105106 // device
@@ -109,7 +110,7 @@ static EntitlementTestCase [] GetEntitlementsTestCases ()
109110 new EntitlementTestCase { Name = nameof ( EmptyEntitlements4 ) + "_Device" , Entitlements = EmptyEntitlements4 , IsSimulator = false } ,
110111 new EntitlementTestCase { Name = nameof ( NonEmptyEntitlements1 ) + "_Device" , Entitlements = NonEmptyEntitlements1 , IsSimulator = false } ,
111112 new EntitlementTestCase { Name = nameof ( EmptyEntitlements1 ) + "_Required_Device" , Entitlements = EmptyEntitlements1 , IsSimulator = false , CodesignRequireProvisioningProfile = true } ,
112- new EntitlementTestCase { Name = nameof ( NonEmptyEntitlements1 ) + "_NotRequired_Device" , Entitlements = NonEmptyEntitlements1 , IsSimulator = false , CodesignRequireProvisioningProfile = false } ,
113+ new EntitlementTestCase { Name = nameof ( NonEmptyEntitlements1 ) + "_NotRequired_Device" , Entitlements = NonEmptyEntitlements1 , IsSimulator = false , CodesignRequireProvisioningProfile = false , ExpectedProvisioningProfile = false } ,
113114 } ;
114115 }
115116
@@ -130,26 +131,26 @@ public void EmptyEntitlements (EntitlementTestCase testCase)
130131
131132 ExecuteTask ( task ) ;
132133
133- if ( testCase . IsSimulator ) {
134+ bool requiresProvisioningProfile ;
135+ if ( testCase . ExpectedProvisioningProfile . HasValue ) {
136+ requiresProvisioningProfile = testCase . ExpectedProvisioningProfile . Value ;
137+ } else {
138+ requiresProvisioningProfile = testCase . CodesignRequireProvisioningProfile == true || ! testCase . IsSimulator ;
139+ }
140+
141+ if ( requiresProvisioningProfile ) {
142+ Assert . That ( task . DetectedAppId , Does . EndWith ( ".com.tests.emptyentitlements" ) , "DetectedAppId" ) ;
143+ Assert . That ( task . DetectedProvisioningProfile , Is . Not . Null . And . Not . Empty , "DetectedProvisioningProfile" ) ;
144+ } else {
134145 Assert . AreEqual ( "com.tests.emptyentitlements" , task . DetectedAppId , "DetectedAppId" ) ;
146+ Assert . That ( task . DetectedProvisioningProfile , Is . Null . Or . Empty , "DetectedProvisioningProfile" ) ;
147+ }
148+ if ( testCase . IsSimulator || ! requiresProvisioningProfile ) {
135149 Assert . AreEqual ( "-" , task . DetectedCodeSigningKey , "DetectedCodeSigningKey" ) ;
136150 Assert . That ( task . DetectedDistributionType , Is . EqualTo ( "Any" ) , "DetectedDistributionType" ) ;
137- Assert . That ( task . DetectedProvisioningProfile , Is . Null . Or . Empty , "DetectedProvisioningProfile" ) ;
138151 } else {
139- if ( testCase . CodesignRequireProvisioningProfile != false ) {
140- Assert . That ( task . DetectedAppId , Does . EndWith ( ".com.tests.emptyentitlements" ) , "DetectedAppId" ) ;
141- } else {
142- Assert . AreEqual ( "com.tests.emptyentitlements" , task . DetectedAppId , "DetectedAppId" ) ;
143- }
144- if ( testCase . CodesignRequireProvisioningProfile != false ) {
145- Assert . That ( task . DetectedCodeSigningKey , Has . Length . EqualTo ( "20D63576DE3EA7BE419C18997CF948D759B43D53" . Length ) , "DetectedCodeSigningKey" ) ;
146- Assert . That ( task . DetectedDistributionType , Is . EqualTo ( "Development" ) . Or . EqualTo ( "AppStore" ) . Or . EqualTo ( "Any" ) , "DetectedDistributionType" ) ;
147- Assert . That ( task . DetectedProvisioningProfile , Is . Not . Null . And . Not . Empty , "DetectedProvisioningProfile" ) ;
148- } else {
149- Assert . That ( task . DetectedCodeSigningKey , Has . Length . EqualTo ( "-" . Length ) , "DetectedCodeSigningKey" ) ;
150- Assert . That ( task . DetectedDistributionType , Is . EqualTo ( "Any" ) , "DetectedDistributionType" ) ;
151- Assert . That ( task . DetectedProvisioningProfile , Is . Null . Or . Empty , "DetectedProvisioningProfile" ) ;
152- }
152+ Assert . That ( task . DetectedCodeSigningKey , Has . Length . EqualTo ( "20D63576DE3EA7BE419C18997CF948D759B43D53" . Length ) , "DetectedCodeSigningKey" ) ;
153+ Assert . That ( task . DetectedDistributionType , Is . EqualTo ( "Development" ) . Or . EqualTo ( "AppStore" ) . Or . EqualTo ( "Any" ) , "DetectedDistributionType" ) ;
153154 }
154155 Assert . AreEqual ( $ "{ Xamarin . Tests . Configuration . XcodeLocation } /Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate", task . DetectedCodesignAllocate , "DetectedCodesignAllocate" ) ;
155156 }
@@ -162,12 +163,32 @@ public void CustomEntitlements ()
162163 task . CustomEntitlements = new ITaskItem [ ] { new TaskItem ( "keychain-access-group" ) } ;
163164 ExecuteTask ( task ) ;
164165
165- Assert . That ( task . DetectedAppId , Is . Null . Or . Empty , "DetectedAppId" ) ;
166+ Assert . That ( task . DetectedAppId , Is . Not . Null . And . Not . Empty , "DetectedAppId" ) ;
166167 Assert . AreEqual ( "-" , task . DetectedCodeSigningKey , "DetectedCodeSigningKey" ) ;
167168 Assert . AreEqual ( $ "{ Xamarin . Tests . Configuration . XcodeLocation } /Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate", task . DetectedCodesignAllocate , "DetectedCodesignAllocate" ) ;
168169 Assert . AreEqual ( "Any" , task . DetectedDistributionType , "DetectedDistributionType" ) ;
169- Assert . That ( task . DetectedProvisioningProfile , Is . Null . Or . Empty , "DetectedProvisioningProfile" ) ;
170+ Assert . That ( task . DetectedProvisioningProfile , Is . Not . Null . And . Not . Empty , "DetectedProvisioningProfile" ) ;
170171 Assert . IsTrue ( task . HasEntitlements , "HasEntitlements" ) ;
171172 }
173+
174+ [ Test ]
175+ public void Simulator ( )
176+ {
177+ var dir = Cache . CreateTemporaryDirectory ( ) ;
178+ var task = CreateTask ( dir ) ;
179+ task . BundleIdentifier = "com.xamarin.simulatortest" ;
180+ task . SdkIsSimulator = true ;
181+ task . CustomEntitlements = new ITaskItem [ ] { new TaskItem ( "keychain-access-group" ) } ;
182+ ExecuteTask ( task ) ;
183+
184+ Assert . Multiple ( ( ) => {
185+ Assert . That ( task . DetectedAppId , Does . EndWith ( "." + task . BundleIdentifier ) , "DetectedAppId" ) ;
186+ Assert . AreEqual ( "-" , task . DetectedCodeSigningKey , "DetectedCodeSigningKey" ) ;
187+ Assert . AreEqual ( $ "{ Xamarin . Tests . Configuration . XcodeLocation } /Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate", task . DetectedCodesignAllocate , "DetectedCodesignAllocate" ) ;
188+ Assert . AreEqual ( "Any" , task . DetectedDistributionType , "DetectedDistributionType" ) ;
189+ Assert . That ( task . DetectedProvisioningProfile , Is . Not . Null . And . Not . Empty , "DetectedProvisioningProfile" ) ;
190+ Assert . IsTrue ( task . HasEntitlements , "HasEntitlements" ) ;
191+ } ) ;
192+ }
172193 }
173194}
0 commit comments