mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			91 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Objective-C
		
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Objective-C
		
	
//
 | 
						|
//  Copyright (c) 2017 Open Whisper Systems. All rights reserved.
 | 
						|
//
 | 
						|
 | 
						|
#import "OWSScrubbingLogFormatter.h"
 | 
						|
#import <XCTest/XCTest.h>
 | 
						|
 | 
						|
NS_ASSUME_NONNULL_BEGIN
 | 
						|
 | 
						|
@interface OWSScrubbingLogFormatterTest : XCTestCase
 | 
						|
 | 
						|
@end
 | 
						|
 | 
						|
@implementation OWSScrubbingLogFormatterTest
 | 
						|
 | 
						|
- (DDLogMessage *)messageWithString:(NSString *)string
 | 
						|
{
 | 
						|
    return [[DDLogMessage alloc] initWithMessage:string
 | 
						|
                                           level:DDLogLevelInfo
 | 
						|
                                            flag:0
 | 
						|
                                         context:0
 | 
						|
                                            file:nil
 | 
						|
                                        function:nil
 | 
						|
                                            line:0
 | 
						|
                                             tag:nil
 | 
						|
                                         options:0
 | 
						|
                                       timestamp:[NSDate new]];
 | 
						|
}
 | 
						|
 | 
						|
- (void)testDataScrubbed
 | 
						|
{
 | 
						|
    NSDictionary<NSString *, NSString *> *expectedOutputs = @{
 | 
						|
        @"<01234567 89a23def 23234567 89ab1234>" : @"[ REDACTED_DATA:01... ]",
 | 
						|
        @"My data is: <01234567 89a23def 23234567 89ab1223>" : @"My data is: [ REDACTED_DATA:01... ]",
 | 
						|
        @"My data is <12345670 89a23def 23234567 89ab1223> their data is <87654321 89ab1234>" :
 | 
						|
            @"My data is [ REDACTED_DATA:12... ] their data is [ REDACTED_DATA:87... ]"
 | 
						|
    };
 | 
						|
 | 
						|
    OWSScrubbingLogFormatter *formatter = [OWSScrubbingLogFormatter new];
 | 
						|
 | 
						|
    // Other formatters add a dynamic date prefix to log lines. We truncate that when comparing our expected output.
 | 
						|
    NSUInteger datePrefixLength = [formatter formatLogMessage:[self messageWithString:@""]].length;
 | 
						|
 | 
						|
    for (NSString *input in expectedOutputs) {
 | 
						|
 | 
						|
        NSString *rawActual = [formatter formatLogMessage:[self messageWithString:input]];
 | 
						|
 | 
						|
        // strip out dynamic date portion of log line
 | 
						|
        NSString *actual =
 | 
						|
            [rawActual substringWithRange:NSMakeRange(datePrefixLength, rawActual.length - datePrefixLength)];
 | 
						|
 | 
						|
        NSString *expected = expectedOutputs[input];
 | 
						|
 | 
						|
        XCTAssertEqualObjects(expected, actual);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
- (void)testPhoneNumbersScrubbed
 | 
						|
{
 | 
						|
    NSArray<NSString *> *phoneStrings = @[
 | 
						|
        @"+13331231234 ",
 | 
						|
        @"+4113331231234",
 | 
						|
        @"+13331231234 something something +13331231234",
 | 
						|
    ];
 | 
						|
 | 
						|
    for (NSString *phoneString in phoneStrings) {
 | 
						|
        OWSScrubbingLogFormatter *formatter = [OWSScrubbingLogFormatter new];
 | 
						|
        NSString *messageText = [NSString stringWithFormat:@"My phone number is %@", phoneString];
 | 
						|
        NSString *actual = [formatter formatLogMessage:[self messageWithString:messageText]];
 | 
						|
        NSRange redactedRange = [actual rangeOfString:@"My phone number is [ REDACTED_PHONE_NUMBER:xxx234 ]"];
 | 
						|
        XCTAssertNotEqual(NSNotFound, redactedRange.location, "Failed to redact phone string: %@", phoneString);
 | 
						|
 | 
						|
        NSRange phoneNumberRange = [actual rangeOfString:phoneString];
 | 
						|
        XCTAssertEqual(NSNotFound, phoneNumberRange.location, "Failed to redact phone string: %@", phoneString);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
- (void)testNonPhonenumberNotScrubbed
 | 
						|
{
 | 
						|
    OWSScrubbingLogFormatter *formatter = [OWSScrubbingLogFormatter new];
 | 
						|
    NSString *actual =
 | 
						|
        [formatter formatLogMessage:[self messageWithString:[NSString stringWithFormat:@"Some unfiltered string"]]];
 | 
						|
 | 
						|
    NSRange redactedRange = [actual rangeOfString:@"Some unfiltered string"];
 | 
						|
    XCTAssertNotEqual(NSNotFound, redactedRange.location, "Shouldn't touch non phone string.");
 | 
						|
}
 | 
						|
 | 
						|
@end
 | 
						|
 | 
						|
NS_ASSUME_NONNULL_END
 |