@@ -13,19 +13,23 @@ class TestLicensePreflights:
1313 def test_license_preflight (self ):
1414 task = create_task (GetAvailableLicenses , {})
1515 task ._init_api = Mock ()
16+
17+ # Mock license data with usage
1618 task ._init_api .return_value .query .return_value = {
17- "totalSize" : 2 ,
19+ "totalSize" : 3 ,
1820 "records" : [
19- {"LicenseDefinitionKey" : "TEST1" },
20- {"LicenseDefinitionKey" : "TEST2" },
21+ {"LicenseDefinitionKey" : "TEST1" , "TotalLicenses" : 100 , "UsedLicenses" : 50 },
22+ {"LicenseDefinitionKey" : "TEST2" , "TotalLicenses" : 10 , "UsedLicenses" : 10 },
23+ {"LicenseDefinitionKey" : "TEST3" , "TotalLicenses" : 20 , "UsedLicenses" : 15 },
2124 ],
2225 }
23- task ()
2426
27+ task ()
2528 task ._init_api .return_value .query .assert_called_once_with (
26- "SELECT LicenseDefinitionKey FROM UserLicense"
29+ "SELECT Id, LicenseDefinitionKey, TotalLicenses, UsedLicenses FROM UserLicense WHERE Status = 'Active' "
2730 )
28- assert task .return_values == ["TEST1" , "TEST2" ]
31+ # Only TEST1 and TEST3 have available licenses
32+ assert task .return_values == ["TEST1" , "TEST3" ]
2933
3034 def test_psl_preflight (self ):
3135 task = create_task (GetAvailablePermissionSetLicenses , {})
@@ -47,25 +51,18 @@ def test_psl_preflight(self):
4751
4852 def test_assigned_permsetlicense_preflight (self ):
4953 task = create_task (GetPermissionLicenseSetAssignments , {})
54+ task .org_config .user_id = "USER_ID"
5055 task ._init_api = Mock ()
56+
5157 task ._init_api .return_value .query_all .return_value = {
5258 "totalSize" : 2 ,
5359 "done" : True ,
5460 "records" : [
55- {
56- "PermissionSetLicense" : {
57- "MasterLabel" : "Document Checklist" ,
58- "DeveloperName" : "DocumentChecklist" ,
59- },
60- },
61- {
62- "PermissionSetLicense" : {
63- "MasterLabel" : "Einstein Analytics Plus Admin" ,
64- "DeveloperName" : "EinsteinAnalyticsPlusAdmin" ,
65- },
66- },
61+ {"PermissionSetLicense" : {"DeveloperName" : "DocumentChecklist" }},
62+ {"PermissionSetLicense" : {"DeveloperName" : "EinsteinAnalyticsPlusAdmin" }},
6763 ],
6864 }
65+
6966 task ()
7067
7168 task ._init_api .return_value .query_all .assert_called_once_with (
@@ -80,16 +77,30 @@ def test_permsets_preflight(self):
8077 task = create_task (GetAvailablePermissionSets , {})
8178 task ._init_api = Mock ()
8279
83- task ._init_api .return_value .query_all .return_value = {
80+ # Mock user licenses
81+ task ._init_api .return_value .query .return_value = {
8482 "totalSize" : 2 ,
8583 "records" : [
86- {"Name " : "TEST1" },
87- {"Name " : "TEST2" },
84+ {"Id " : "L1" , "LicenseDefinitionKey" : "Platform" , "TotalLicenses" : 100 , "UsedLicenses" : 90 },
85+ {"Id " : "L2" , "LicenseDefinitionKey" : "Force" , "TotalLicenses" : 50 , "UsedLicenses" : 50 }, # fully used
8886 ],
8987 }
90- task ()
9188
89+ # Mock permission sets
90+ task ._init_api .return_value .query_all .return_value = {
91+ "totalSize" : 3 ,
92+ "records" : [
93+ {"Name" : "TEST1" , "LicenseId" : None },
94+ {"Name" : "TEST2" , "LicenseId" : "L1" }, # available
95+ {"Name" : "TEST3" , "LicenseId" : "L2" }, # not available
96+ ],
97+ }
98+
99+ task ()
100+ task ._init_api .return_value .query .assert_called_once_with (
101+ "SELECT Id, LicenseDefinitionKey, TotalLicenses, UsedLicenses FROM UserLicense WHERE Status = 'Active'"
102+ )
92103 task ._init_api .return_value .query_all .assert_called_once_with (
93- "SELECT Name FROM PermissionSet"
104+ "SELECT LicenseId, Name FROM PermissionSet"
94105 )
95106 assert task .return_values == ["TEST1" , "TEST2" ]
0 commit comments