Merge branch 'IOSAD-191' into 1.1.250

* IOSAD-191: (63 commits)
  IOSAD-191 Delete PEPObjCAdapterTypesTests_macOS target.
  IOSAD-191 Move pEpMessageWithAllFieldsFilled to PEPTypesTestUtil.
  IOSAD-191 Move pEpLanguageWithAllFieldsFilled to PEPTypesTestUtil.
  IOSAD-191 Small refactor for code review.
  IOSAD-191 Delete PEPMessageTest and PEPAttachmentTests. Add PEPMessage+SecureCodingTest tests. Delete some unused code. some refactor.
  IOSAD-191 Delete PEPAttachmentTest.
  IOSAD-191 Add PEPAttachment_SecureCodingTest tests.
  IOSAD-191 Delete PEPLanguageTest and PEPLanguageTests. Add PEPLanguage+SecureCodingTest tests.
  IOSAD-191 Delete PEPIdentityTest.
  IOSAD-191 Create PEPTypesTestUtil. Add PEPIdentity+SecureCodingTest tests.
  IOSAD-191 Refactor some code.
  IOSAD-191 Delete some unnecessary code. Refactor.
  IOSAD-191 Reorganize PEPObjCAdapterTypesTests test files.
  IOSAD-191 Add PEPMessage iOS tests.
  IOSAD-191 Add PEPAttachment iOS tests.
  IOSAD-191 Add PEPLanguage iOS tests. Delete PEPObjCAdapterTypesTests_iOS file.
  IOSAD-191 Add PEPIdentity iOS tests.
  IOSAD-191 Add PEPObjCAdapterTypesTests_iOS target.
  IOSAD-191 Add isEqual to PEPAttachmentTest. Add PEPMessage tests.
  IOSAD-191 Create PEPMessageTest.
  ...
IOS-2651
David Alarcon 2 years ago
commit 25b3211fee

@ -0,0 +1,17 @@
//
// PEPAttachment+SecureCoding.h
// PEPObjCAdapterTypes_macOS
//
// Created by David Alarcon on 25/1/21.
// Copyright © 2021 p≡p. All rights reserved.
//
#import "PEPAttachment.h"
NS_ASSUME_NONNULL_BEGIN
@interface PEPAttachment (SecureCoding) <NSSecureCoding>
@end
NS_ASSUME_NONNULL_END

@ -0,0 +1,17 @@
//
// PEPIdentity+SecureCoding.h
// pEpObjCAdapter
//
// Created by David Alarcon on 25/1/21.
// Copyright © 2021 p≡p. All rights reserved.
//
#import "PEPIdentity.h"
NS_ASSUME_NONNULL_BEGIN
@interface PEPIdentity (SecureCoding) <NSSecureCoding>
@end
NS_ASSUME_NONNULL_END

@ -53,11 +53,6 @@
/// ORed together.
@property int flags;
/**
Comm type contains the PEP_ct_confirmed flag?
*/
@property (readonly) BOOL isConfirmed;
- (nonnull instancetype)initWithAddress:(NSString * _Nonnull)address
userID:(NSString * _Nullable)userID
userName:(NSString * _Nullable)userName

@ -0,0 +1,17 @@
//
// PEPLanguage+SecureCoding.h
// PEPObjCAdapter_iOS
//
// Created by David Alarcon on 25/1/21.
// Copyright © 2021 p≡p. All rights reserved.
//
#import "PEPLanguage.h"
NS_ASSUME_NONNULL_BEGIN
@interface PEPLanguage (SecureCoding) <NSSecureCoding>
@end
NS_ASSUME_NONNULL_END

@ -0,0 +1,17 @@
//
// PEPMessage+SecureCoding.h
// PEPObjCAdapterTypes_macOS
//
// Created by David Alarcon on 25/1/21.
// Copyright © 2021 p≡p. All rights reserved.
//
#import "PEPMessage.h"
NS_ASSUME_NONNULL_BEGIN
@interface PEPMessage (SecureCoding) <NSSecureCoding>
@end
NS_ASSUME_NONNULL_END

@ -0,0 +1,37 @@
//
// PEPAttachment+SecureCoding.m
// PEPObjCAdapterTypes_macOS
//
// Created by David Alarcon on 25/1/21.
// Copyright © 2021 pp. All rights reserved.
//
#import "PEPAttachment+SecureCoding.h"
@implementation PEPAttachment (SecureCoding)
- (nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder {
if (self = [self init]) {
self.data = [decoder decodeObjectOfClass:[NSData class] forKey:@"data"];
self.size = [decoder decodeIntegerForKey:@"size"];
self.mimeType = [decoder decodeObjectOfClass:[NSString class] forKey:@"mimeType"];
self.filename = [decoder decodeObjectOfClass:[NSString class] forKey:@"filename"];
self.contentDisposition = [decoder decodeIntForKey:@"contentDisposition"];
}
return self;
}
- (void)encodeWithCoder:(nonnull NSCoder *)coder {
[coder encodeObject:self.data forKey:@"data"];
[coder encodeInteger:self.size forKey:@"size"];
[coder encodeObject:self.mimeType forKey:@"mimeType"];
[coder encodeObject:self.filename forKey:@"filename"];
[coder encodeInt:self.contentDisposition forKey:@"contentDisposition"];
}
+ (BOOL)supportsSecureCoding {
return YES;
}
@end

@ -0,0 +1,43 @@
//
// PEPIdentity+SecureCoding.m
// pEpObjCAdapter
//
// Created by David Alarcon on 25/1/21.
// Copyright © 2021 pp. All rights reserved.
//
#import "PEPIdentity+SecureCoding.h"
@implementation PEPIdentity (SecureCoding)
- (nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder {
if (self = [self init]) {
self.address = [decoder decodeObjectOfClass:[NSString class] forKey:@"address"];
self.userID = [decoder decodeObjectOfClass:[NSString class] forKey:@"userID"];
self.userName = [decoder decodeObjectOfClass:[NSString class] forKey:@"userName"];
self.fingerPrint = [decoder decodeObjectOfClass:[NSString class] forKey:@"fingerPrint"];
self.language = [decoder decodeObjectOfClass:[NSString class] forKey:@"language"];
self.commType = [decoder decodeIntForKey:@"commType"];
self.isOwn = [decoder decodeBoolForKey:@"isOwn"];
self.flags = [decoder decodeIntForKey:@"flags"];
}
return self;
}
- (void)encodeWithCoder:(nonnull NSCoder *)coder {
[coder encodeObject:self.address forKey:@"address"];
[coder encodeObject:self.userID forKey:@"userID"];
[coder encodeObject:self.userName forKey:@"userName"];
[coder encodeObject:self.fingerPrint forKey:@"fingerPrint"];
[coder encodeObject:self.language forKey:@"language"];
[coder encodeInt:self.commType forKey:@"commType"];
[coder encodeBool:self.isOwn forKey:@"isOwn"];
[coder encodeInt:self.flags forKey:@"flags"];
}
+ (BOOL)supportsSecureCoding {
return YES;
}
@end

@ -68,11 +68,6 @@
language:identity.language];
}
- (BOOL)isConfirmed
{
return self.commType & PEP_ct_confirmed;
}
// MARK: - Equality
/**

@ -0,0 +1,33 @@
//
// PEPLanguage+SecureCoding.m
// PEPObjCAdapter_iOS
//
// Created by David Alarcon on 25/1/21.
// Copyright © 2021 pp. All rights reserved.
//
#import "PEPLanguage+SecureCoding.h"
@implementation PEPLanguage (SecureCoding)
- (nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder {
if (self = [self init]) {
self.code = [decoder decodeObjectOfClass:[NSString class] forKey:@"code"];
self.name = [decoder decodeObjectOfClass:[NSString class] forKey:@"name"];
self.sentence = [decoder decodeObjectOfClass:[NSString class] forKey:@"sentence"];
}
return self;
}
- (void)encodeWithCoder:(nonnull NSCoder *)coder {
[coder encodeObject:self.code forKey:@"code"];
[coder encodeObject:self.name forKey:@"name"];
[coder encodeObject:self.sentence forKey:@"sentence"];
}
+ (BOOL)supportsSecureCoding {
return YES;
}
@end

@ -0,0 +1,84 @@
//
// PEPMessage+SecureCoding.m
// PEPObjCAdapterTypes_macOS
//
// Created by David Alarcon on 25/1/21.
// Copyright © 2021 pp. All rights reserved.
//
#import "PEPMessage+SecureCoding.h"
#import "PEPIdentity.h"
#import "PEPAttachment.h"
@implementation PEPMessage (SecureCoding)
- (nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder {
if (self = [self init]) {
NSSet *identityArraySet = [NSSet setWithArray:@[[NSArray class], [PEPIdentity class]]];
NSSet *stringArraySet = [NSSet setWithArray:@[[NSArray class], [NSString class]]];
NSSet *attachmentArraySet = [NSSet setWithArray:@[[NSArray class], [PEPAttachment class]]];
self.messageID = [decoder decodeObjectOfClass:[NSString class] forKey:@"messageID"];
self.from = [decoder decodeObjectOfClass:[PEPIdentity class] forKey:@"from"];
self.to = [decoder decodeObjectOfClasses:identityArraySet forKey:@"to"];
self.cc = [decoder decodeObjectOfClasses:identityArraySet forKey:@"cc"];
self.bcc = [decoder decodeObjectOfClasses:identityArraySet forKey:@"bcc"];
self.shortMessage = [decoder decodeObjectOfClass:[NSString class] forKey:@"shortMessage"];
self.longMessage = [decoder decodeObjectOfClass:[NSString class] forKey:@"longMessage"];
self.longMessageFormatted = [decoder decodeObjectOfClass:[NSString class]
forKey:@"longMessageFormatted"];
self.replyTo = [decoder decodeObjectOfClasses:identityArraySet forKey:@"replyTo"];
self.inReplyTo = [decoder decodeObjectOfClasses:stringArraySet forKey:@"inReplyTo"];
self.references = [decoder decodeObjectOfClasses:stringArraySet forKey:@"references"];
self.sentDate = [decoder decodeObjectOfClass:[NSDate class] forKey:@"sentDate"];
self.receivedDate = [decoder decodeObjectOfClass:[NSDate class] forKey:@"receivedDate"];
self.attachments = [decoder decodeObjectOfClasses:attachmentArraySet forKey:@"attachments"];
self.optionalFields = [decoder decodeObjectOfClasses:stringArraySet
forKey:@"optionalFields"];
self.keywords = [decoder decodeObjectOfClasses:stringArraySet forKey:@"keywords"];
self.receivedBy = [decoder decodeObjectOfClass:[PEPIdentity class] forKey:@"receivedBy"];
self.direction = [decoder decodeIntForKey:@"direction"];;
}
return self;
}
- (void)encodeWithCoder:(nonnull NSCoder *)coder {
[coder encodeObject:self.messageID forKey:@"messageID"];
[coder encodeObject:self.from forKey:@"from"];
[coder encodeObject:self.to forKey:@"to"];
[coder encodeObject:self.cc forKey:@"cc"];
[coder encodeObject:self.bcc forKey:@"bcc"];
[coder encodeObject:self.shortMessage forKey:@"shortMessage"];
[coder encodeObject:self.longMessage forKey:@"longMessage"];
[coder encodeObject:self.longMessageFormatted forKey:@"longMessageFormatted"];
[coder encodeObject:self.replyTo forKey:@"replyTo"];
[coder encodeObject:self.inReplyTo forKey:@"inReplyTo"];
[coder encodeObject:self.references forKey:@"references"];
[coder encodeObject:self.sentDate forKey:@"sentDate"];
[coder encodeObject:self.receivedDate forKey:@"receivedDate"];
[coder encodeObject:self.attachments forKey:@"attachments"];
[coder encodeObject:self.optionalFields forKey:@"optionalFields"];
[coder encodeObject:self.keywords forKey:@"keywords"];
[coder encodeObject:self.receivedBy forKey:@"receivedBy"];
[coder encodeInt:self.direction forKey:@"direction"];
}
+ (BOOL)supportsSecureCoding {
return YES;
}
@end

@ -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>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSMainStoryboardFile</key>
<string>Main</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>

@ -0,0 +1,81 @@
//
// PEPAttachment_SecureCodingTest.m
// PEPObjCAdapterTypesTests_iOS
//
// Created by David Alarcon on 27/1/21.
// Copyright © 2021 pp. All rights reserved.
//
#import <XCTest/XCTest.h>
#import "PEPTypesTestUtil.h"
#import "PEPAttachment+SecureCoding.h"
@interface PEPAttachment_SecureCodingTest : XCTestCase
@end
@implementation PEPAttachment_SecureCodingTest
- (void)testConformsSecureCodingProtocol {
PEPAttachment *testee = [PEPAttachment new];
XCTAssertTrue([testee conformsToProtocol:@protocol(NSSecureCoding)]);
}
- (void)testSupportsSecureCodingProtocol {
XCTAssertTrue([PEPAttachment supportsSecureCoding]);
}
- (void)testAttachmentData {
PEPAttachment *testee = [PEPTypesTestUtil pEpAttachmentWithAllFieldsFilled];
PEPAttachment *unarchivedTestee = [self archiveAndUnarchiveAttachment:testee];
XCTAssertEqualObjects(testee.data, unarchivedTestee.data);
}
- (void)testAttachmentSize {
PEPAttachment *testee = [PEPTypesTestUtil pEpAttachmentWithAllFieldsFilled];
PEPAttachment *unarchivedTestee = [self archiveAndUnarchiveAttachment:testee];
XCTAssertEqual(testee.size, unarchivedTestee.size);
}
- (void)testAttachmentMimeType {
PEPAttachment *testee = [PEPTypesTestUtil pEpAttachmentWithAllFieldsFilled];
PEPAttachment *unarchivedTestee = [self archiveAndUnarchiveAttachment:testee];
XCTAssertEqualObjects(testee.mimeType, unarchivedTestee.mimeType);
}
- (void)testAttachmentFilename {
PEPAttachment *testee = [PEPTypesTestUtil pEpAttachmentWithAllFieldsFilled];
PEPAttachment *unarchivedTestee = [self archiveAndUnarchiveAttachment:testee];
XCTAssertEqualObjects(testee.filename, unarchivedTestee.filename);
}
- (void)testAttachmentContentDisposition {
PEPAttachment *testee = [PEPTypesTestUtil pEpAttachmentWithAllFieldsFilled];
PEPAttachment *unarchivedTestee = [self archiveAndUnarchiveAttachment:testee];
XCTAssertEqual(testee.contentDisposition, unarchivedTestee.contentDisposition);
}
// MARK: - Helper
- (PEPAttachment *)archiveAndUnarchiveAttachment:(PEPAttachment *)attachment {
NSError *error;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:attachment
requiringSecureCoding:YES
error:&error];
XCTAssertNotNil(data, "Error archiving pEp attachment.");
PEPAttachment *unarchivedAttachment = [NSKeyedUnarchiver unarchivedObjectOfClass:[PEPAttachment class]
fromData:data
error:&error];
XCTAssertNotNil(unarchivedAttachment, "Error unarchiving pEp attachment.");
return unarchivedAttachment;
}
@end

@ -0,0 +1,95 @@
//
// PEPIdentity+SecureCodingTest.m
// pEpObjCAdapter
//
// Created by David Alarcon on 27/1/21.
// Copyright © 2021 pp. All rights reserved.
//
#import <XCTest/XCTest.h>
#import "PEPTypesTestUtil.h"
#import "PEPIdentity+SecureCoding.h"
@interface PEPIdentity_SecureCodingTest : XCTestCase
@end
@implementation PEPIdentity_SecureCodingTest
- (void)testConformsSecureCodingProtocol {
PEPIdentity *testee = [PEPIdentity new];
XCTAssertTrue([testee conformsToProtocol:@protocol(NSSecureCoding)]);
}
- (void)testSupportsSecureCodingProtocol {
XCTAssertTrue([PEPIdentity supportsSecureCoding]);
}
- (void)testIdentityAddress {
PEPIdentity *testee = [PEPTypesTestUtil pEpIdentityWithAllFieldsFilled];
PEPIdentity *unarchivedTestee = [self archiveAndUnarchiveIdentity:testee];
XCTAssertEqualObjects(testee.address, unarchivedTestee.address);
}
- (void)testIdentityUserID {
PEPIdentity *testee = [PEPTypesTestUtil pEpIdentityWithAllFieldsFilled];
PEPIdentity *unarchivedTestee = [self archiveAndUnarchiveIdentity:testee];
XCTAssertEqualObjects(testee.userID, unarchivedTestee.userID);
}
- (void)testIdentityFingerprint {
PEPIdentity *testee = [PEPTypesTestUtil pEpIdentityWithAllFieldsFilled];
PEPIdentity *unarchivedTestee = [self archiveAndUnarchiveIdentity:testee];
XCTAssertEqualObjects(testee.fingerPrint, unarchivedTestee.fingerPrint);
}
- (void)testIdentityLanguage {
PEPIdentity *testee = [PEPTypesTestUtil pEpIdentityWithAllFieldsFilled];
PEPIdentity *unarchivedTestee = [self archiveAndUnarchiveIdentity:testee];
XCTAssertEqualObjects(testee.language, unarchivedTestee.language);
}
- (void)testIdentityCommType {
PEPIdentity *testee = [PEPTypesTestUtil pEpIdentityWithAllFieldsFilled];
PEPIdentity *unarchivedTestee = [self archiveAndUnarchiveIdentity:testee];
XCTAssertEqual(testee.commType, unarchivedTestee.commType);
}
- (void)testIdentityIsOwn {
PEPIdentity *testee = [PEPTypesTestUtil pEpIdentityWithAllFieldsFilled];
PEPIdentity *unarchivedTestee = [self archiveAndUnarchiveIdentity:testee];
XCTAssertEqual(testee.isOwn, unarchivedTestee.isOwn);
}
- (void)testIdentityFlags {
PEPIdentity *testee = [PEPTypesTestUtil pEpIdentityWithAllFieldsFilled];
PEPIdentity *unarchivedTestee = [self archiveAndUnarchiveIdentity:testee];
XCTAssertEqual(testee.flags, unarchivedTestee.flags);
}
// MARK: - Helper
- (PEPIdentity *)archiveAndUnarchiveIdentity:(PEPIdentity *)identity {
NSError *error;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:identity
requiringSecureCoding:YES
error:&error];
XCTAssertNotNil(data, "Error archiving pEp identity.");
PEPIdentity *unarchivedIdentity = [NSKeyedUnarchiver unarchivedObjectOfClass:[PEPIdentity class]
fromData:data
error:&error];
XCTAssertNotNil(unarchivedIdentity, "Error unarchiving pEp identity.");
return unarchivedIdentity;
}
@end

@ -0,0 +1,67 @@
//
// PEPLanguage+SecureCodingTest.m
// PEPObjCAdapterTypesTests_iOS
//
// Created by David Alarcon on 27/1/21.
// Copyright © 2021 pp. All rights reserved.
//
#import <XCTest/XCTest.h>
#import "PEPTypesTestUtil.h"
#import "PEPLanguage+SecureCoding.h"
@interface PEPLanguage_SecureCodingTest : XCTestCase
@end
@implementation PEPLanguage_SecureCodingTest
- (void)testConformsSecureCodingProtocol {
PEPLanguage *testee = [PEPLanguage new];
XCTAssertTrue([testee conformsToProtocol:@protocol(NSSecureCoding)]);
}
- (void)testSupportsSecureCodingProtocol {
XCTAssertTrue([PEPLanguage supportsSecureCoding]);
}
- (void)testLanguageCode {
PEPLanguage *testee = [PEPTypesTestUtil pEpLanguageWithAllFieldsFilled];
PEPLanguage *unarchivedTestee = [self archiveAndUnarchiveLanguage:testee];
XCTAssertEqualObjects(testee.code, unarchivedTestee.code);
}
- (void)testLanguageName {
PEPLanguage *testee = [PEPTypesTestUtil pEpLanguageWithAllFieldsFilled];
PEPLanguage *unarchivedTestee = [self archiveAndUnarchiveLanguage:testee];
XCTAssertEqualObjects(testee.name, unarchivedTestee.name);
}
- (void)testLanguageSentence {
PEPLanguage *testee = [PEPTypesTestUtil pEpLanguageWithAllFieldsFilled];
PEPLanguage *unarchivedTestee = [self archiveAndUnarchiveLanguage:testee];
XCTAssertEqualObjects(testee.sentence, unarchivedTestee.sentence);
}
// MARK: - Helper
- (PEPLanguage *)archiveAndUnarchiveLanguage:(PEPLanguage *)language {
NSError *error;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:language
requiringSecureCoding:YES
error:&error];
XCTAssertNotNil(data, "Error archiving pEp language.");
PEPLanguage *unarchivedLanguage = [NSKeyedUnarchiver unarchivedObjectOfClass:[PEPLanguage class]
fromData:data
error:&error];
XCTAssertNotNil(unarchivedLanguage, "Error unarchiving pEp language.");
return unarchivedLanguage;
}
@end

@ -0,0 +1,197 @@
//
// PEPMessage+SecureCodingTest.m
// PEPObjCAdapterTypesTests_iOS
//
// Created by David Alarcon on 27/1/21.
// Copyright © 2021 pp. All rights reserved.
//
#import <XCTest/XCTest.h>
#import "PEPMessage+SecureCoding.h"
#import "PEPTypesTestUtil.h"
#import "PEPIdentity.h"
#import "PEPAttachment.h"
#import "NSObject+Extension.h"
@interface PEPMessage_SecureCodingTest : XCTestCase
@end
@implementation PEPMessage_SecureCodingTest
- (void)testConformsSecureCodingProtocol {
PEPMessage *testee = [PEPMessage new];
XCTAssertTrue([testee conformsToProtocol:@protocol(NSSecureCoding)]);
}
- (void)testSupportsSecureCodingProtocol {
XCTAssertTrue([PEPMessage supportsSecureCoding]);
}
- (void)testMessageMessageID {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.messageID, unarchivedTestee.messageID);
}
- (void)testMessageFrom {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.from, unarchivedTestee.from);
}
- (void)testMessageTo {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.to, unarchivedTestee.to);
}
- (void)testMessageCC {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.cc, unarchivedTestee.cc);
}
- (void)testMessageBCC {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.bcc, unarchivedTestee.bcc);
}
- (void)testMessageShortMessage {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.shortMessage, unarchivedTestee.shortMessage);
}
- (void)testMessageLongMessage {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.longMessage, unarchivedTestee.longMessage);
}
- (void)testMessageLongMessageFormatted {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.longMessageFormatted, unarchivedTestee.longMessageFormatted);
}
- (void)testMessageReplyTo {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.replyTo, unarchivedTestee.replyTo);
}
- (void)testMessageInReplyTo {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.inReplyTo, unarchivedTestee.inReplyTo);
}
- (void)testMessageReferences {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.references, unarchivedTestee.references);
}
- (void)testMessageSentDate {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.sentDate, unarchivedTestee.sentDate);
}
- (void)testMessageReceivedDate {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.receivedDate, unarchivedTestee.receivedDate);
}
- (void)testMessageAttachments {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.attachments, unarchivedTestee.attachments);
}
- (void)testMessageOptionalFields {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.optionalFields, unarchivedTestee.optionalFields);
}
- (void)testMessageKeywords {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.keywords, unarchivedTestee.keywords);
}
- (void)testMessageReceivedBy {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqualObjects(testee.receivedBy, unarchivedTestee.receivedBy);
}
- (void)testMessageDirection {
PEPMessage *testee = [PEPTypesTestUtil pEpMessageWithAllFieldsFilled];
PEPMessage *unarchivedTestee = [self archiveAndUnarchiveMessage:testee];
XCTAssertEqual(testee.direction, unarchivedTestee.direction);
}
// MARK: - Helper
- (PEPMessage *)archiveAndUnarchiveMessage:(PEPMessage *)message {
NSError *error;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:message
requiringSecureCoding:YES
error:&error];
XCTAssertNotNil(data, "Error archiving pEp message.");
PEPMessage *unarchivedMessage = [NSKeyedUnarchiver unarchivedObjectOfClass:[PEPMessage class]
fromData:data
error:&error];
XCTAssertNotNil(unarchivedMessage, "Error unarchiving pEp message.");
return unarchivedMessage;
}
@end
@implementation PEPAttachment (Equatable)
- (BOOL)isEqualToPEPAttachment:(PEPAttachment * _Nonnull)attachment {
NSArray *s_keys = @[@"data", @"size", @"mimeType", @"filename", @"contentDisposition"];
return [self isEqualToObject:attachment basedOnKeys:s_keys];
}
- (BOOL)isEqual:(id)object {
if (object == self) {
return YES;
}
if (!object || ![object isKindOfClass:[self class]]) {
return NO;
}
return [self isEqualToPEPAttachment:object];
}
@end

@ -0,0 +1,23 @@
//
// PEPTypesTestUtil.h
// PEPObjCAdapterTypesTests_iOS
//
// Created by David Alarcon on 27/1/21.
// Copyright © 2021 p≡p. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class PEPIdentity, PEPAttachment, PEPLanguage, PEPMessage;
@interface PEPTypesTestUtil : NSObject
+ (PEPIdentity *)pEpIdentityWithAllFieldsFilled;
+ (PEPAttachment *)pEpAttachmentWithAllFieldsFilled;
+ (PEPLanguage *)pEpLanguageWithAllFieldsFilled;
+ (PEPMessage *)pEpMessageWithAllFieldsFilled;
@end
NS_ASSUME_NONNULL_END

@ -0,0 +1,92 @@
//
// PEPTypesTestUtil.m
// PEPObjCAdapterTypesTests_iOS
//
// Created by David Alarcon on 27/1/21.
// Copyright © 2021 pp. All rights reserved.
//
#import "PEPTypesTestUtil.h"
#import "PEPIdentity.h"
#import "PEPAttachment.h"
#import "PEPLanguage.h"
#import "PEPMessage.h"
@implementation PEPTypesTestUtil
+ (PEPIdentity *)pEpIdentityWithAllFieldsFilled {
PEPIdentity *identity = [PEPIdentity new];
identity.address = @"test@host.com";
identity.userID = @"pEp_own_userId";
identity.fingerPrint = @"184C1DE2D4AB98A2A8BB7F23B0EC5F483B62E19D";
identity.language = @"cat";
identity.commType = PEPCommTypePEP;
identity.isOwn = YES;
identity.flags = PEPIdentityFlagsNotForSync;
return identity;
}
+ (PEPAttachment *)pEpAttachmentWithAllFieldsFilled {
PEPAttachment *attachment = [PEPAttachment new];
attachment.data = [@"attachment" dataUsingEncoding:NSUTF8StringEncoding];
attachment.size = attachment.data.length;
attachment.mimeType = @"text/plain";
attachment.filename = @"attachment.txt";
attachment.contentDisposition = PEPContentDispositionAttachment;
return attachment;
}
+ (PEPLanguage *)pEpLanguageWithAllFieldsFilled {
PEPLanguage *language = [PEPLanguage new];
language.code = @"cat";
language.name = @"Català";
language.sentence = @"Bon profit";
return language;
}
+ (PEPMessage *)pEpMessageWithAllFieldsFilled {
PEPMessage *message = [PEPMessage new];
PEPIdentity *identity = [PEPTypesTestUtil pEpIdentityWithAllFieldsFilled];
PEPAttachment *attachment = [PEPTypesTestUtil pEpAttachmentWithAllFieldsFilled];
message.messageID = [NSString stringWithFormat: @"19980506192030.26456.%@", identity.address];
message.from = identity;
message.to = @[identity];
message.cc = @[identity];
message.bcc = @[identity];
message.shortMessage = @"shortMessage";
message.longMessage = @"longMessage";
message.longMessageFormatted = @"longMessageFormatted";
message.replyTo = @[identity];
message.inReplyTo = @[[NSString stringWithFormat: @"19980507220459.5655.%@", identity.address]];
message.references = @[[NSString stringWithFormat:
@"19980509035615.40087.%@",
identity.address]];
NSDate *yesterday = [NSCalendar.currentCalendar dateByAddingUnit:NSCalendarUnitDay
value:-1 toDate:[NSDate now]
options:NSCalendarWrapComponents];
message.sentDate = yesterday;
message.receivedDate = [NSDate now];
message.attachments = @[attachment];
message.optionalFields = @[@"optionalField"];
message.keywords = @[@"keyword"];
message.receivedBy = identity;
message.direction = PEPMsgDirectionIncoming;
return message;
}
@end

@ -153,9 +153,9 @@
159C00A725BB140F00F13E2B /* PEPIdentity+Reset.m in Sources */ = {isa = PBXBuildFile; fileRef = 4326A0AC2553F882001E18C6 /* PEPIdentity+Reset.m */; };
159C00A825BB140F00F13E2B /* NSError+PEP.m in Sources */ = {isa = PBXBuildFile; fileRef = 43DED785203C25E200D45CD6 /* NSError+PEP.m */; };
159C00A925BB140F00F13E2B /* NSString+NormalizePassphrase.m in Sources */ = {isa = PBXBuildFile; fileRef = 4349CD6E24AC73FC00A22A13 /* NSString+NormalizePassphrase.m */; };
159C00AA25BB140F00F13E2B /* PEPAutoPointer+Message.m in Sources */ = {isa = PBXBuildFile; fileRef = 4366177C25778F0D00AB8ECA /* PEPAutoPointer+Message.m */; };
159C00AA25BB140F00F13E2B /* (null) in Sources */ = {isa = PBXBuildFile; };
159C00AB25BB140F00F13E2B /* PEPInternalSession+PassphraseCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 433DFBB624A61D4B00AB373B /* PEPInternalSession+PassphraseCache.m */; };
159C00B125BB141000F13E2B /* PEPAutoPointer+Message.m in Sources */ = {isa = PBXBuildFile; fileRef = 4366177C25778F0D00AB8ECA /* PEPAutoPointer+Message.m */; };
159C00B125BB141000F13E2B /* (null) in Sources */ = {isa = PBXBuildFile; };
15A922E425BF2D6000D33EAB /* NSArray+Take.h in Headers */ = {isa = PBXBuildFile; fileRef = 43209B261ECC2ACD007E7E2E /* NSArray+Take.h */; };
15A922EC25BF2D7300D33EAB /* NSArray+Engine.h in Headers */ = {isa = PBXBuildFile; fileRef = 438C0ECA254020A400337922 /* NSArray+Engine.h */; };
15A922F225BF2D7700D33EAB /* PEPIdentity+Engine.h in Headers */ = {isa = PBXBuildFile; fileRef = 438C0F1125402D6400337922 /* PEPIdentity+Engine.h */; };
@ -166,8 +166,8 @@
15A922FC25BF2D8000D33EAB /* NSError+PEP+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4360A9FD2227CFA300E62E5A /* NSError+PEP+Internal.h */; };
15A922FD25BF2D8000D33EAB /* NSNumber+PEPRating+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4360A9FE2227EBB200E62E5A /* NSNumber+PEPRating+Internal.h */; };
15A922FE25BF2D8000D33EAB /* PEPMessage+Engine.h in Headers */ = {isa = PBXBuildFile; fileRef = 43ECE9C825407FF3005F1925 /* PEPMessage+Engine.h */; };
15A9230425BF2D9600D33EAB /* PEPAutoPointer+Message.h in Headers */ = {isa = PBXBuildFile; fileRef = 4366177B25778F0D00AB8ECA /* PEPAutoPointer+Message.h */; };
15A9230525BF2D9700D33EAB /* PEPAutoPointer+Message.h in Headers */ = {isa = PBXBuildFile; fileRef = 4366177B25778F0D00AB8ECA /* PEPAutoPointer+Message.h */; };
15A9230425BF2D9600D33EAB /* (null) in Headers */ = {isa = PBXBuildFile; };
15A9230525BF2D9700D33EAB /* (null) in Headers */ = {isa = PBXBuildFile; };
15D3D761200F61BB00A0DA20 /* PEPSessionProviderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 15D3D760200F61BB00A0DA20 /* PEPSessionProviderTest.m */; };
43062BAD24EEC83400489258 /* PEPIdentity+isPEPUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 43062BAC24EEC83400489258 /* PEPIdentity+isPEPUser.m */; };
432EF60C1C58B77900B6782A /* 0xB623F674.asc in Resources */ = {isa = PBXBuildFile; fileRef = 432EF6091C58B77900B6782A /* 0xB623F674.asc */; };
@ -190,6 +190,28 @@
4396CECB2187220200FDD398 /* PEPInternalSessionTestSendMessageDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4396CEC8218721F900FDD398 /* PEPInternalSessionTestSendMessageDelegate.m */; };
43E02A201C71F65B008F05E9 /* A3FC7F0A_sec.asc in Resources */ = {isa = PBXBuildFile; fileRef = 43E02A1C1C71F65B008F05E9 /* A3FC7F0A_sec.asc */; };
43E02A211C71F65B008F05E9 /* A3FC7F0A.asc in Resources */ = {isa = PBXBuildFile; fileRef = 43E02A1D1C71F65B008F05E9 /* A3FC7F0A.asc */; };
4E58698325BF2FA900779EAD /* PEPMessage+SecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E58698125BF2FA900779EAD /* PEPMessage+SecureCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
4E58698425BF2FA900779EAD /* PEPMessage+SecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E58698225BF2FA900779EAD /* PEPMessage+SecureCoding.m */; };
4E81CDA125C1A2F4009F140D /* libPEPObjCAdapterTypes_iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 151606FD257A401000DD42E0 /* libPEPObjCAdapterTypes_iOS.a */; };
4E81CE8825C1CCCB009F140D /* PEPIdentity+SecureCodingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E81CE8625C1CCCB009F140D /* PEPIdentity+SecureCodingTest.m */; };
4E81CE9625C1CE21009F140D /* PEPTypesTestUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E81CE9525C1CE21009F140D /* PEPTypesTestUtil.m */; };
4E81CEC225C1D751009F140D /* PEPLanguage+SecureCodingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E81CEC125C1D751009F140D /* PEPLanguage+SecureCodingTest.m */; };
4E81CF1825C1E710009F140D /* PEPAttachment+SecureCodingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E81CF1725C1E710009F140D /* PEPAttachment+SecureCodingTest.m */; };
4E81CF2825C1F48E009F140D /* PEPMessage+SecureCodingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E81CF2725C1F48E009F140D /* PEPMessage+SecureCodingTest.m */; };
4EA9B51F25BF20EA0048427E /* PEPIdentity+SecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EA9B43D25BEE0990048427E /* PEPIdentity+SecureCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
4EA9B54D25BF20FD0048427E /* PEPIdentity+SecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA9B43E25BEE0990048427E /* PEPIdentity+SecureCoding.m */; };
4EA9B58425BF278B0048427E /* PEPLanguage+SecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EA9B56425BF277F0048427E /* PEPLanguage+SecureCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
4EA9B59425BF27920048427E /* PEPLanguage+SecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA9B56525BF277F0048427E /* PEPLanguage+SecureCoding.m */; };
4EA9B5A725BF2A9A0048427E /* PEPAttachment+SecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EA9B5A525BF2A9A0048427E /* PEPAttachment+SecureCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
4EA9B5A825BF2A9A0048427E /* PEPAttachment+SecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA9B5A625BF2A9A0048427E /* PEPAttachment+SecureCoding.m */; };
4EDB861525C062E000FA045D /* PEPIdentity+SecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA9B43E25BEE0990048427E /* PEPIdentity+SecureCoding.m */; };
4EDB861D25C062E300FA045D /* PEPLanguage+SecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA9B56525BF277F0048427E /* PEPLanguage+SecureCoding.m */; };
4EDB862325C062E500FA045D /* PEPAttachment+SecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA9B5A625BF2A9A0048427E /* PEPAttachment+SecureCoding.m */; };
4EDB862925C062E800FA045D /* PEPMessage+SecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E58698225BF2FA900779EAD /* PEPMessage+SecureCoding.m */; };
4EDB862F25C062F200FA045D /* PEPIdentity+SecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EA9B43D25BEE0990048427E /* PEPIdentity+SecureCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
4EDB863525C062F400FA045D /* PEPLanguage+SecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EA9B56425BF277F0048427E /* PEPLanguage+SecureCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
4EDB863625C062F600FA045D /* PEPAttachment+SecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EA9B5A525BF2A9A0048427E /* PEPAttachment+SecureCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
4EDB863C25C062F800FA045D /* PEPMessage+SecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E58698125BF2FA900779EAD /* PEPMessage+SecureCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
640F79231C9B517C00DBEC4E /* 5CB2C182_sec.asc in Resources */ = {isa = PBXBuildFile; fileRef = 640F79211C9B517C00DBEC4E /* 5CB2C182_sec.asc */; };
640F79241C9B517C00DBEC4E /* 5CB2C182.asc in Resources */ = {isa = PBXBuildFile; fileRef = 640F79221C9B517C00DBEC4E /* 5CB2C182.asc */; };
64415E2F1BE9511C00F6CBB2 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35FB0ABD1B57F99D00377032 /* Security.framework */; platformFilter = ios; };
@ -211,6 +233,13 @@
remoteGlobalIDString = 1552DB112577D4F100A92F71;
remoteInfo = pEpEngine_macOS;
};
4E81CD4F25C19DD4009F140D /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 352988A21AEF964100FA7E2E /* Project object */;
proxyType = 1;
remoteGlobalIDString = 151606FC257A401000DD42E0;
remoteInfo = PEPObjCAdapterTypes_iOS;
};
64289E551B8B70E800FC617B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 64DA243B1B833248000BEE80 /* pEpEngine.xcodeproj */;
@ -387,6 +416,22 @@
43ECE9C725407FF2005F1925 /* PEPMessage+Engine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PEPMessage+Engine.m"; sourceTree = "<group>"; };
43ECE9C825407FF3005F1925 /* PEPMessage+Engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PEPMessage+Engine.h"; sourceTree = "<group>"; };
43F73BE92166248E00AB4524 /* PEPSync.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPSync.m; sourceTree = "<group>"; };
4E58698125BF2FA900779EAD /* PEPMessage+SecureCoding.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PEPMessage+SecureCoding.h"; sourceTree = "<group>"; };
4E58698225BF2FA900779EAD /* PEPMessage+SecureCoding.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PEPMessage+SecureCoding.m"; sourceTree = "<group>"; };
4E81CD4925C19DD4009F140D /* PEPObjCAdapterTypesTests_iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PEPObjCAdapterTypesTests_iOS.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
4E81CD4D25C19DD4009F140D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
4E81CE8625C1CCCB009F140D /* PEPIdentity+SecureCodingTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PEPIdentity+SecureCodingTest.m"; sourceTree = "<group>"; };
4E81CE9425C1CE21009F140D /* PEPTypesTestUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PEPTypesTestUtil.h; sourceTree = "<group>"; };
4E81CE9525C1CE21009F140D /* PEPTypesTestUtil.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PEPTypesTestUtil.m; sourceTree = "<group>"; };
4E81CEC125C1D751009F140D /* PEPLanguage+SecureCodingTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PEPLanguage+SecureCodingTest.m"; sourceTree = "<group>"; };
4E81CF1725C1E710009F140D /* PEPAttachment+SecureCodingTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PEPAttachment+SecureCodingTest.m"; sourceTree = "<group>"; };
4E81CF2725C1F48E009F140D /* PEPMessage+SecureCodingTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PEPMessage+SecureCodingTest.m"; sourceTree = "<group>"; };
4EA9B43D25BEE0990048427E /* PEPIdentity+SecureCoding.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PEPIdentity+SecureCoding.h"; sourceTree = "<group>"; };
4EA9B43E25BEE0990048427E /* PEPIdentity+SecureCoding.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PEPIdentity+SecureCoding.m"; sourceTree = "<group>"; };
4EA9B56425BF277F0048427E /* PEPLanguage+SecureCoding.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PEPLanguage+SecureCoding.h"; sourceTree = "<group>"; };
4EA9B56525BF277F0048427E /* PEPLanguage+SecureCoding.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PEPLanguage+SecureCoding.m"; sourceTree = "<group>"; };
4EA9B5A525BF2A9A0048427E /* PEPAttachment+SecureCoding.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PEPAttachment+SecureCoding.h"; sourceTree = "<group>"; };
4EA9B5A625BF2A9A0048427E /* PEPAttachment+SecureCoding.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "PEPAttachment+SecureCoding.m"; sourceTree = "<group>"; };
640F79211C9B517C00DBEC4E /* 5CB2C182_sec.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 5CB2C182_sec.asc; sourceTree = "<group>"; };
640F79221C9B517C00DBEC4E /* 5CB2C182.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 5CB2C182.asc; sourceTree = "<group>"; };
64415E171BE94FCB00F6CBB2 /* pEpObjCAdapterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = pEpObjCAdapterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
@ -436,6 +481,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
4E81CD4625C19DD4009F140D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
4E81CDA125C1A2F4009F140D /* libPEPObjCAdapterTypes_iOS.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
64415E141BE94FCB00F6CBB2 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@ -515,6 +568,10 @@
15B107A3257520DE00D06C34 /* src */ = {
isa = PBXGroup;
children = (
4EA9B43E25BEE0990048427E /* PEPIdentity+SecureCoding.m */,
4EA9B56525BF277F0048427E /* PEPLanguage+SecureCoding.m */,
4EA9B5A625BF2A9A0048427E /* PEPAttachment+SecureCoding.m */,
4E58698225BF2FA900779EAD /* PEPMessage+SecureCoding.m */,
15B109FA2575510300D06C34 /* NSObject+Extension.h */,
15B109FB2575510300D06C34 /* NSObject+Extension.m */,
15B109E625754F8800D06C34 /* PEPSessionProtocol.m */,
@ -536,6 +593,10 @@
15B107A8257520DE00D06C34 /* PEPMessage.h */,
15B107A9257520DE00D06C34 /* PEPAttachment.h */,
15B107AA257520DE00D06C34 /* PEPIdentity.h */,
4EA9B43D25BEE0990048427E /* PEPIdentity+SecureCoding.h */,
4EA9B56425BF277F0048427E /* PEPLanguage+SecureCoding.h */,
4EA9B5A525BF2A9A0048427E /* PEPAttachment+SecureCoding.h */,
4E58698125BF2FA900779EAD /* PEPMessage+SecureCoding.h */,
);
path = PublicHeaders;
sourceTree = "<group>";
@ -600,6 +661,7 @@
1552D93C2576602D00A92F71 /* PEPObjCAdapter_macOS */,
1543DC67257943CE0041EFB5 /* PEPObjCAdapter_iOS */,
151606FE257A401000DD42E0 /* PEPObjCAdapterTypes_iOS */,
4E81CD4A25C19DD4009F140D /* PEPObjCAdapterTypesTests_iOS */,
352988AB1AEF964100FA7E2E /* Products */,
43447C51221D448500B6323E /* Frameworks */,
);
@ -613,6 +675,7 @@
1552D93B2576602D00A92F71 /* libPEPObjCAdapter_macOS.a */,
1543DC66257943CE0041EFB5 /* libPEPObjCAdapter_iOS.a */,
151606FD257A401000DD42E0 /* libPEPObjCAdapterTypes_iOS.a */,
4E81CD4925C19DD4009F140D /* PEPObjCAdapterTypesTests_iOS.xctest */,
);
name = Products;
sourceTree = "<group>";
@ -697,6 +760,28 @@
path = Extensions;
sourceTree = "<group>";
};
4E81CD4A25C19DD4009F140D /* PEPObjCAdapterTypesTests_iOS */ = {
isa = PBXGroup;
children = (
4E81CE9325C1CDF9009F140D /* TestUtils */,
4E81CE8625C1CCCB009F140D /* PEPIdentity+SecureCodingTest.m */,
4E81CEC125C1D751009F140D /* PEPLanguage+SecureCodingTest.m */,
4E81CF1725C1E710009F140D /* PEPAttachment+SecureCodingTest.m */,
4E81CF2725C1F48E009F140D /* PEPMessage+SecureCodingTest.m */,
4E81CD4D25C19DD4009F140D /* Info.plist */,
);
path = PEPObjCAdapterTypesTests_iOS;
sourceTree = "<group>";
};
4E81CE9325C1CDF9009F140D /* TestUtils */ = {
isa = PBXGroup;
children = (
4E81CE9425C1CE21009F140D /* PEPTypesTestUtil.h */,
4E81CE9525C1CE21009F140D /* PEPTypesTestUtil.m */,
);
path = TestUtils;
sourceTree = "<group>";
};
64289E521B8B70E800FC617B /* Products */ = {
isa = PBXGroup;
children = (
@ -732,13 +817,17 @@
files = (
1552D92B25765EDC00A92F71 /* PEPIdentity.h in Headers */,
1552D92C25765EDC00A92F71 /* PEPTypes.h in Headers */,
4EA9B5A725BF2A9A0048427E /* PEPAttachment+SecureCoding.h in Headers */,
1552D92825765EDC00A92F71 /* PEPLanguage.h in Headers */,
1552D92925765EDC00A92F71 /* PEPSessionProtocol.h in Headers */,
1552D92D25765EDC00A92F71 /* PEPMessage.h in Headers */,
1552D92325765EC900A92F71 /* NSObject+Extension.h in Headers */,
150E8FB525755B6900AE2198 /* PEPObjCAdapterTypes_macOS.h in Headers */,
1552D92E25765EDC00A92F71 /* PEPAttachment.h in Headers */,
4E58698325BF2FA900779EAD /* PEPMessage+SecureCoding.h in Headers */,
4EA9B58425BF278B0048427E /* PEPLanguage+SecureCoding.h in Headers */,
1552D92A25765EDC00A92F71 /* PEPEngineTypes.h in Headers */,
4EA9B51F25BF20EA0048427E /* PEPIdentity+SecureCoding.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -746,13 +835,17 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
4EDB862F25C062F200FA045D /* PEPIdentity+SecureCoding.h in Headers */,
4EDB863525C062F400FA045D /* PEPLanguage+SecureCoding.h in Headers */,
1516070E257A405A00DD42E0 /* PEPLanguage.h in Headers */,
15160712257A405A00DD42E0 /* PEPIdentity.h in Headers */,
1516071D257A406700DD42E0 /* NSObject+Extension.h in Headers */,
1516070C257A405A00DD42E0 /* PEPEngineTypes.h in Headers */,
1516070F257A405A00DD42E0 /* PEPTypes.h in Headers */,
4EDB863C25C062F800FA045D /* PEPMessage+SecureCoding.h in Headers */,
1516070D257A405A00DD42E0 /* PEPAttachment.h in Headers */,
15160711257A405A00DD42E0 /* PEPMessage.h in Headers */,
4EDB863625C062F600FA045D /* PEPAttachment+SecureCoding.h in Headers */,
15160710257A405A00DD42E0 /* PEPSessionProtocol.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -775,7 +868,7 @@
1543DD79257A3BCF0041EFB5 /* PEPPassphraseCache.h in Headers */,
1543DD3F257A3B710041EFB5 /* PEPPassphraseProviderProtocol.h in Headers */,
1543DD78257A3BCF0041EFB5 /* PEPInternalConstants.h in Headers */,
15A9230525BF2D9700D33EAB /* PEPAutoPointer+Message.h in Headers */,
15A9230525BF2D9700D33EAB /* (null) in Headers */,
15A922FA25BF2D8000D33EAB /* NSString+NormalizePassphrase.h in Headers */,
1543DD40257A3B710041EFB5 /* NSNumber+PEPRating.h in Headers */,
1543DD76257A3BCF0041EFB5 /* PEPAutoPointer.h in Headers */,
@ -824,7 +917,7 @@
1552D963257660C900A92F71 /* NSString+NormalizePassphrase.h in Headers */,
1552D982257660C900A92F71 /* PEPPassphraseUtil.h in Headers */,
1552D98E257660C900A92F71 /* PEPMessage+Engine.h in Headers */,
15A9230425BF2D9600D33EAB /* PEPAutoPointer+Message.h in Headers */,
15A9230425BF2D9600D33EAB /* (null) in Headers */,
1552D97C257660C900A92F71 /* PEPPassphraseCacheEntry.h in Headers */,
1552D968257660C900A92F71 /* PEPInternalSession+PassphraseCache.h in Headers */,
1552D989257660C900A92F71 /* PEPObjCAdapter+Internal.h in Headers */,
@ -913,6 +1006,24 @@
productReference = 1552D93B2576602D00A92F71 /* libPEPObjCAdapter_macOS.a */;
productType = "com.apple.product-type.library.static";
};
4E81CD4825C19DD4009F140D /* PEPObjCAdapterTypesTests_iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 4E81CD5125C19DD4009F140D /* Build configuration list for PBXNativeTarget "PEPObjCAdapterTypesTests_iOS" */;
buildPhases = (
4E81CD4525C19DD4009F140D /* Sources */,
4E81CD4625C19DD4009F140D /* Frameworks */,
4E81CD4725C19DD4009F140D /* Resources */,
);
buildRules = (
);
dependencies = (
4E81CD5025C19DD4009F140D /* PBXTargetDependency */,
);
name = PEPObjCAdapterTypesTests_iOS;
productName = PEPObjCAdapterTypesTests_iOS;
productReference = 4E81CD4925C19DD4009F140D /* PEPObjCAdapterTypesTests_iOS.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
64415E161BE94FCB00F6CBB2 /* pEpObjCAdapterTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 64415E281BE94FCB00F6CBB2 /* Build configuration list for PBXNativeTarget "pEpObjCAdapterTests" */;
@ -953,6 +1064,9 @@
1552D93A2576602D00A92F71 = {
CreatedOnToolsVersion = 12.2;
};
4E81CD4825C19DD4009F140D = {
CreatedOnToolsVersion = 12.3;
};
64415E161BE94FCB00F6CBB2 = {
CreatedOnToolsVersion = 7.1;
DevelopmentTeam = NQLYU6MGPN;
@ -983,6 +1097,7 @@
64415E161BE94FCB00F6CBB2 /* pEpObjCAdapterTests */,
150E8FB125755B6900AE2198 /* PEPObjCAdapterTypes_macOS */,
151606FC257A401000DD42E0 /* PEPObjCAdapterTypes_iOS */,
4E81CD4825C19DD4009F140D /* PEPObjCAdapterTypesTests_iOS */,
);
};
/* End PBXProject section */
@ -1012,6 +1127,13 @@
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
4E81CD4725C19DD4009F140D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
64415E151BE94FCB00F6CBB2 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@ -1087,7 +1209,11 @@
files = (
150E8FB725755B6900AE2198 /* PEPObjCAdapterTypes_macOS.m in Sources */,
150E8FBF25755B7200AE2198 /* PEPMessage.m in Sources */,
4E58698425BF2FA900779EAD /* PEPMessage+SecureCoding.m in Sources */,
4EA9B54D25BF20FD0048427E /* PEPIdentity+SecureCoding.m in Sources */,
150E8FC425755B7200AE2198 /* PEPAttachment.m in Sources */,
4EA9B59425BF27920048427E /* PEPLanguage+SecureCoding.m in Sources */,
4EA9B5A825BF2A9A0048427E /* PEPAttachment+SecureCoding.m in Sources */,
150E8FC125755B7200AE2198 /* PEPSessionProtocol.m in Sources */,
150E8FC325755B7200AE2198 /* PEPLanguage.m in Sources */,
150E8FC225755B7200AE2198 /* PEPIdentity.m in Sources */,
@ -1101,7 +1227,11 @@
files = (
1516071E257A406700DD42E0 /* PEPSessionProtocol.m in Sources */,
1516071F257A406700DD42E0 /* PEPAttachment.m in Sources */,
4EDB862925C062E800FA045D /* PEPMessage+SecureCoding.m in Sources */,
4EDB861525C062E000FA045D /* PEPIdentity+SecureCoding.m in Sources */,
15160701257A401000DD42E0 /* PEPObjCAdapterTypes_iOS.m in Sources */,
4EDB861D25C062E300FA045D /* PEPLanguage+SecureCoding.m in Sources */,
4EDB862325C062E500FA045D /* PEPAttachment+SecureCoding.m in Sources */,
15160720257A406700DD42E0 /* PEPIdentity.m in Sources */,
15160723257A406700DD42E0 /* PEPMessage.m in Sources */,
15160721257A406700DD42E0 /* PEPLanguage.m in Sources */,
@ -1132,7 +1262,7 @@
1543DC89257944660041EFB5 /* PEPCSVScanner.m in Sources */,
1543DCB5257944DC0041EFB5 /* PEPInternalConstants.m in Sources */,
1543DC9E257944C40041EFB5 /* PEPInternalSession.m in Sources */,
159C00AA25BB140F00F13E2B /* PEPAutoPointer+Message.m in Sources */,
159C00AA25BB140F00F13E2B /* (null) in Sources */,
159C00A825BB140F00F13E2B /* NSError+PEP.m in Sources */,
1543DCC3257944EB0041EFB5 /* PEPPassphraseCacheEntry.m in Sources */,
1543DCA6257944CB0041EFB5 /* PEPSessionProvider.m in Sources */,
@ -1168,11 +1298,23 @@
1552D969257660C900A92F71 /* NSError+PEP.m in Sources */,
1552D980257660C900A92F71 /* PEPObjCAdapter.m in Sources */,
1552D96D257660C900A92F71 /* PEPQueue.m in Sources */,
159C00B125BB141000F13E2B /* PEPAutoPointer+Message.m in Sources */,
159C00B125BB141000F13E2B /* (null) in Sources */,
1552D971257660C900A92F71 /* PEPSession.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
4E81CD4525C19DD4009F140D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4E81CF2825C1F48E009F140D /* PEPMessage+SecureCodingTest.m in Sources */,
4E81CE9625C1CE21009F140D /* PEPTypesTestUtil.m in Sources */,
4E81CEC225C1D751009F140D /* PEPLanguage+SecureCodingTest.m in Sources */,
4E81CF1825C1E710009F140D /* PEPAttachment+SecureCodingTest.m in Sources */,
4E81CE8825C1CCCB009F140D /* PEPIdentity+SecureCodingTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
64415E131BE94FCB00F6CBB2 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@ -1195,6 +1337,11 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
4E81CD5025C19DD4009F140D /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 151606FC257A401000DD42E0 /* PEPObjCAdapterTypes_iOS */;
targetProxy = 4E81CD4F25C19DD4009F140D /* PBXContainerItemProxy */;
};
64415E401BE95B2000F6CBB2 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = pEpTrustWords;
@ -1515,6 +1662,65 @@
};
name = Release;
};
4E81CD5225C19DD4009F140D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = NQLYU6MGPN;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
INFOPLIST_FILE = PEPObjCAdapterTypesTests_iOS/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.3;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
OTHER_LDFLAGS = "-ObjC";
PRODUCT_BUNDLE_IDENTIFIER = "pep.foundation.PEPObjCAdapterTypesTests-iOS";
PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
4E81CD5325C19DD4009F140D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = NQLYU6MGPN;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = PEPObjCAdapterTypesTests_iOS/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.3;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MTL_FAST_MATH = YES;
OTHER_LDFLAGS = "-ObjC";
PRODUCT_BUNDLE_IDENTIFIER = "pep.foundation.PEPObjCAdapterTypesTests-iOS";
PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
64415E1F1BE94FCB00F6CBB2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -1633,6 +1839,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
4E81CD5125C19DD4009F140D /* Build configuration list for PBXNativeTarget "PEPObjCAdapterTypesTests_iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4E81CD5225C19DD4009F140D /* Debug */,
4E81CD5325C19DD4009F140D /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
64415E281BE94FCB00F6CBB2 /* Build configuration list for PBXNativeTarget "pEpObjCAdapterTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1230"
version = "1.3">
<BuildAction
parallelizeBuildables = "NO"
buildImplicitDependencies = "NO">
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4E81CD4825C19DD4009F140D"
BuildableName = "PEPObjCAdapterTypesTests_iOS.xctest"
BlueprintName = "PEPObjCAdapterTypesTests_iOS"
ReferencedContainer = "container:pEpObjCAdapter.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
Loading…
Cancel
Save