Skip to content

Commit

Permalink
Add more extensive test for AutoRenamer (#101)
Browse files Browse the repository at this point in the history
* Add more extensive test

Signed-off-by: Milen Pivchev <[email protected]>

* Force check

Signed-off-by: Milen Pivchev <[email protected]>

* Revert "Force check"

This reverts commit b7fadf6.

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

---------

Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>
  • Loading branch information
mpivchev and marinofaggiana authored Nov 6, 2024
1 parent 1c4389d commit a5b6f5c
Show file tree
Hide file tree
Showing 8 changed files with 409 additions and 229 deletions.
71 changes: 0 additions & 71 deletions .github/workflows/xcode.xxx

This file was deleted.

96 changes: 96 additions & 0 deletions .github/workflows/xcode.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: GPL-3.0-or-later
name: Build and test

on:
push:
branches:
- master
- develop
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
branches:
- master
- develop

env:
DESTINATION_IOS: platform=iOS Simulator,name=iPhone 16,OS=18.1
DESTINATION_MACOS: platform=macOS,arch=x86_64
SCHEME: NextcloudKit
SERVER_BRANCH: stable28
PHP_VERSION: 8.2

jobs:
build-and-test:
name: Build and Test
runs-on: macos-15
if: github.event.pull_request.draft == false
steps:
- name: Set env var
run: echo "DEVELOPER_DIR=$(xcode-select --print-path)" >> $GITHUB_ENV
- uses: actions/checkout@v4

- name: Set up php ${{ env.PHP_VERSION }}
uses: shivammathur/setup-php@8872c784b04a1420e81191df5d64fbd59d3d3033 # v2.30.0
with:
php-version: ${{ env.PHP_VERSION }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: apcu, bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, pgsql, pdo_pgsql
coverage: none
ini-file: development
# Temporary workaround for missing pcntl_* in PHP 8.3: ini-values: apc.enable_cli=on
ini-values: apc.enable_cli=on, disable_functions=

- name: Checkout server
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
submodules: true
repository: nextcloud/server
path: server
ref: ${{ env.SERVER_BRANCH }}

- name: Set up Nextcloud
run: |
mkdir server/data
./server/occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
./server/occ config:system:set hashing_default_password --value=true --type=boolean
./server/occ config:system:set auth.bruteforce.protection.enabled --value false --type bool
./server/occ config:system:set ratelimit.protection.enabled --value false --type bool
./server/occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
./server/occ config:system:set memcache.distributed --value="\\OC\\Memcache\\APCu"
./server/occ background:cron
PHP_CLI_SERVER_WORKERS=5 php -S localhost:8080 -t server/ &
# - name: Setup Bundler and Install Gems
# run: |
# gem install bundler
# bundle install
# bundle update
# - name: Install docker
# run: |
# # Workaround for https://github.com/actions/runner-images/issues/8104
# brew remove --ignore-dependencies qemu
# curl -o ./qemu.rb https://raw.githubusercontent.com/Homebrew/homebrew-core/dc0669eca9479e9eeb495397ba3a7480aaa45c2e/Formula/qemu.rb
# brew install ./qemu.rb
#
# brew install docker
# colima start
# - name: Create docker test server and export enviroment variables
# run: |
# source ./create-docker-test-server.sh
# if [ ! -f ".env-vars" ]; then
# touch .env-vars
# echo "export TEST_SERVER_URL=$TEST_SERVER_URL" >> .env-vars
# echo "export TEST_USER=$TEST_USER" >> .env-vars
# echo "export TEST_APP_PASSWORD=$TEST_APP_PASSWORD" >> .env-vars
# fi
# - name: Generate EnvVars file
# run: |
# ./generate-env-vars.sh
- name: Build & Test NextcloudKit
run: |
set -o pipefail && xcodebuild test -scheme "$SCHEME" \
-destination "$DESTINATION_IOS" \
-test-iterations 3 \
-retry-tests-on-failure \
| xcpretty
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,7 @@
import XCTest
@testable import NextcloudKit

class BaseIntegrationXCTestCase: XCTestCase {
internal let baseUrl = EnvVars.testServerUrl
internal let user = EnvVars.testUser
internal let userId = EnvVars.testUser
internal let password = EnvVars.testAppPassword
internal lazy var account = "\(userId) \(baseUrl)"
class BaseIntegrationXCTestCase: BaseXCTestCase {
internal var randomInt: Int {
get {
return Int.random(in: 1000...Int.max)
Expand Down
33 changes: 33 additions & 0 deletions Tests/NextcloudKitIntegrationTests/Common/BaseXCTestCase.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// SPDX-FileCopyrightText: Nextcloud GmbH
// SPDX-FileCopyrightText: 2024 Milen Pivchev
// SPDX-License-Identifier: GPL-3.0-or-later

import XCTest
import Foundation
import UIKit
import Alamofire
import NextcloudKit

class BaseXCTestCase: XCTestCase {
var appToken = ""

func setupAppToken() {
let expectation = expectation(description: "Should get app token")

NextcloudKit.shared.getAppPassword(url: TestConstants.server, user: TestConstants.username, password: TestConstants.password) { token, _, error in
XCTAssertEqual(error.errorCode, 0)
XCTAssertNotNil(token)

guard let token else { return XCTFail() }

self.appToken = token
expectation.fulfill()
}

waitForExpectations(timeout: TestConstants.timeoutLong)
}

override func setUpWithError() throws {
setupAppToken()
}
}
14 changes: 14 additions & 0 deletions Tests/NextcloudKitIntegrationTests/Common/TestConstants.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// SPDX-FileCopyrightText: Nextcloud GmbH
// SPDX-FileCopyrightText: 2024 Milen Pivchev
// SPDX-License-Identifier: GPL-3.0-or-later

import Foundation
import UIKit

public class TestConstants {
static let timeoutLong: Double = 400
static let server = "http://localhost:8080"
static let username = "admin"
static let password = "admin"
static let account = "\(username) \(server)"
}
34 changes: 17 additions & 17 deletions Tests/NextcloudKitIntegrationTests/FilesIntegrationTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ import XCTest
@testable import NextcloudKit

final class FilesIntegrationTests: BaseIntegrationXCTestCase {
func test_createReadDeleteFolder_withProperParams_shouldCreateReadDeleteFolder() throws {
let expectation = expectation(description: "Should finish last callback")
let folderName = "TestFolder\(randomInt)"
let serverUrl = "\(baseUrl)/remote.php/dav/files/\(userId)"
let serverUrlFileName = "\(serverUrl)/\(folderName)"

NextcloudKit.shared.appendSession(account: account, urlBase: baseUrl, user: user, userId: userId, password: password, userAgent: "", nextcloudVersion: 0, groupIdentifier: "")

// func test_createReadDeleteFolder_withProperParams_shouldCreateReadDeleteFolder() throws {
// let expectation = expectation(description: "Should finish last callback")
// let folderName = "TestFolder\(randomInt)"
// let serverUrl = "\(TestConstants.server)/remote.php/dav/files/\(TestConstants.username)"
// let serverUrlFileName = "\(serverUrl)/\(folderName)"
//
// NextcloudKit.shared.appendSession(account: TestConstants.account, urlBase: TestConstants.server, user: TestConstants.username, userId: TestConstants.username, password: TestConstants.password, userAgent: "", nextcloudVersion: 0, groupIdentifier: "")
//
// // Test creating folder
// NextcloudKit.shared.createFolder(serverUrlFileName: serverUrlFileName, account: account) { account, ocId, date, error in
// XCTAssertEqual(self.account, account)
// NextcloudKit.shared.createFolder(serverUrlFileName: serverUrlFileName, account: TestConstants.account) { account, ocId, date, _, error in
// XCTAssertEqual(TestConstants.account, account)
//
// XCTAssertEqual(NKError.success.errorCode, error.errorCode)
// XCTAssertEqual(NKError.success.errorDescription, error.errorDescription)
Expand All @@ -25,16 +25,16 @@ final class FilesIntegrationTests: BaseIntegrationXCTestCase {
//
// // Test reading folder, should exist
// NextcloudKit.shared.readFileOrFolder(serverUrlFileName: serverUrlFileName, depth: "0", account: account) { account, files, data, error in
// XCTAssertEqual(self.account, account)
// XCTAssertEqual(TestConstants.account, account)
// XCTAssertEqual(NKError.success.errorCode, error.errorCode)
// XCTAssertEqual(NKError.success.errorDescription, error.errorDescription)
// XCTAssertEqual(files?[0].fileName, folderName)
//
// Thread.sleep(forTimeInterval: 0.2)
//
// // Test deleting folder
// NextcloudKit.shared.deleteFileOrFolder(serverUrlFileName: serverUrlFileName, account: account) { account, error in
// XCTAssertEqual(self.account, account)
// NextcloudKit.shared.deleteFileOrFolder(serverUrlFileName: serverUrlFileName, account: account) { account, _, error in
// XCTAssertEqual(TestConstants.account, account)
// XCTAssertEqual(NKError.success.errorCode, error.errorCode)
// XCTAssertEqual(NKError.success.errorDescription, error.errorDescription)
//
Expand All @@ -45,13 +45,13 @@ final class FilesIntegrationTests: BaseIntegrationXCTestCase {
// defer { expectation.fulfill() }
//
// XCTAssertEqual(404, error.errorCode)
// XCTAssertEqual(self.account, account)
// XCTAssertEqual(TestConstants.account, account)
// XCTAssertTrue(files?.isEmpty ?? false)
// }
// }
// }
// }

waitForExpectations(timeout: 100)
}
//
// waitForExpectations(timeout: 100)
// }
}
30 changes: 15 additions & 15 deletions Tests/NextcloudKitIntegrationTests/ShareIntegrationTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@ import Alamofire
@testable import NextcloudKit

final class ShareIntegrationTests: BaseIntegrationXCTestCase {
func test_createShare_withNote_shouldCreateShare() throws {
let expectation = expectation(description: "Should finish last callback")

let folderName = "Share\(randomInt)"
let serverUrl = "\(baseUrl)/remote.php/dav/files/\(userId)"
let serverUrlFileName = "\(serverUrl)/\(folderName)"

NextcloudKit.shared.appendSession(account: account, urlBase: baseUrl, user: user, userId: userId, password: password, userAgent: "", nextcloudVersion: 0, groupIdentifier: "")

// NextcloudKit.shared.createFolder(serverUrlFileName: serverUrlFileName, account: account) { account, ocId, date, error in
// XCTAssertEqual(self.account, account)
// func test_createShare_withNote_shouldCreateShare() throws {
// let expectation = expectation(description: "Should finish last callback")
//
// let folderName = "Share\(randomInt)"
// let serverUrl = "\(TestConstants.server)/remote.php/dav/files/\(TestConstants.username)"
// let serverUrlFileName = "\(serverUrl)/\(folderName)"
//
// NextcloudKit.shared.appendSession(account: TestConstants.account, urlBase: TestConstants.server, user: TestConstants.username, userId: TestConstants.username, password: TestConstants.password, userAgent: "", nextcloudVersion: 0, groupIdentifier: "")
//
// NextcloudKit.shared.createFolder(serverUrlFileName: serverUrlFileName, account: TestConstants.account) { account, ocId, date, _, error in
// XCTAssertEqual(TestConstants.account, account)
//
// XCTAssertEqual(NKError.success.errorCode, error.errorCode)
// XCTAssertEqual(NKError.success.errorDescription, error.errorDescription)
Expand All @@ -29,13 +29,13 @@ final class ShareIntegrationTests: BaseIntegrationXCTestCase {
// NextcloudKit.shared.createShare(path: folderName, shareType: 0, shareWith: "nextcloud", note: note, account: "") { account, share, data, error in
// defer { expectation.fulfill() }
//
// XCTAssertEqual(self.account, account)
// XCTAssertEqual(TestConstants.account, account)
// XCTAssertEqual(NKError.success.errorCode, error.errorCode)
// XCTAssertEqual(NKError.success.errorDescription, error.errorDescription)
// XCTAssertEqual(note, share?.note)
// }
// }

waitForExpectations(timeout: 100)
}
//
// waitForExpectations(timeout: 100)
// }
}
Loading

0 comments on commit a5b6f5c

Please sign in to comment.