2 * Copyright (c) 2014 Apple Inc. All Rights Reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
21 * @APPLE_LICENSE_HEADER_END@
24 #include <Security/SecureObjectSync/SOSMessage.h>
25 #include <utilities/SecDb.h>
26 #include <CoreFoundation/CFRuntime.h>
28 typedef struct __OpaqueSOSTestDevice
*SOSTestDeviceRef
;
30 struct __OpaqueSOSTestDevice
{
33 SOSDataSourceFactoryRef dsf
;
35 CFMutableArrayRef peers
;
39 CFStringRef
SOSMessageCopyDigestHex(SOSMessageRef message
);
41 CFStringRef
SOSTestDeviceGetID(SOSTestDeviceRef td
);
42 void SOSTestDeviceForEachPeerID(SOSTestDeviceRef td
, void(^peerBlock
)(CFStringRef peerID
, bool *stop
));
43 SOSTestDeviceRef
SOSTestDeviceCreateWithDb(CFAllocatorRef allocator
, CFStringRef engineID
, SecDbRef db
);
44 SOSTestDeviceRef
SOSTestDeviceCreateWithDbNamed(CFAllocatorRef allocator
, CFStringRef engineID
, CFStringRef dbName
);
45 SOSTestDeviceRef
SOSTestDeviceCreateWithTestDataSource(CFAllocatorRef allocator
, CFStringRef engineID
,
46 void(^prepop
)(SOSDataSourceRef ds
));
47 CFSetRef
SOSViewsCopyTestV0Default(void);
48 CFSetRef
SOSViewsCopyTestV2Default(void);
49 SOSTestDeviceRef
SOSTestDeviceSetPeerIDs(SOSTestDeviceRef td
, CFArrayRef peerIDs
, CFIndex version
, CFSetRef defaultViews
);
50 void SOSTestDeviceDestroyEngine(CFMutableDictionaryRef testDevices
);
52 SOSTestDeviceRef
SOSTestDeviceSetMute(SOSTestDeviceRef td
, bool mute
);
53 bool SOSTestDeviceIsMute(SOSTestDeviceRef td
);
55 bool SOSTestDeviceSetEngineState(SOSTestDeviceRef td
, CFDataRef derEngineState
);
56 bool SOSTestDeviceEngineSave(SOSTestDeviceRef td
, CFErrorRef
*error
);
57 bool SOSTestDeviceEngineLoad(SOSTestDeviceRef td
, CFErrorRef
*error
);
59 CFDataRef
SOSTestDeviceCreateMessage(SOSTestDeviceRef td
, CFStringRef peerID
);
61 bool SOSTestDeviceHandleMessage(SOSTestDeviceRef td
, CFStringRef peerID
, CFDataRef msgData
);
63 void SOSTestDeviceAddGenericItem(SOSTestDeviceRef td
, CFStringRef account
, CFStringRef server
);
64 void SOSTestDeviceAddGenericItemTombstone(SOSTestDeviceRef td
, CFStringRef account
, CFStringRef server
);
65 void SOSTestDeviceAddGenericItemWithData(SOSTestDeviceRef td
, CFStringRef account
, CFStringRef server
, CFDataRef data
);
66 void SOSTestDeviceAddRemoteGenericItem(SOSTestDeviceRef td
, CFStringRef account
, CFStringRef server
);
67 bool SOSTestDeviceAddGenericItems(SOSTestDeviceRef td
, CFIndex count
, CFStringRef account
, CFStringRef server
);
68 void SOSTestDeviceAddV0EngineStateWithData(SOSDataSourceRef ds
, CFDataRef engineStateData
);
70 CFMutableDictionaryRef
SOSTestDeviceListCreate(bool realDb
, CFIndex version
, CFArrayRef deviceIDs
,
71 void(^prepop
)(SOSDataSourceRef ds
));
73 void SOSTestDeviceListSync(const char *name
, const char *test_directive
, const char *test_reason
, CFMutableDictionaryRef testDevices
, bool(^pre
)(SOSTestDeviceRef source
, SOSTestDeviceRef dest
), bool(^post
)(SOSTestDeviceRef source
, SOSTestDeviceRef dest
, SOSMessageRef message
));
75 bool SOSTestDeviceListInSync(const char *name
, const char *test_directive
, const char *test_reason
, CFMutableDictionaryRef testDevices
);
77 void SOSTestDeviceListTestSync(const char *name
, const char *test_directive
, const char *test_reason
, CFIndex version
, bool use_db
,
78 bool(^pre
)(SOSTestDeviceRef source
, SOSTestDeviceRef dest
),
79 bool(^post
)(SOSTestDeviceRef source
, SOSTestDeviceRef dest
, SOSMessageRef message
), ...);