Skip to content

Commit 8d83cf7

Browse files
authored
Merge pull request #39 from brokenhandsio/remove-admin-user
Remove admin user
2 parents 2a0604f + 4d4d3eb commit 8d83cf7

File tree

11 files changed

+38
-51
lines changed

11 files changed

+38
-51
lines changed

Sources/SteamPress/Extensions/String+Random.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Crypto
22

33
extension String {
4-
static func random(length: Int = 12) throws -> String {
4+
public static func random(length: Int = 12) throws -> String {
55
let randomData = try CryptoRandom().generateData(count: length)
66
let randomString = randomData.base64EncodedString()
77
return randomString

Sources/SteamPress/Provider.swift

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -84,22 +84,9 @@ public struct Provider: Vapor.Provider {
8484
try sessionedRoutes.register(collection: blogAdminController)
8585
return .done(on: container)
8686
}
87-
87+
8888
public func didBoot(_ container: Container) throws -> EventLoopFuture<Void> {
89-
let userRepository = try container.make(BlogUserRepository.self)
90-
return userRepository.getAllUsers(on: container).flatMap { users in
91-
if users.count == 0 {
92-
let passwordHasher = try container.make(PasswordHasher.self)
93-
let password = try String.random()
94-
let logger = try container.make(Logger.self)
95-
logger.info("Admin's password is \(password)")
96-
let passwordHash = try passwordHasher.hash(password)
97-
let adminUser = BlogUser(name: "Admin", username: "admin", password: passwordHash, profilePicture: nil, twitterHandle: nil, biography: nil, tagline: nil)
98-
return userRepository.save(adminUser, on: container).transform(to: ())
99-
} else {
100-
return .done(on: container)
101-
}
102-
}
89+
return .done(on: container)
10390
}
10491

10592
}

Tests/SteamPressTests/AdminTests/AdminPageTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class AdminPageTests: XCTestCase {
1717
XCTAssertEqual(presenter.adminViewPosts?.count, 2)
1818
XCTAssertEqual(presenter.adminViewPosts?.first?.title, testData2.post.title)
1919
XCTAssertEqual(presenter.adminViewPosts?.last?.title, testData1.post.title)
20-
XCTAssertEqual(presenter.adminViewUsers?.count, 2)
20+
XCTAssertEqual(presenter.adminViewUsers?.count, 1)
2121
XCTAssertEqual(presenter.adminViewUsers?.last?.username, user.username)
2222

2323
XCTAssertEqual(presenter.adminViewPageInformation?.loggedInUser.username, user.username)

Tests/SteamPressTests/AdminTests/AdminPostTests.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,12 @@ class AdminPostTests: XCTestCase {
535535
let post = try createPostViaRequest(title: title)
536536
XCTAssertEqual(expectedSlugUrl, post.slugUrl)
537537
}
538+
539+
func testRandomStringHelperDoesntProduceTheSameStringKinda() throws {
540+
let string1 = try String.random()
541+
let string2 = try String.random()
542+
XCTAssertNotEqual(string1, string2)
543+
}
538544

539545
// MARK: - Helpers
540546

Tests/SteamPressTests/AdminTests/AdminUserTests.swift

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ class AdminUserTests: XCTestCase {
6767
let createData = CreateUserData()
6868
let response = try testWorld.getResponse(to: createUserPath, body: createData, loggedInUser: user)
6969

70-
// First is admin user, next is user created in setup, final is one just created
71-
XCTAssertEqual(testWorld.context.repository.users.count, 3)
70+
// First is user created in setup, final is one just created
71+
XCTAssertEqual(testWorld.context.repository.users.count, 2)
7272
let user = try XCTUnwrap(testWorld.context.repository.users.last)
7373
XCTAssertEqual(user.username, createData.username)
7474
XCTAssertEqual(user.name, createData.name)
@@ -141,8 +141,10 @@ class AdminUserTests: XCTestCase {
141141
let name = "Luke"
142142
let password = "password"
143143
let confirmPassword = "password"
144-
let username = "admin"
144+
let username = "lukes"
145145
}
146+
147+
_ = testWorld.createUser(username: "lukes")
146148

147149
let createData = CreateUserData()
148150
_ = try testWorld.getResponse(to: createUserPath, body: createData, loggedInUser: user)
@@ -159,8 +161,10 @@ class AdminUserTests: XCTestCase {
159161
let name = "Luke"
160162
let password = "password"
161163
let confirmPassword = "password"
162-
let username = "Admin"
164+
let username = "Lukes"
163165
}
166+
167+
_ = testWorld.createUser(username: "lukes")
164168

165169
let createData = CreateUserData()
166170
_ = try testWorld.getResponse(to: createUserPath, body: createData, loggedInUser: user)
@@ -373,7 +377,7 @@ class AdminUserTests: XCTestCase {
373377
let editData = EditUserData()
374378
let response = try testWorld.getResponse(to: "/admin/users/\(user.userID!)/edit", body: editData, loggedInUser: user)
375379

376-
XCTAssertEqual(testWorld.context.repository.users.count, 2)
380+
XCTAssertEqual(testWorld.context.repository.users.count, 1)
377381
let updatedUser = try XCTUnwrap(testWorld.context.repository.users.last)
378382
XCTAssertEqual(updatedUser.username, editData.username)
379383
XCTAssertEqual(updatedUser.name, editData.name)
@@ -396,7 +400,7 @@ class AdminUserTests: XCTestCase {
396400
let editData = EditUserData()
397401
let response = try testWorld.getResponse(to: "/admin/users/\(user.userID!)/edit", body: editData, loggedInUser: user)
398402

399-
XCTAssertEqual(testWorld.context.repository.users.count, 2)
403+
XCTAssertEqual(testWorld.context.repository.users.count, 1)
400404
let updatedUser = try XCTUnwrap(testWorld.context.repository.users.last)
401405
XCTAssertEqual(updatedUser.username, editData.username)
402406
XCTAssertEqual(updatedUser.name, editData.name)
@@ -420,7 +424,7 @@ class AdminUserTests: XCTestCase {
420424
let editData = EditUserData()
421425
let response = try testWorld.getResponse(to: "/admin/users/\(user.userID!)/edit", body: editData, loggedInUser: user)
422426

423-
XCTAssertEqual(testWorld.context.repository.users.count, 2)
427+
XCTAssertEqual(testWorld.context.repository.users.count, 1)
424428
let updatedUser = try XCTUnwrap(testWorld.context.repository.users.last)
425429
XCTAssertTrue(updatedUser.resetPasswordRequired)
426430
XCTAssertEqual(updatedUser.userID, user.userID)
@@ -439,7 +443,7 @@ class AdminUserTests: XCTestCase {
439443
let editData = EditUserData()
440444
let response = try testWorld.getResponse(to: "/admin/users/\(user.userID!)/edit", body: editData, loggedInUser: user)
441445

442-
XCTAssertEqual(testWorld.context.repository.users.count, 2)
446+
XCTAssertEqual(testWorld.context.repository.users.count, 1)
443447
let updatedUser = try XCTUnwrap(testWorld.context.repository.users.last)
444448
XCTAssertFalse(updatedUser.resetPasswordRequired)
445449
XCTAssertEqual(updatedUser.userID, user.userID)
@@ -459,7 +463,7 @@ class AdminUserTests: XCTestCase {
459463
let editData = EditUserData()
460464
let response = try testWorld.getResponse(to: "/admin/users/\(user.userID!)/edit", body: editData, loggedInUser: user)
461465

462-
XCTAssertEqual(testWorld.context.repository.users.count, 2)
466+
XCTAssertEqual(testWorld.context.repository.users.count, 1)
463467
let updatedUser = try XCTUnwrap(testWorld.context.repository.users.last)
464468
XCTAssertEqual(updatedUser.password, editData.password)
465469
XCTAssertEqual(updatedUser.userID, user.userID)
@@ -595,7 +599,7 @@ class AdminUserTests: XCTestCase {
595599

596600
XCTAssertEqual(response.http.status, .seeOther)
597601
XCTAssertEqual(response.http.headers[.location].first, "/admin/")
598-
XCTAssertEqual(testWorld.context.repository.users.count, 2)
602+
XCTAssertEqual(testWorld.context.repository.users.count, 1)
599603
XCTAssertNotEqual(testWorld.context.repository.users.last?.name, "Han")
600604
}
601605

@@ -607,17 +611,17 @@ class AdminUserTests: XCTestCase {
607611

608612
let viewErrors = try XCTUnwrap(presenter.adminViewErrors)
609613
XCTAssertTrue(viewErrors.contains("You cannot delete yourself whilst logged in"))
610-
XCTAssertEqual(testWorld.context.repository.users.count, 3)
614+
XCTAssertEqual(testWorld.context.repository.users.count, 2)
611615

612616
XCTAssertEqual(presenter.adminViewPosts?.count, 1)
613617
XCTAssertEqual(presenter.adminViewPosts?.first?.title, testData.post.title)
614-
XCTAssertEqual(presenter.adminViewUsers?.count, 3)
618+
XCTAssertEqual(presenter.adminViewUsers?.count, 2)
615619
XCTAssertEqual(presenter.adminViewUsers?.last?.username, user2.username)
616620
}
617621

618622
func testCannotDeleteLastUser() throws {
619623
testWorld = try TestWorld.create()
620-
let adminUser = try XCTUnwrap(testWorld.context.repository.users.first)
624+
let adminUser = testWorld.createUser(name: "Admin", username: "admin")
621625
let testData = try testWorld.createPost(author: adminUser)
622626
_ = try testWorld.getResponse(to: "/admin/users/\(adminUser.userID!)/delete", body: EmptyContent(), loggedInUser: adminUser)
623627

Tests/SteamPressTests/AdminTests/LoginTests.swift

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,6 @@ class LoginTests: XCTestCase {
8080
let loginWarning = try XCTUnwrap(blogPresenter.loginWarning)
8181
XCTAssertTrue(loginWarning)
8282
}
83-
84-
func testAdminUserCreatedOnFirstBootIfSpecified() throws {
85-
testWorld = try TestWorld.create()
86-
XCTAssertEqual(testWorld.context.repository.users.count, 1)
87-
}
8883

8984
func testPresenterGetsCorrectInformationForResetPasswordPage() throws {
9085
_ = try testWorld.getResponse(to: "/blog/admin/resetPassword", loggedInUser: user)

Tests/SteamPressTests/BlogTests/AuthorTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class AuthorTests: XCTestCase {
3636
_ = try testWorld.createPost(author: newAuthor)
3737
_ = try testWorld.getResponse(to: allAuthorsRequestPath)
3838

39-
XCTAssertEqual(presenter.allAuthors?.count, 3)
39+
XCTAssertEqual(presenter.allAuthors?.count, 2)
4040
XCTAssertEqual(presenter.allAuthorsPostCount?[newAuthor.userID!], 2)
4141
XCTAssertEqual(presenter.allAuthorsPostCount?[user.userID!], 1)
4242
XCTAssertEqual(presenter.allAuthors?.last?.name, user.name)

Tests/SteamPressTests/BlogTests/IndexTests.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,8 @@ class IndexTests: XCTestCase {
120120
}
121121

122122
func testIndexPageInformationGetsLoggedInUser() throws {
123-
let user = testWorld.createUser()
124-
_ = try testWorld.getResponse(to: blogIndexPath, loggedInUser: user)
125-
XCTAssertEqual(presenter.indexPageInformation?.loggedInUser?.username, user.username)
123+
_ = try testWorld.getResponse(to: blogIndexPath, loggedInUser: firstData.author)
124+
XCTAssertEqual(presenter.indexPageInformation?.loggedInUser?.username, firstData.author.username)
126125
}
127126

128127
func testSettingEnvVarsWithPageInformation() throws {

Tests/SteamPressTests/BlogTests/PostTests.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,8 @@ class PostTests: XCTestCase {
4747
}
4848

4949
func testPostPageInformationGetsLoggedInUser() throws {
50-
let user = testWorld.createUser()
51-
_ = try testWorld.getResponse(to: blogPostPath, loggedInUser: user)
52-
XCTAssertEqual(presenter.postPageInformation?.loggedInUser?.username, user.username)
50+
_ = try testWorld.getResponse(to: blogPostPath, loggedInUser: firstData.author)
51+
XCTAssertEqual(presenter.postPageInformation?.loggedInUser?.username, firstData.author.username)
5352
}
5453

5554
func testSettingEnvVarsWithPageInformation() throws {

Tests/SteamPressTests/BlogTests/SearchTests.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,8 @@ class SearchTests: XCTestCase {
6161
}
6262

6363
func testPageInformationGetsLoggedInUserForSearch() throws {
64-
let user = testWorld.createUser()
65-
_ = try testWorld.getResponse(to: "/search?term=Test", loggedInUser: user)
66-
XCTAssertEqual(presenter.searchPageInformation?.loggedInUser?.username, user.username)
64+
_ = try testWorld.getResponse(to: "/search?term=Test", loggedInUser: firstData.author)
65+
XCTAssertEqual(presenter.searchPageInformation?.loggedInUser?.username, firstData.author.username)
6766
}
6867

6968
func testSettingEnvVarsWithPageInformationForSearch() throws {

0 commit comments

Comments
 (0)