-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy pathRepositoryTests.swift
112 lines (88 loc) · 4.57 KB
/
RepositoryTests.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//
// Repository.swift
// XcodeServerSDK
//
// Created by Mateusz Zając on 28.06.2015.
// Copyright © 2015 Honza Dvorsky. All rights reserved.
//
import XCTest
import XcodeServerSDK
class RepositoryTests: XCTestCase {
let json = [
"readAccessExternalIDs": [],
"writeAccessExternalIDs": [
"FDF283F5-B9C3-4B43-9000-EF6A54934D4E",
"ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050"
],
"name": "Test",
"posixPermissions": 1,
"httpAccessType": 1
]
// MARK: Initialization
func testInit() throws {
let repo = try Repository(json: json)
XCTAssertEqual(repo.name, "Test")
XCTAssertEqual(repo.httpAccess, Repository.HTTPAccessType.LoggedIn)
XCTAssertEqual(repo.sshAccess, Repository.SSHAccessType.LoggedInReadSelectedWrite)
XCTAssertEqual(repo.writeAccessExternalIds, [ "FDF283F5-B9C3-4B43-9000-EF6A54934D4E", "ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050" ])
XCTAssertEqual(repo.readAccessExternalIds, [])
}
func testManualInit() {
let repo = Repository(name: "Test", httpAccess: .LoggedIn, sshAccess: .LoggedInReadSelectedWrite, writeAccessExternalIds: [ "FDF283F5-B9C3-4B43-9000-EF6A54934D4E", "ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050" ], readAccessExternalIds: [])
XCTAssertEqual(repo.name, "Test")
XCTAssertEqual(repo.httpAccess, Repository.HTTPAccessType.LoggedIn)
XCTAssertEqual(repo.sshAccess, Repository.SSHAccessType.LoggedInReadSelectedWrite)
XCTAssertEqual(repo.writeAccessExternalIds, [ "FDF283F5-B9C3-4B43-9000-EF6A54934D4E", "ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050" ])
XCTAssertEqual(repo.readAccessExternalIds, [])
}
func testConvenienceInit() {
let repo = Repository(name: "Test")
XCTAssertEqual(repo.name, "Test")
XCTAssertEqual(repo.httpAccess, Repository.HTTPAccessType.None)
XCTAssertEqual(repo.sshAccess, Repository.SSHAccessType.LoggedInReadWrite)
XCTAssertEqual(repo.writeAccessExternalIds, [])
XCTAssertEqual(repo.readAccessExternalIds, [])
}
// MARK: JSONifying
func testDictionarify() {
let repo = Repository(name: "Test", httpAccess: .LoggedIn, sshAccess: .LoggedInReadSelectedWrite, writeAccessExternalIds: [ "FDF283F5-B9C3-4B43-9000-EF6A54934D4E", "ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050" ], readAccessExternalIds: [])
XCTAssertEqual(repo.dictionarify(), json)
}
// MARK: Enum tests
func testHTTPEnum() {
var httpEnum = Repository.HTTPAccessType.None
XCTAssertEqual(httpEnum.toString(), "No users are not allowed to read or write")
httpEnum = .LoggedIn
XCTAssertEqual(httpEnum.toString(), "Logged in users are allowed to read and write")
}
func testSSHEnum() {
var sshEnum = Repository.SSHAccessType.SelectedReadWrite
XCTAssertEqual(sshEnum.toString(), "Only selected users can read and/or write")
sshEnum = .LoggedInReadSelectedWrite
XCTAssertEqual(sshEnum.toString(), "Only selected users can write but all logged in can read")
sshEnum = .LoggedInReadWrite
XCTAssertEqual(sshEnum.toString(), "All logged in users can read and write")
}
// MARK: API Routes tests
func testGetRepositories() {
let expectation = self.expectationWithDescription("Get Repositories")
let server = self.getRecordingXcodeServer("get_repositories")
server.getRepositories() { (repositories, error) in
XCTAssertNil(error, "Error should be nil")
XCTAssertNotNil(repositories, "Repositories shouldn't be nil")
if let repos = repositories {
XCTAssertEqual(repos.count, 2, "There should be two repositories available")
let reposNames = Set(repos.map { $0.name })
let reposSSHAccess = Set(repos.map { $0.sshAccess.rawValue })
let writeAccessExternalIDs = Set(repos.flatMap { $0.writeAccessExternalIds })
for (index, _) in repos.enumerate() {
XCTAssertTrue(reposNames.contains("Test\(index + 1)"))
XCTAssertTrue(reposSSHAccess.elementsEqual(Set([2, 0])))
XCTAssertTrue(writeAccessExternalIDs.elementsEqual(Set([ "ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050", "D024C308-CEBE-4E72-BE40-E1E4115F38F9" ])))
}
}
expectation.fulfill()
}
self.waitForExpectationsWithTimeout(10.0, handler: nil)
}
}