Response testing 1 (#42)

* Create skeleton test suite for connect transport

* Remove service test because sqlmock never made it into the master branch.
Add transport test for connect loosely based on groobs management transport tests.

* Added mock command service.
Add single test for InstalledApplicationList
Add some modified real world responses as test data.

* Create fake device fixture for connect tests

* Add some more macOS responses.
Fix nullstring error in transport test.
proper teardown of httptest server.

* Even more responses from live system to use as test fixtures.

* Cleanup commented code.
Simple test for inserted applications with InstalledApplicationList response.

* Cleanup unused imports.

* Add tests for DeviceInformation and CertificateList.
Try to construct the command request in setup(), dirty hack.

* Use rollback instead of inline statements to destroy fixtures.
Fix incorrect plist in deviceinformation test.
Minor cleanups

* Add checkin authenticate test.
Fix some "down" migrations which didnt actually work.

* Basic coverage of checkin tests.
Fix invalid fixture base64 data.

* Tidy up mock management service and imports.

* Revert back to setup()/teardown() style per discussion with groob.

* Clean up imports
This commit is contained in:
mosen
2016-11-06 21:15:46 +11:00
committed by GitHub
parent dfb757db8a
commit 8c42e2d7e1
20 changed files with 958 additions and 178 deletions

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildVersion</key>
<string>13F69</string>
<key>MessageType</key>
<string>Authenticate</string>
<key>OSVersion</key>
<string>9.3.2</string>
<key>ProductName</key>
<string>iPad4,1</string>
<key>SerialNumber</key>
<string>XXXXXXXXXXXX</string>
<key>Topic</key>
<string>io.micromdm.topic.00000000-1111-2222-3333-444455556666</string>
<key>UDID</key>
<string>1111111111111111111111111111111111111111</string>
</dict>
</plist>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CommandUUID</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>SecurityInfo</key>
<dict>
<key>HardwareEncryptionCaps</key>
<integer>3</integer>
<key>PasscodeCompliant</key>
<true/>
<key>PasscodeCompliantWithProfiles</key>
<true/>
<key>PasscodeLockGracePeriod</key>
<integer>0</integer>
<key>PasscodeLockGracePeriodEnforced</key>
<integer>0</integer>
<key>PasscodePresent</key>
<false/>
</dict>
<key>Status</key>
<string>Acknowledged</string>
<key>UDID</key>
<string>1111111111111111111111111111111111111111</string>
</dict>
</plist>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildVersion</key>
<string>15G1004</string>
<key>Challenge</key>
<data>
YXBwbGU=
</data>
<key>DeviceName</key>
<string>micromdm-test</string>
<key>MessageType</key>
<string>Authenticate</string>
<key>Model</key>
<string>iMac15,1</string>
<key>ModelName</key>
<string>iMac</string>
<key>OSVersion</key>
<string>10.11.6</string>
<key>ProductName</key>
<string>iMac15,1</string>
<key>SerialNumber</key>
<string>C00000000004</string>
<key>Topic</key>
<string>com.apple.mgmt.test.00000000-1111-2222-3333-444455556666</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
</dict>
</plist>

View File

@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CertificateList</key>
<array>
<dict>
<key>CommonName</key>
<string>com.apple.systemdefault</string>
<key>Data</key>
<data>
MIICFDCCAX2gAwIBAgIEMshmtjALBgkqhkiG9w0BAQUwPDEgMB4G
A1UEAwwXY29tLmFwcGxlLnN5c3RlbWRlZmF1bHQxGDAWBgNVBAoM
D1N5c3RlbSBJZGVudGl0eTAeFw0xNTAzMDgyMjM4NDBaFw0zNTAz
MDMyMjM4NDBaMDwxIDAeBgNVBAMMF2NvbS5hcHBsZS5zeXN0ZW1k
ZWZhdWx0MRgwFgYDVQQKDA9TeXN0ZW0gSWRlbnRpdHkwgZ8wDQYJ
KoZIhvcNAQEBBQADgY0AMIGJAoGBALWpKmld573u/zaPBwCuAMSy
SxwUqQsTCi8TxPIbDLSssMkDJMlcukB9zpDkVZnP49uZow7TGE6t
VuXKDmcx6gfskwkdyra05X2xNZACopdbV2OSjv87hh2yMRcmq+tt
ao/3L3Ynp2ZWTVFIfgcJTHzkIKFLRwWfmEV0DE1WYNMpAgMBAAGj
JTAjMAsGA1UdDwQEAwIEsDAUBgNVHSUEDTALBgkqhkiG92NkBAQw
DQYJKoZIhvcNAQEFBQADgYEAjN23bV17Xk9+om0NVMhcb1dou3E0
bVfMuvpYx6xcClP8Im9gGaIt8sHQPx2sRfZ0EHIPAWIDdtg8Qun3
cIOLal4LigmgZEgU2V+JLyFRI7ps9QVDfbM0/So0j/B5VvUH+K8h
ZTM0Y7Dg0GVwQg2tP2Fg7xFjnKz/6AO0n03Im44=
</data>
<key>IsIdentity</key>
<true/>
</dict>
<dict>
<key>CommonName</key>
<string>Apple Worldwide Developer Relations Certification Authority</string>
<key>Data</key>
<data>
MIIEIjCCAwqgAwIBAgIIAd68xDltoBAwDQYJKoZIhvcNAQEFBQAw
YjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAk
BgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYw
FAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTEzMDIwNzIxNDg0N1oX
DTIzMDIwNzIxNDg0N1owgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQK
DApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUg
RGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29y
bGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQDKOFSmy1aqyCQ5SOmM7uxfuH8mkbw0U3rOfGOAYXdkXqUH
I7Y5/lAtFVZYcC1+xG7BSoU+L/DehBqhV8mvexj/avoVEkkVCBms
qtsqMu2WY2hSFT2Miuy/axiV4AOsAX2XBWfODoWVN2rtCbauZ81R
ZJ/GXNG8V25nNYB2NqSHgW44j9grFU57Jdhav06DwY3Sk9UacbVg
nJ0zTlX5ElgMhrgWDcHld0WNUEi6Ky3klIXh6MSdxmilsKP8Z35w
ugJZS3dCkTm59c3hTO/AO0iMpuUhXf1qarunFjVg0uat80YpyejD
i+l5wGphZxWy8P3laLxiX27Pmd3vG2P+kmWrAgMBAAGjgaYwgaMw
HQYDVR0OBBYEFIgnFwmpthhgi+zruvZHWcVSVKO3MA8GA1UdEwEB
/wQFMAMBAf8wHwYDVR0jBBgwFoAUK9BpR5R2Cf70a40uQKb3R01/
CF4wLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2NybC5hcHBsZS5j
b20vcm9vdC5jcmwwDgYDVR0PAQH/BAQDAgGGMBAGCiqGSIb3Y2QG
AgEEAgUAMA0GCSqGSIb3DQEBBQUAA4IBAQBPz+9Zviz1smwvj+4T
hzLoBTWobot9yWkMudkXvHcs1Gfi/ZptOllc34MBvbKuKmFysa/N
w0Uwj6ODDc4dR7Txk4qjdJukw5hyhzs+r0ULklS5MruQGFNrCk4Q
ttkdUGwhgAqJTleMa1s8Pab93vcNIx0LSiaHP7qRkkykGRIZbVf1
eliHe2iK5IaMSuviSRSqpd1VAKmuu0swruGgsbwpgOYJd+W+NKIB
yn/c4grmO7i77LpilfMFY0GCzQ87HUyVpNur+cmV6U/kTecmmYHp
vPm0KdIBembhLoz2IYrF+Hjhga6/05Cdqa3zr/04GpZnMBxRpVzs
cYqCtGwPDBUf
</data>
<key>IsIdentity</key>
<false/>
</dict>
</array>
<key>CommandUUID</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>RequestType</key>
<string>CertificateList</string>
<key>Status</key>
<string>Acknowledged</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
</dict>
</plist>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>MessageType</key>
<string>CheckOut</string>
<key>Topic</key>
<string>com.apple.mgmt.test.00000000-1111-2222-3333-444455556666</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
</dict>
</plist>

View File

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CommandUUID</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>QueryResponses</key>
<dict>
<key>ActiveManagedUsers</key>
<array>
<string>00000000-1111-2222-3333-444455556666</string>
</array>
<key>AvailableDeviceCapacity</key>
<real>60.977592468261719</real>
<key>AwaitingConfiguration</key>
<false/>
<key>BluetoothMAC</key>
<string>00-00-00-00-00-00</string>
<key>BuildVersion</key>
<string>15G1004</string>
<key>CurrentConsoleManagedUser</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>DeviceCapacity</key>
<real>464.82241058349609</real>
<key>DeviceName</key>
<string>micromdm-testing</string>
<key>HostName</key>
<string>micromdm-testing.dev</string>
<key>Languages</key>
<array>
<string>en</string>
</array>
<key>LocalHostName</key>
<string>micromdm-testing</string>
<key>Model</key>
<string>iMac15,1</string>
<key>ModelName</key>
<string>iMac</string>
<key>OSUpdateSettings</key>
<dict>
<key>AutoCheckEnabled</key>
<false/>
<key>AutomaticAppInstallationEnabled</key>
<false/>
<key>AutomaticOSInstallationEnabled</key>
<false/>
<key>AutomaticSecurityUpdatesEnabled</key>
<true/>
<key>BackgroundDownloadEnabled</key>
<true/>
<key>CatalogURL</key>
<string>https://swscan.apple.com/content/catalogs/others/index-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz</string>
<key>IsDefaultCatalog</key>
<true/>
<key>PerformPeriodicCheck</key>
<true/>
<key>PreviousScanDate</key>
<date>2016-11-03T03:12:26Z</date>
<key>PreviousScanResult</key>
<integer>0</integer>
</dict>
<key>OSVersion</key>
<string>10.11.6</string>
<key>ProductName</key>
<string>iMac15,1</string>
<key>SerialNumber</key>
<string>C00000000004</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>WiFiMAC</key>
<string>00:00:00:00:00:00</string>
<key>iTunesStoreAccountHash</key>
<string>aAaAaAaAaAaAaAaAaAaAaAaAaAa=</string>
<key>iTunesStoreAccountIsActive</key>
<true/>
</dict>
<key>RequestType</key>
<string>DeviceInformation</string>
<key>Status</key>
<string>Acknowledged</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
</dict>
</plist>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CommandUUID</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>ErrorChain</key>
<array>
<dict>
<key>ErrorCode</key>
<integer>12021</integer>
<key>ErrorDomain</key>
<string>MCMDMErrorDomain</string>
<key>LocalizedDescription</key>
<string>“OSUpdateStatus” is not a valid request type.</string>
<key>USEnglishDescription</key>
<string>“OSUpdateStatus” is not a valid request type.</string>
</dict>
</array>
<key>Status</key>
<string>Error</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
</dict>
</plist>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CommandUUID</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>InstalledApplicationList</key>
<array>
<dict>
<key>BundleSize</key>
<integer>5855484</integer>
<key>Identifier</key>
<string>com.apple.systempreferences</string>
<key>Name</key>
<string>System Preferences</string>
<key>ShortVersion</key>
<string>14.0</string>
<key>Version</key>
<string>14.0</string>
</dict>
<dict>
<key>BundleSize</key>
<integer>65092</integer>
<key>Name</key>
<string>Set Info</string>
</dict>
<dict>
<key>BundleSize</key>
<integer>0</integer>
<key>Name</key>
<string>Install OS X Yosemite</string>
</dict>
</array>
<key>RequestType</key>
<string>InstalledApplicationList</string>
<key>Status</key>
<string>Acknowledged</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
</dict>
</plist>

View File

@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CommandUUID</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>ProfileList</key>
<array>
<dict>
<key>HasRemovalPasscode</key>
<false/>
<key>IsEncrypted</key>
<false/>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadDescription</key>
<string>Installs the TLS certificate for MicroMDM</string>
<key>PayloadDisplayName</key>
<string>Self-signed TLS certificate for MicroMDM</string>
<key>PayloadIdentifier</key>
<string>com.github.micromdm.tls</string>
<key>PayloadOrganization</key>
<string></string>
<key>PayloadType</key>
<string>com.apple.security.pkcs1</string>
<key>PayloadUUID</key>
<string>4b12d46f-0cfb-4d58-ab5c-74873235b60b</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
<dict>
<key>PayloadDescription</key>
<string>Installs the root CA certificate for MicroMDM</string>
<key>PayloadDisplayName</key>
<string>Root certificate for MicroMDM</string>
<key>PayloadIdentifier</key>
<string>com.github.micromdm.ssl.ca</string>
<key>PayloadOrganization</key>
<string></string>
<key>PayloadType</key>
<string>com.apple.security.root</string>
<key>PayloadUUID</key>
<string>de6a8869-e0c3-4fa3-ba3e-f89001f8ee71</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
<dict>
<key>PayloadDescription</key>
<string>Enrolls with the MDM server</string>
<key>PayloadDisplayName</key>
<string></string>
<key>PayloadIdentifier</key>
<string>com.github.micromdm.mdm</string>
<key>PayloadOrganization</key>
<string>MicroMDM</string>
<key>PayloadType</key>
<string>com.apple.mdm</string>
<key>PayloadUUID</key>
<string>e021da61-092a-4b73-8c26-00f5fdcf7e4e</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
<dict>
<key>PayloadDescription</key>
<string>Configures SCEP</string>
<key>PayloadDisplayName</key>
<string>SCEP</string>
<key>PayloadIdentifier</key>
<string>com.github.micromdm.scep</string>
<key>PayloadOrganization</key>
<string>MicroMDM</string>
<key>PayloadType</key>
<string>com.apple.security.scep</string>
<key>PayloadUUID</key>
<string>519e158c-c699-42fd-8cdf-1cd5612088df</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDescription</key>
<string>The server may alter your settings</string>
<key>PayloadDisplayName</key>
<string>Enrollment Profile</string>
<key>PayloadIdentifier</key>
<string>com.github.micromdm.micromdm.mdm</string>
<key>PayloadOrganization</key>
<string>MicroMDM</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadUUID</key>
<string>dd3c707b-b18c-4979-bd94-2fe5cd804a47</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>SignerCertificates</key>
<array/>
</dict>
</array>
<key>RequestType</key>
<string>ProfileList</string>
<key>Status</key>
<string>Acknowledged</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
</dict>
</plist>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CommandUUID</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>RequestType</key>
<string>SecurityInfo</string>
<key>SecurityInfo</key>
<dict>
<key>FDE_Enabled</key>
<false/>
</dict>
<key>Status</key>
<string>Acknowledged</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
</dict>
</plist>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AwaitingConfiguration</key>
<false/>
<key>MessageType</key>
<string>TokenUpdate</string>
<key>PushMagic</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>Token</key>
<data>
YXBwbGU=
</data>
<key>Topic</key>
<string>com.apple.mgmt.test.00000000-1111-2222-3333-444455556666</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
</dict>
</plist>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>MessageType</key>
<string>TokenUpdate</string>
<key>NotOnConsole</key>
<false/>
<key>PushMagic</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>Token</key>
<data>
AAAA=
</data>
<key>Topic</key>
<string>com.apple.mgmt.test.00000000-1111-2222-3333-444455556666</string>
<key>UDID</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>UserID</key>
<string>00000000-1111-2222-3333-444455556666</string>
<key>UserLongName</key>
<string>Administrator</string>
<key>UserShortName</key>
<string>admin</string>
</dict>
</plist>