Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Bunn committed Apr 22, 2024
1 parent 6ac8ba9 commit 1631a6c
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 5 deletions.
2 changes: 0 additions & 2 deletions DuckDuckGo/DBP/DBPHomeViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,6 @@ final class DBPHomeViewController: NSViewController {
case .valid:
displayDBPUI()
pixelHandler.fire(.homeViewShowWebUI)
case .unverified:
break
}
}

Expand Down
10 changes: 7 additions & 3 deletions DuckDuckGo/DBP/DataBrokerPrerequisitesStatusVerifier.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import LoginItems
enum DataBrokerPrerequisitesStatus {
case invalidDirectory
case invalidSystemPermission
case unverified
case valid
}

Expand All @@ -33,11 +32,16 @@ protocol DataBrokerPrerequisitesStatusVerifier: AnyObject {
}

final class DefaultDataBrokerPrerequisitesStatusVerifier: DataBrokerPrerequisitesStatusVerifier {
private let statusChecker: DBPLoginItemStatusChecker

init(statusChecker: DBPLoginItemStatusChecker = LoginItem.dbpBackgroundAgent) {
self.statusChecker = statusChecker
}

func checkStatus() -> DataBrokerPrerequisitesStatus {
if !LoginItem.dbpBackgroundAgent.doesHaveNecessaryPermissions() {
if !statusChecker.doesHaveNecessaryPermissions() {
return .invalidSystemPermission
} else if !LoginItem.dbpBackgroundAgent.isInCorrectDirectory() {
} else if !statusChecker.isInCorrectDirectory() {
return .invalidDirectory
} else {
return .valid
Expand Down
73 changes: 73 additions & 0 deletions UnitTests/DBP/DataBrokerPrerequisitesStatusVerifierTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
//
// DataBrokerPrerequisitesStatusVerifierTests.swift
//
// Copyright © 2024 DuckDuckGo. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

import XCTest
@testable import DuckDuckGo_Privacy_Browser
import DataBrokerProtection

final class DataBrokerPrerequisitesStatusVerifierTests: XCTestCase {
private let statusChecker = MockDBPLoginItemStatusChecker()

override func setUpWithError() throws {
}

override func tearDownWithError() throws {
statusChecker.reset()
}

func testIncorrectDirectory_thenReturnIncorrectDirectoryStatus() {
statusChecker.isInCorrectDirectoryValue = false
let result = DefaultDataBrokerPrerequisitesStatusVerifier(statusChecker: statusChecker).checkStatus()
XCTAssertEqual(result, DataBrokerPrerequisitesStatus.invalidDirectory)
}

func testIncorrectPermission_thenReturnIncorrectPermissionStatus() {
statusChecker.doesHavePermissionValue = false
let result = DefaultDataBrokerPrerequisitesStatusVerifier(statusChecker: statusChecker).checkStatus()
XCTAssertEqual(result, DataBrokerPrerequisitesStatus.invalidSystemPermission)
}

func testIncorrectDirectoryAndIncorrectPermission_thenReturnIncorrectPermissionStatus() {
statusChecker.isInCorrectDirectoryValue = false
statusChecker.doesHavePermissionValue = false
let result = DefaultDataBrokerPrerequisitesStatusVerifier(statusChecker: statusChecker).checkStatus()
XCTAssertEqual(result, DataBrokerPrerequisitesStatus.invalidSystemPermission)
}

func testCorrectStatus_thenReturnValidStatus() {
let result = DefaultDataBrokerPrerequisitesStatusVerifier(statusChecker: statusChecker).checkStatus()
XCTAssertEqual(result, DataBrokerPrerequisitesStatus.valid)
}
}

private final class MockDBPLoginItemStatusChecker: DBPLoginItemStatusChecker {
var doesHavePermissionValue = true
var isInCorrectDirectoryValue = true

func doesHaveNecessaryPermissions() -> Bool {
return doesHavePermissionValue
}
func isInCorrectDirectory() -> Bool {
return isInCorrectDirectoryValue
}

func reset() {
doesHavePermissionValue = true
isInCorrectDirectoryValue = true
}
}

0 comments on commit 1631a6c

Please sign in to comment.