Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  IntentCreatorTests.swift   Sprache: JAVA

 

import ThreemaEssentials
import XCTest

@testable import ThreemaFramework

final class IntentCreatorTests: XCTestCase {
    private var testDatabase: TestDatabase!
    private var dbPreparer: TestDatabasePreparer!

    private var ddLoggerMock: DDLoggerMock!
    
    override func setUp() {
        AppGroup.setGroupID("group.ch.threema")

        testDatabase = TestDatabase()
        dbPreparer = testDatabase.preparer

        // Workaround to ensure remote secret is initialized
        AppLaunchManager.shared.setRemoteSecretManager(testDatabase.remoteSecretManagerMock)
        
        ddLoggerMock = DDLoggerMock()
        DDTTYLogger.sharedInstance?.logFormatter = LogFormatterCustom()
        DDLog.add(ddLoggerMock)
    }

    override func tearDown() {
        DDLog.remove(ddLoggerMock)
    }

    func testAllowedDonateInteractionForIncomingMessage() throws {
        let entityManager = testDatabase.entityManager
        
        let userSettingsMock = UserSettingsMock()
        userSettingsMock.notificationType = NSNumber(integerLiteral: NotificationType.complete.userSettingsValue)

        let groupID = BytesUtility.generateRandomBytes(length: ThreemaProtocol.groupIDLength)!
        let dp = testDatabase.preparer
        dp.save {
            let contact1 = dp.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: 32)!,
                identity: "TESTER01"
            )
            dp.createConversation(typing: false, unreadMessageCount: 2, visibility: .default) { conversation in
                dp.createTextMessage(
                    conversation: conversation,
                    text: "msg1",
                    date: Date(),
                    delivered: true,
                    id: BytesUtility.generateRandomBytes(length: ThreemaProtocol.messageIDLength)!,
                    isOwn: false,
                    read: false,
                    sent: true,
                    userack: false,
                    sender: contact1,
                    remoteSentDate: Date(timeIntervalSinceNow: -100)
                )
            }
            
            dp.createConversation(
                typing: false,
                unreadMessageCount: 0,
                visibility: .default,
                complete: { conversation in
                    conversation.groupID = groupID
                    conversation.contact = contact1
                    conversation.groupName = "Testgruppe"
                }
            )
        }
        
        let intentCreator = IntentCreator(
            myIdentity: ThreemaIdentity("TESTERID"),
            userSettings: userSettingsMock,
            entityManager: entityManager
        )
        let interaction = intentCreator.inSendMessageIntentInteraction(for: "TESTER01", direction: .incoming)
        let groupInteraction = intentCreator.inSendMessageIntentInteraction(
            for: groupID,
            creatorID: "TESTER01",
            contactID: "TESTER01",
            direction: .incoming
        )
        
        DDLog.sharedInstance.flushLog()
        
        XCTAssertNotNil(interaction)
        XCTAssertNotNil(groupInteraction)
    }
    
    func testNotAllowedDonateInteractionForIncomingMessage() throws {
        let entityManager = testDatabase.entityManager
        
        let userSettingsMock = UserSettingsMock()
        userSettingsMock.notificationType = NSNumber(integerLiteral: NotificationType.balanced.userSettingsValue)

        let groupID = BytesUtility.generateRandomBytes(length: ThreemaProtocol.groupIDLength)!
        let dp = testDatabase.preparer
        dp.save {
            let contact1 = dp.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: 32)!,
                identity: "TESTER01"
            )
            dp.createConversation(typing: false, unreadMessageCount: 2, visibility: .default) { conversation in
                dp.createTextMessage(
                    conversation: conversation,
                    text: "msg1",
                    date: Date(),
                    delivered: true,
                    id: BytesUtility.generateRandomBytes(length: ThreemaProtocol.messageIDLength)!,
                    isOwn: false,
                    read: false,
                    sent: true,
                    userack: false,
                    sender: contact1,
                    remoteSentDate: Date(timeIntervalSinceNow: -100)
                )
            }
            
            dp.createConversation(
                typing: false,
                unreadMessageCount: 0,
                visibility: .default,
                complete: { conversation in
                    conversation.groupID = groupID
                    conversation.contact = contact1
                    conversation.groupName = "Testgruppe"
                }
            )
        }
        
        let intentCreator = IntentCreator(
            myIdentity: ThreemaIdentity("TESTERID"),
            userSettings: userSettingsMock,
            entityManager: entityManager
        )
        let interaction = intentCreator.inSendMessageIntentInteraction(for: "TESTER01", direction: .incoming)
        let groupInteraction = intentCreator.inSendMessageIntentInteraction(
            for: groupID,
            creatorID: "TESTER01",
            contactID: "TESTER01",
            direction: .incoming
        )
        
        DDLog.sharedInstance.flushLog()
        
        XCTAssertNil(interaction)
        XCTAssertNil(groupInteraction)
        XCTAssertTrue(ddLoggerMock.exists(message: "Donations for incoming interactions are disabled by the user"))
    }
    
    func testDoNotDonateForPrivateChats1() throws {
        let entityManager = testDatabase.entityManager

        let userSettingsMock = UserSettingsMock()
        userSettingsMock.notificationType = NSNumber(integerLiteral: NotificationType.balanced.userSettingsValue)

        let groupID = BytesUtility.generateRandomBytes(length: ThreemaProtocol.groupIDLength)!
        let dp = testDatabase.preparer
        dp.save {
            let contact1 = dp.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: 32)!,
                identity: "TESTER01"
            )
            dp.createConversation(typing: false, unreadMessageCount: 2, visibility: .default) { conversation in
                conversation.changeCategory(to: .private)
                _ = contact1.conversations!.insert(conversation)
                
                dp.createTextMessage(
                    conversation: conversation,
                    text: "msg1",
                    date: Date(),
                    delivered: true,
                    id: BytesUtility.generateRandomBytes(length: ThreemaProtocol.messageIDLength)!,
                    isOwn: false,
                    read: false,
                    sent: true,
                    userack: false,
                    sender: contact1,
                    remoteSentDate: Date(timeIntervalSinceNow: -100)
                )
            }
            
            dp.createConversation(
                typing: false,
                unreadMessageCount: 0,
                visibility: .default,
                complete: { conversation in
                    conversation.groupID = groupID
                    conversation.contact = contact1
                    conversation.groupName = "Testgruppe"
                }
            )
        }
        
        let intentCreator = IntentCreator(
            myIdentity: ThreemaIdentity("TESTERID"),
            userSettings: userSettingsMock,
            entityManager: entityManager
        )
        let interaction = intentCreator.inSendMessageIntentInteraction(for: "TESTER01", direction: .incoming)
        let groupInteraction = intentCreator.inSendMessageIntentInteraction(
            for: groupID,
            creatorID: "TESTER01",
            contactID: "TESTER01",
            direction: .incoming
        )
        
        DDLog.sharedInstance.flushLog()
        
        XCTAssertNil(interaction)
        XCTAssertNil(groupInteraction)
    }
    
    func testDoNotDonateForPrivateChats2() throws {
        let entityManager = testDatabase.entityManager

        let userSettingsMock = UserSettingsMock()
        userSettingsMock.notificationType = NSNumber(integerLiteral: NotificationType.complete.userSettingsValue)

        let groupID = BytesUtility.generateRandomBytes(length: ThreemaProtocol.groupIDLength)!
        let dp = testDatabase.preparer
        dp.save {
            let contact1 = dp.createContact(
                publicKey: BytesUtility.generateRandomBytes(length: 32)!,
                identity: "TESTER01"
            )
            dp.createConversation(typing: false, unreadMessageCount: 2, visibility: .default) { conversation in
                _ = contact1.conversations!.insert(conversation)
                
                dp.createTextMessage(
                    conversation: conversation,
                    text: "msg1",
                    date: Date(),
                    delivered: true,
                    id: BytesUtility.generateRandomBytes(length: ThreemaProtocol.messageIDLength)!,
                    isOwn: false,
                    read: false,
                    sent: true,
                    userack: false,
                    sender: contact1,
                    remoteSentDate: Date(timeIntervalSinceNow: -100)
                )
            }
            
            dp.createConversation(
                typing: false,
                unreadMessageCount: 0,
                visibility: .default,
                complete: { conversation in
                    conversation.groupID = groupID
                    conversation.contact = contact1
                    conversation.groupName = "Testgruppe"
                    
                    conversation.changeCategory(to: .private)
                }
            )
        }

        let intentCreator = IntentCreator(
            myIdentity: ThreemaIdentity("TESTERID"),
            userSettings: userSettingsMock,
            entityManager: entityManager
        )
        let interaction = intentCreator.inSendMessageIntentInteraction(for: "TESTER01", direction: .incoming)
        let groupInteraction = intentCreator.inSendMessageIntentInteraction(
            for: groupID,
            creatorID: "TESTER01",
            contactID: "TESTER01",
            direction: .incoming
        )
        
        DDLog.sharedInstance.flushLog()
        
        XCTAssertNotNil(interaction)
        XCTAssertNil(groupInteraction)
    }
}

Messung
CHZG
859510093

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet am  2026-11-04) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1104842
#Domains=499168