fix fleetctl generate mdm-apple-bm (#19507)

for #19506

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
This commit is contained in:
Roberto Dip
2024-06-04 18:19:09 -03:00
committed by GitHub
parent 021b56a070
commit f7665297fc
2 changed files with 20 additions and 28 deletions
+12 -18
View File
@@ -14,12 +14,11 @@ import (
)
func TestGenerateMDMAppleBM(t *testing.T) {
// TODO(roberto): update when the new endpoint to get a CSR is ready
t.Skip()
outdir, err := os.MkdirTemp("", t.Name())
require.NoError(t, err)
defer os.Remove(outdir)
publicKeyPath := filepath.Join(outdir, "public-key.crt")
_, _ = runServerWithMockedDS(t)
out := runAppForTest(t, []string{
"generate", "mdm-apple-bm",
@@ -29,18 +28,20 @@ func TestGenerateMDMAppleBM(t *testing.T) {
require.Contains(t, out, fmt.Sprintf("Generated your public key at %s", outdir))
// validate that the certificate is valid
certPEMBlock, err := os.ReadFile(publicKeyPath)
certPEM, err := os.ReadFile(publicKeyPath)
require.NoError(t, err)
parsed, err := x509.ParseCertificate(certPEMBlock)
block, _ := pem.Decode(certPEM)
require.NotNil(t, block)
require.Equal(t, "CERTIFICATE", block.Type)
parsed, err := x509.ParseCertificate(block.Bytes)
require.NoError(t, err)
require.Equal(t, "FleetDM", parsed.Issuer.CommonName)
require.NotNil(t, parsed)
}
func TestGenerateMDMApple(t *testing.T) {
t.Run("CSR API call fails", func(t *testing.T) {
// TODO(roberto): update when the new endpoint to get a CSR is ready
t.Skip()
_, _ = runServerWithMockedDS(t)
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// fail this call
@@ -54,17 +55,15 @@ func TestGenerateMDMApple(t *testing.T) {
[]string{
"generate", "mdm-apple",
},
`POST /api/latest/fleet/mdm/apple/request_csr received status 422 Validation Failed: this email address is not valid: bad request`,
ErrGeneric.Error(),
)
})
t.Run("successful run", func(t *testing.T) {
// TODO(roberto): update when the new endpoint to get a CSR is ready
t.Skip()
_, _ = runServerWithMockedDS(t)
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
_, _ = w.Write([]byte("ok"))
_, _ = w.Write([]byte(`{"csr": "dGVzdAo="}`))
}))
t.Setenv("TEST_FLEETDM_API_URL", srv.URL)
t.Cleanup(srv.Close)
@@ -80,16 +79,11 @@ func TestGenerateMDMApple(t *testing.T) {
"--context", "default",
})
require.Contains(t, out, fmt.Sprintf("Generated your SCEP key at %s", csrPath))
require.Contains(t, out, fmt.Sprintf("Generated your certificate signing request (CSR) at %s", csrPath))
// validate that the CSR is valid
csrPEM, err := os.ReadFile(csrPath)
require.NoError(t, err)
block, _ := pem.Decode(csrPEM)
require.NotNil(t, block)
require.Equal(t, "CERTIFICATE REQUEST", block.Type)
_, err = x509.ParseCertificateRequest(block.Bytes)
require.NoError(t, err)
require.Equal(t, "test\n", string(csrPEM))
})
}