@@ -790,6 +790,7 @@ func testHostsDelete(t *testing.T, ds *Datastore) {
790
790
}
791
791
792
792
func listHostsCheckCount (t * testing.T , ds * Datastore , filter fleet.TeamFilter , opt fleet.HostListOptions , expectedCount int ) []* fleet.Host {
793
+ t .Helper ()
793
794
hosts , err := ds .ListHosts (context .Background (), filter , opt )
794
795
require .NoError (t , err )
795
796
count , err := ds .CountHosts (context .Background (), filter , opt )
@@ -809,36 +810,43 @@ func testHostListOptionsTeamFilter(t *testing.T, ds *Datastore) {
809
810
require .NoError (t , err )
810
811
811
812
var hosts []* fleet.Host
812
- for i := 0 ; i < 10 ; i ++ {
813
+ for i := 0 ; i < 20 ; i ++ {
813
814
var opts []test.NewHostOption
814
815
switch i {
815
- case 5 , 6 :
816
+ case 0 :
816
817
opts = append (opts , test .WithPlatform ("windows" ))
818
+ case 1 , 2 :
819
+ opts = append (opts , test .WithPlatform ("ubuntu" )) // supported for linux encryption
820
+ case 3 , 4 , 5 :
821
+ opts = append (opts , test .WithOSVersion ("Fedora 33" )) // supported for linux encryption
822
+ case 6 , 7 , 8 , 9 :
823
+ opts = append (opts , test .WithPlatform ("foo" )) // not supported for linux encryption
817
824
}
818
825
h := test .NewHost (t , ds , fmt .Sprintf ("foo.local.%d" , i ), "1.1.1.1" ,
819
- fmt .Sprintf ("%d" , i ), fmt .Sprintf ("%d" , i ), time .Now (), opts ... )
826
+ fmt .Sprintf ("%d" , i ), fmt .Sprintf ("%d" , i ), time .Now (), opts ... ) // default macos platform
820
827
hosts = append (hosts , h )
821
828
nanoEnrollAndSetHostMDMData (t , ds , h , false )
822
829
}
830
+
823
831
userFilter := fleet.TeamFilter {User : test .UserAdmin }
824
832
825
- // confirm intial state
833
+ // confirm initial state
826
834
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {}, len (hosts ))
827
835
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterNil }, len (hosts ))
828
836
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero }, len (hosts ))
829
837
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID }, 0 )
830
838
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team2 .ID }, 0 )
831
839
832
- // assign three hosts to team 1
833
- require .NoError (t , ds .AddHostsToTeam (context .Background (), & team1 .ID , []uint {hosts [0 ].ID , hosts [1 ].ID , hosts [2 ].ID }))
840
+ // assign three macos hosts to team 1
841
+ require .NoError (t , ds .AddHostsToTeam (context .Background (), & team1 .ID , []uint {hosts [10 ].ID , hosts [11 ].ID , hosts [12 ].ID }))
834
842
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {}, len (hosts ))
835
843
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterNil }, len (hosts ))
836
844
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero }, len (hosts )- 3 )
837
845
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID }, 3 )
838
846
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team2 .ID }, 0 )
839
847
840
848
// assign four hosts to team 2
841
- require .NoError (t , ds .AddHostsToTeam (context .Background (), & team2 .ID , []uint {hosts [3 ].ID , hosts [4 ].ID , hosts [5 ].ID , hosts [6 ].ID }))
849
+ require .NoError (t , ds .AddHostsToTeam (context .Background (), & team2 .ID , []uint {hosts [13 ].ID , hosts [14 ].ID , hosts [15 ].ID , hosts [16 ].ID }))
842
850
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {}, len (hosts ))
843
851
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterNil }, len (hosts ))
844
852
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero }, len (hosts )- 7 )
@@ -851,7 +859,7 @@ func testHostListOptionsTeamFilter(t *testing.T, ds *Datastore) {
851
859
{
852
860
ProfileUUID : profUUID ,
853
861
ProfileIdentifier : "identifier" ,
854
- HostUUID : hosts [0 ].UUID , // hosts[0 ] is assgined to team 1
862
+ HostUUID : hosts [10 ].UUID , // hosts[10 ] is assgined to team 1
855
863
CommandUUID : "command-uuid-1" ,
856
864
OperationType : fleet .MDMOperationTypeInstall ,
857
865
Status : & fleet .MDMDeliveryVerifying ,
@@ -869,46 +877,78 @@ func testHostListOptionsTeamFilter(t *testing.T, ds *Datastore) {
869
877
{
870
878
ProfileUUID : profUUID ,
871
879
ProfileIdentifier : "identifier" ,
872
- HostUUID : hosts [9 ].UUID , // hosts[9 ] is assgined to no team
880
+ HostUUID : hosts [19 ].UUID , // hosts[19 ] is assgined to no team
873
881
CommandUUID : "command-uuid-2" ,
874
882
OperationType : fleet .MDMOperationTypeInstall ,
875
883
Status : & fleet .MDMDeliveryVerifying ,
876
884
Checksum : []byte ("csum" ),
877
885
},
878
886
}))
879
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , MacOSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[0 ]
887
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , MacOSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[10 ]
880
888
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team2 .ID , MacOSSettingsFilter : fleet .OSSettingsVerifying }, 0 ) // wrong team
881
889
// macos settings filter does not support "all teams" so both teamIDFilterNil acts the same as teamIDFilterZero
882
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , MacOSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[9 ]
883
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterNil , MacOSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[9 ]
884
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {MacOSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[9 ]
890
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , MacOSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[19 ]
891
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterNil , MacOSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[19 ]
892
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {MacOSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[19 ]
885
893
886
- // test team filter in combination with os settings filter
887
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[0]
894
+ // OS Settings Filters
895
+
896
+ // team 1
897
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[10]
898
+
899
+ // team 2
888
900
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team2 .ID , OSSettingsFilter : fleet .OSSettingsVerifying }, 0 ) // wrong team
901
+
889
902
// os settings filter does not support "all teams" so teamIDFilterNil acts the same as teamIDFilterZero
890
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[9 ]
891
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterNil , OSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[9 ]
903
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[19 ]
904
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterNil , OSSettingsFilter : fleet .OSSettingsVerifying }, 1 ) // hosts[19 ]
892
905
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {OSSettingsFilter : fleet .OSSettingsVerifying }, 1 )
906
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsFilter : fleet .OSSettingsPending }, 5 ) // pending supported linux hosts
907
+
908
+ require .NoError (t , ds .SaveLUKSData (context .Background (), hosts [1 ].ID , "key1" , "morton" , 1 )) // set host 1 to verified
909
+ require .NoError (t , ds .ReportEscrowError (context .Background (), hosts [2 ].ID , "error" )) // set host 2 to failed
910
+
911
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsFilter : fleet .OSSettingsVerified }, 1 ) // hosts[1]
912
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsFilter : fleet .OSSettingsFailed }, 1 ) // hosts[2]
913
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsFilter : fleet .OSSettingsPending }, 3 ) // still-pending supported linux hosts
914
+
915
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionVerified }, 1 )
916
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionFailed }, 1 )
917
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionActionRequired }, 3 )
893
918
894
919
// test team filter in combination with os settings disk encryptionfilter
895
920
require .NoError (t , ds .BulkUpsertMDMAppleHostProfiles (context .Background (), []* fleet.MDMAppleBulkUpsertHostProfilePayload {
896
921
{
897
922
ProfileUUID : profUUID ,
898
923
ProfileIdentifier : mobileconfig .FleetFileVaultPayloadIdentifier ,
899
- HostUUID : hosts [8 ].UUID , // hosts[8 ] is assgined to no team
924
+ HostUUID : hosts [18 ].UUID , // hosts[18 ] is assgined to no team
900
925
CommandUUID : "command-uuid-3" ,
901
926
OperationType : fleet .MDMOperationTypeInstall ,
902
927
Status : & fleet .MDMDeliveryPending ,
903
928
Checksum : []byte ("disk-encryption-csum" ),
904
929
},
905
930
}))
906
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionEnforcing }, 0 ) // hosts[0 ]
931
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionEnforcing }, 0 ) // hosts[10 ]
907
932
listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team2 .ID , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionEnforcing }, 0 ) // wrong team
908
933
// os settings filter does not support "all teams" so teamIDFilterNil acts the same as teamIDFilterZero
909
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionEnforcing }, 1 ) // hosts[8]
910
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterNil , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionEnforcing }, 1 ) // hosts[8]
911
- listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionEnforcing }, 1 ) // hosts[8]
934
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterZero , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionEnforcing }, 1 ) // hosts[18]
935
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterNil , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionEnforcing }, 1 ) // hosts[18]
936
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionEnforcing }, 1 ) // hosts[18]
937
+
938
+ // move linux hosts to team 1 (un-escrows keys)
939
+ require .NoError (t , ds .AddHostsToTeam (context .Background (), & team1 .ID , []uint {hosts [1 ].ID , hosts [2 ].ID , hosts [3 ].ID , hosts [4 ].ID , hosts [5 ].ID }))
940
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsFilter : fleet .OSSettingsPending }, 5 ) // pending supported linux hosts
941
+
942
+ require .NoError (t , ds .SaveLUKSData (context .Background (), hosts [1 ].ID , "key1" , "mutton" , 2 )) // set host 1 to verified
943
+ require .NoError (t , ds .ReportEscrowError (context .Background (), hosts [2 ].ID , "error" )) // set host 2 to failed
944
+
945
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsFilter : fleet .OSSettingsVerified }, 1 ) // hosts[1]
946
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsFilter : fleet .OSSettingsFailed }, 1 ) // hosts[2]
947
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsFilter : fleet .OSSettingsPending }, 3 ) // still-pending supported linux hosts
948
+
949
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionVerified }, 1 )
950
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionFailed }, 1 )
951
+ listHostsCheckCount (t , ds , userFilter , fleet.HostListOptions {TeamFilter : & team1 .ID , OSSettingsDiskEncryptionFilter : fleet .DiskEncryptionActionRequired }, 3 )
912
952
913
953
// Bad team filter
914
954
_ , err = ds .ListHosts (context .Background (), userFilter , fleet.HostListOptions {TeamFilter : teamIDFilterBad })
0 commit comments