feat: update integration test for new endpoint

This commit is contained in:
Jahziel Villasana-Espinoza 2024-05-24 12:25:59 -04:00
parent 209c122a52
commit a1fc0ab2d0
3 changed files with 91 additions and 4 deletions

View file

@ -825,6 +825,8 @@ type InsertMDMConfigAssetsFunc func(ctx context.Context, assets []fleet.MDMConfi
type GetMDMConfigAssetsByNameFunc func(ctx context.Context, assetNames []fleet.MDMAssetName) ([]fleet.MDMConfigAsset, error)
type DeleteMDMConfigAssetsByNameFunc func(ctx context.Context, assetNames []fleet.MDMAssetName) error
type WSTEPStoreCertificateFunc func(ctx context.Context, name string, crt *x509.Certificate) error
type WSTEPNewSerialFunc func(ctx context.Context) (*big.Int, error)
@ -2167,6 +2169,9 @@ type DataStore struct {
GetMDMConfigAssetsByNameFunc GetMDMConfigAssetsByNameFunc
GetMDMConfigAssetsByNameFuncInvoked bool
DeleteMDMConfigAssetsByNameFunc DeleteMDMConfigAssetsByNameFunc
DeleteMDMConfigAssetsByNameFuncInvoked bool
WSTEPStoreCertificateFunc WSTEPStoreCertificateFunc
WSTEPStoreCertificateFuncInvoked bool
@ -5189,6 +5194,13 @@ func (s *DataStore) GetMDMConfigAssetsByName(ctx context.Context, assetNames []f
return s.GetMDMConfigAssetsByNameFunc(ctx, assetNames)
}
func (s *DataStore) DeleteMDMConfigAssetsByName(ctx context.Context, assetNames []fleet.MDMAssetName) error {
s.mu.Lock()
s.DeleteMDMConfigAssetsByNameFuncInvoked = true
s.mu.Unlock()
return s.DeleteMDMConfigAssetsByNameFunc(ctx, assetNames)
}
func (s *DataStore) WSTEPStoreCertificate(ctx context.Context, name string, crt *x509.Certificate) error {
s.mu.Lock()
s.WSTEPStoreCertificateFuncInvoked = true

View file

@ -920,9 +920,10 @@ foobar
-----END CERTIFICATE REQUEST-----`)
// Check that we created the right assets
assetsFromCall1, err := s.ds.GetMDMConfigAssetsByName(ctx, []fleet.MDMAssetName{fleet.MDMAssetCACert, fleet.MDMAssetCAKey, fleet.MDMAssetAPNSKey})
var originalAssets []fleet.MDMConfigAsset
originalAssets, err := s.ds.GetMDMConfigAssetsByName(ctx, []fleet.MDMAssetName{fleet.MDMAssetCACert, fleet.MDMAssetCAKey, fleet.MDMAssetAPNSKey})
require.NoError(t, err)
require.Len(t, assetsFromCall1, 3)
require.Len(t, originalAssets, 3)
resp = getMDMAppleCSRResponse{}
s.SucceedNextCSRRequest()
@ -933,9 +934,53 @@ foobar
-----END CERTIFICATE REQUEST-----`)
// Check that the assets stayed the same in the subsequent call
assetsFromCall2, err := s.ds.GetMDMConfigAssetsByName(ctx, []fleet.MDMAssetName{fleet.MDMAssetCACert, fleet.MDMAssetCAKey, fleet.MDMAssetAPNSKey})
assets, err := s.ds.GetMDMConfigAssetsByName(ctx, []fleet.MDMAssetName{fleet.MDMAssetCACert, fleet.MDMAssetCAKey, fleet.MDMAssetAPNSKey})
require.NoError(t, err)
require.Equal(t, assetsFromCall1, assetsFromCall2)
require.Equal(t, originalAssets, assets)
// Upload an APNS cert
s.uploadAPNSCert("apns.pem", http.StatusAccepted)
assets, err = s.ds.GetMDMConfigAssetsByName(ctx, []fleet.MDMAssetName{fleet.MDMAssetCACert, fleet.MDMAssetCAKey, fleet.MDMAssetAPNSKey, fleet.MDMAssetAPNSCert})
require.NoError(t, err)
require.Len(t, assets, 4)
// Delete APNS cert, should soft delete all certs and keys created in this test
s.Do("DELETE", "/api/latest/fleet/mdm/apple/apns_certificate", nil, http.StatusOK)
assets, err = s.ds.GetMDMConfigAssetsByName(ctx, []fleet.MDMAssetName{fleet.MDMAssetCACert, fleet.MDMAssetCAKey, fleet.MDMAssetAPNSKey, fleet.MDMAssetAPNSCert})
require.NoError(t, err)
require.Len(t, assets, 0)
}
func (s *integrationMDMTestSuite) uploadAPNSCert(pemFileName string, expectedStatus int) {
t := s.T()
read := func(name string) []byte {
b, err := os.ReadFile(filepath.Join("testdata", name))
require.NoError(t, err)
return b
}
pemBytes := read(pemFileName)
var b bytes.Buffer
w := multipart.NewWriter(&b)
// add the package field
fw, err := w.CreateFormFile("certificate", pemFileName)
require.NoError(t, err)
_, err = io.Copy(fw, bytes.NewBuffer(pemBytes))
require.NoError(t, err)
w.Close()
headers := map[string]string{
"Content-Type": w.FormDataContentType(),
"Accept": "application/json",
"Authorization": fmt.Sprintf("Bearer %s", s.token),
}
s.DoRawWithHeaders("POST", "/api/latest/fleet/mdm/apple/apns_certificate", b.Bytes(), expectedStatus, headers)
}
func (s *integrationMDMTestSuite) TestMDMAppleUnenroll() {

30
server/service/testdata/apns.pem vendored Normal file
View file

@ -0,0 +1,30 @@
-----BEGIN CERTIFICATE-----
MIIFHDCCAwSgAwIBAgIBATANBgkqhkiG9w0BAQsFADBSMREwDwYDVQQDEwhncm9v
Yi1jYTELMAkGA1UEBhMCVVMxETAPBgNVBAcTCE5ldyBZb3JrMRAwDgYDVQQKEwdF
eGFtcGxlMQswCQYDVQQIEwJOWTAeFw0xNjEwMjQxMzExNDRaFw0xNzEwMjQxMzEx
NDRaMFgxFzAVBgNVBAMTDnNlcnZxLmdyb29iLmlvMQswCQYDVQQGEwJVUzERMA8G
A1UEBxMITmV3IFlvcmsxEDAOBgNVBAoTB0V4YW1wbGUxCzAJBgNVBAgTAk5ZMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3Vdpw+hV4Y/4pLkJMwSUtmFq
g6hntniWfEZOz+uvlnbgNZRFRdD4lgfP8qEjWvcfoDpXpNakel9VkO2asxsJEBQM
ykDp1NLUpPBvPIGTvlwRy028LSqRM8yNPo5dXg9+hhf4W1I8PVnXBJQsuTIg23oa
F6/wXahoAz9zFfBg/v4e+PjdwH1naVJaFRr3FUqFAyoROh2Kr78blk7Vbc6MlBvF
OpV5PbcedSKkCnUHycP2FLCVqU7MHp9s2TCjFsc7dlFKEnq6CUdV4sxccSSjYbgD
4S5/wkjKcEptxsIinY9FMoIt0QV1pBOS+A8EOYk3PcEGILhqzx+hebMBDAxXAQID
AQABo4H2MIHzMHoGA1UdIwRzMHGAFCSIxl7pVfQrIzKc46qvMFXUT8ijoVakVDBS
MQswCQYDVQQGEwJVUzELMAkGA1UECBMCTlkxETAPBgNVBAcTCE5ldyBZb3JrMRAw
DgYDVQQKEwdFeGFtcGxlMREwDwYDVQQDEwhncm9vYi1jYYIBATAMBgNVHRMBAf8E
AjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAOBgNVHQ8BAf8EBAMC
BaAwGQYDVR0RBBIwEIIOc2VydnEuZ3Jvb2IuaW8wHQYDVR0OBBYEFDxic9wp8N4s
6OE2NjWIOyTBSZyBMA0GCSqGSIb3DQEBCwUAA4ICAQCUPTPSPK1/aFPtqD2m3jQD
PFBEVSL4EbIGw1fKWxd3+pbydJFRlJIetwJvZu05JpK0VXy8pzMx3DW4ZKLrK6Jv
zJNB03B2hDLTbhoqyf3uE3gYdXyFA4R/AdfuBv8DfXRcgDmX3VG+ov3JQ3Wx4TNE
QF99nDtL6LfDVteAbxSnSrUneCivgguUQWbaw3dlVjV16JfM1gjjcNrKiOBzc6Gr
vYZrUUj64Ql1P2jOdcYaTPPtaC41zicrhQOqowkoz6V4fCeMvSbgz46Az5wVLPPb
2fhGE4FJDONs1L9sl9i4H0yanYgeEElVs20tI6ncyxJFiZoI+TNDTO4hE6o16H+h
ofs3wL+zGikBWRw3Q/uMTsddnom39kjG4RAXhShQ8IYGjEcHCfolsi7C6cxNAzQH
BHRKoTE+sHaGftaxvkaqOm3NcJMGZxwUiuZxkRz3g2QG5jE4eUZj/dCm10jCSE5m
hUTJyFp+VHL9P033vlLg+nBifbv1+Hv7cR+aM1prOOI+R60edhEZAfct0yXlRmz5
gpolYkraRCxwQMV3AOp7DGbcbqwkH+Mknl7QcvKPZbEdWBcgU1h1Avd1hbm1lOsd
sYT32Bn408ADGdofR8MHseytX8tXNUnN3MotrraiHpsxL2LmELXD6P1pa22s7zXC
RV3Xwd/agUXlC+WVnlXCaQ==
-----END CERTIFICATE-----