blob: dcb5545697acd8855c8ba4ba42ae34d0621f00a4 [file] [log] [blame]
//
// User_Tests.swift
// UsergridSDK
//
// Created by Robert Walsh on 9/14/15.
//
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. The ASF licenses this file to You
* 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. For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*
*/
import XCTest
import CoreLocation
@testable import UsergridSDK
class User_Tests: XCTestCase {
var user: UsergridUser!
static let name = "Robert Walsh"
static let age = 29
static let email = "handsomeRob741@yahoo.com"
static let username = "rwalsh"
static let password = "password"
static let resetPassword = "password111"
static let picture = "http://www.gravatar.com/avatar/e466d447df831ddce35fbc50763fb03a"
static let activated = true
static let disabled = false
override func setUp() {
super.setUp()
Usergrid.initSharedInstance(orgId:ClientCreationTests.orgId, appId: ClientCreationTests.appId)
Usergrid.persistCurrentUserInKeychain = false
user = UsergridUser(name:"a_bogus_name", email:User_Tests.email, username:User_Tests.username, password:User_Tests.password)
user.name = User_Tests.name
user.age = User_Tests.age
user.location = CLLocation(latitude: -90, longitude: 100)
user.picture = User_Tests.picture
user.activated = User_Tests.activated
user.disabled = User_Tests.disabled
}
override func tearDown() {
Usergrid._sharedClient = nil
super.tearDown()
}
func test_USER_INIT() {
user = UsergridUser(email: User_Tests.email, password: User_Tests.password)
XCTAssertNotNil(user)
XCTAssertNotNil(user.email)
XCTAssertNotNil(user.password)
XCTAssertEqual(user.email!, User_Tests.email)
XCTAssertEqual(user.usernameOrEmail!, User_Tests.email)
XCTAssertEqual(user.password!, User_Tests.password)
XCTAssertFalse(user.activated)
XCTAssertFalse(user.disabled)
user = UsergridUser(name: User_Tests.name, propertyDict: ["password":User_Tests.password])
XCTAssertNotNil(user)
XCTAssertNotNil(user.name)
XCTAssertNotNil(user.password)
XCTAssertEqual(user.name!, User_Tests.name)
XCTAssertEqual(user.password!, User_Tests.password)
XCTAssertFalse(user.activated)
XCTAssertFalse(user.disabled)
user = UsergridUser(name:User_Tests.name, email: User_Tests.email, password: User_Tests.password)
XCTAssertNotNil(user)
XCTAssertNotNil(user.name)
XCTAssertNotNil(user.email)
XCTAssertNotNil(user.password)
XCTAssertEqual(user.name!, User_Tests.name)
XCTAssertEqual(user.email!, User_Tests.email)
XCTAssertEqual(user.usernameOrEmail!, User_Tests.email)
XCTAssertEqual(user.password!, User_Tests.password)
XCTAssertFalse(user.activated)
XCTAssertFalse(user.disabled)
user = UsergridUser(username: User_Tests.username, password: User_Tests.password)
XCTAssertNotNil(user)
XCTAssertNotNil(user.username)
XCTAssertNotNil(user.password)
XCTAssertEqual(user.username!, User_Tests.username)
XCTAssertEqual(user.usernameOrEmail!, User_Tests.username)
XCTAssertEqual(user.password!, User_Tests.password)
XCTAssertFalse(user.activated)
XCTAssertFalse(user.disabled)
user = UsergridUser(name: User_Tests.name, username: User_Tests.username, password: User_Tests.password)
XCTAssertNotNil(user)
XCTAssertNotNil(user.name)
XCTAssertNotNil(user.username)
XCTAssertNotNil(user.password)
XCTAssertEqual(user.name!, User_Tests.name)
XCTAssertEqual(user.username!, User_Tests.username)
XCTAssertEqual(user.usernameOrEmail!, User_Tests.username)
XCTAssertEqual(user.password!, User_Tests.password)
XCTAssertFalse(user.activated)
XCTAssertFalse(user.disabled)
}
func test_USERS_AND_PROPERTIES_NOT_NIL() {
XCTAssertNotNil(user)
XCTAssertNotNil(user.name)
XCTAssertNotNil(user.age)
XCTAssertNotNil(user.username)
XCTAssertNotNil(user.email)
XCTAssertNotNil(user.password)
XCTAssertNotNil(user.picture)
XCTAssertNotNil(user.activated)
XCTAssertNotNil(user.disabled)
}
func test_USER_PROPERTIES_WITH_HELPERS() {
user["uuid"] = User_Tests.age
XCTAssertNil(user.uuid)
XCTAssertEqual(user.name!, User_Tests.name)
XCTAssertEqual(user.age!, User_Tests.age)
XCTAssertEqual(user.username!, User_Tests.username)
XCTAssertEqual(user.email!, User_Tests.email)
XCTAssertEqual(user.password!, User_Tests.password)
XCTAssertEqual(user.picture!, User_Tests.picture)
XCTAssertTrue(user.activated)
XCTAssertFalse(user.disabled)
}
func test_USER_PROPERTIES_WITHOUT_HELPERS() {
XCTAssertEqual(user[UsergridUserProperties.Name.stringValue]! as? String, User_Tests.name)
XCTAssertEqual(user[UsergridUserProperties.Age.stringValue]! as? Int, User_Tests.age)
XCTAssertEqual(user[UsergridUserProperties.Username.stringValue]! as? String, User_Tests.username)
XCTAssertEqual(user[UsergridUserProperties.Email.stringValue]! as? String, User_Tests.email)
XCTAssertEqual(user[UsergridUserProperties.Password.stringValue]! as? String, User_Tests.password)
XCTAssertEqual(user[UsergridUserProperties.Picture.stringValue]! as? String, User_Tests.picture)
XCTAssertTrue(user[UsergridUserProperties.Activated.stringValue]! as! Bool)
XCTAssertFalse(user[UsergridUserProperties.Disabled.stringValue]! as! Bool)
}
func deleteUser(expectation:XCTestExpectation) {
self.user.remove() { removeResponse in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNotNil(removeResponse)
XCTAssertTrue(removeResponse.ok)
XCTAssertNotNil(removeResponse.user)
XCTAssertNotNil(removeResponse.users)
print(removeResponse.error)
expectation.fulfill()
}
}
func test_CREATE_AND_DELETE_USER() {
let userExpect = self.expectationWithDescription("\(#function)")
user.save() { (createResponse) in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNotNil(createResponse)
XCTAssertTrue(createResponse.ok)
XCTAssertNotNil(createResponse.user)
XCTAssertNotNil(createResponse.users)
if let createdUser = createResponse.user {
XCTAssertTrue(createdUser.isUser)
XCTAssertNotNil(createdUser.uuid)
XCTAssertNotNil(createdUser.created)
XCTAssertNotNil(createdUser.modified)
XCTAssertNotNil(createdUser.location)
XCTAssertEqual(createdUser.name!, User_Tests.name)
XCTAssertEqual(createdUser.age!, User_Tests.age)
XCTAssertEqual(createdUser.username!, User_Tests.username)
XCTAssertEqual(createdUser.email!, User_Tests.email)
XCTAssertEqual(createdUser.picture!, User_Tests.picture)
XCTAssertTrue(createdUser.activated)
XCTAssertFalse(createdUser.disabled)
XCTAssertFalse(createdUser.hasAsset)
self.deleteUser(userExpect)
}
}
self.waitForExpectationsWithTimeout(100, handler: nil)
}
func test_AUTHENTICATE_USER() {
let userExpect = self.expectationWithDescription("\(#function)")
UsergridUser.checkAvailable(user.email, username: user.username) { error,available in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNil(error)
XCTAssertTrue(available)
self.user.create() { (createResponse) in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNotNil(createResponse)
XCTAssertTrue(createResponse.ok)
XCTAssertNotNil(createResponse.user)
XCTAssertNotNil(createResponse.users)
XCTAssertNotNil(self.user.uuid)
self.user.login(self.user.username!, password:User_Tests.password) { (auth, loggedInUser, error) -> Void in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNil(error)
XCTAssertNotNil(auth)
XCTAssertNotNil(loggedInUser)
XCTAssertEqual(auth, self.user.auth!)
Usergrid.authenticateUser(self.user.auth!) { auth,currentUser,error in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNil(error)
XCTAssertNotNil(auth)
XCTAssertEqual(auth, self.user.auth!)
XCTAssertNotNil(currentUser)
XCTAssertNotNil(Usergrid.currentUser)
XCTAssertEqual(currentUser, Usergrid.currentUser!)
self.user.reauthenticate() { auth, reauthedUser, error in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNil(error)
XCTAssertNotNil(auth)
XCTAssertEqual(auth, self.user.auth!)
XCTAssertNotNil(reauthedUser)
XCTAssertNotNil(Usergrid.currentUser)
self.user.logout() { response in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNotNil(response)
XCTAssertTrue(response.ok)
XCTAssertNil(response.error)
self.deleteUser(userExpect)
}
}
}
}
}
}
self.waitForExpectationsWithTimeout(100, handler: nil)
}
func test_RESET_USER_PASSWORD() {
let userExpect = self.expectationWithDescription("\(#function)")
user.create() { (createResponse) in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNotNil(createResponse)
XCTAssertTrue(createResponse.ok)
XCTAssertNotNil(createResponse.user)
XCTAssertNotNil(createResponse.users)
XCTAssertNotNil(self.user.uuid)
self.user.login(self.user.username!, password:User_Tests.password) { (auth, loggedInUser, error) -> Void in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNil(error)
XCTAssertNotNil(auth)
XCTAssertNotNil(loggedInUser)
XCTAssertEqual(auth, self.user.auth!)
self.user.resetPassword(User_Tests.password, new: User_Tests.resetPassword) { error,didSucceed in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertTrue(didSucceed)
XCTAssertNil(error)
self.user.login(self.user.username!, password:User_Tests.resetPassword) { (auth, loggedInUser, error) -> Void in
XCTAssertTrue(NSThread.isMainThread())
XCTAssertNil(error)
XCTAssertNotNil(auth)
XCTAssertNotNil(loggedInUser)
XCTAssertEqual(auth, self.user.auth!)
self.deleteUser(userExpect)
}
}
}
}
self.waitForExpectationsWithTimeout(100, handler: nil)
}
func test_DEVICE_CONNECTION() {
let userExpect = self.expectationWithDescription("\(#function)")
user.create() { createResponse in
XCTAssertNotNil(createResponse)
XCTAssertTrue(createResponse.ok)
XCTAssertNotNil(createResponse.user)
XCTAssertNotNil(createResponse.users)
XCTAssertNotNil(self.user.uuid)
self.user.connectToDevice() { connectResponse in
XCTAssertNotNil(connectResponse)
XCTAssertTrue(connectResponse.ok)
XCTAssertNil(connectResponse.error)
self.user.getConnectedDevice() { getConnectedDeviceResponse in
XCTAssertNotNil(getConnectedDeviceResponse)
XCTAssertTrue(getConnectedDeviceResponse.ok)
XCTAssertNil(getConnectedDeviceResponse.error)
XCTAssertNotNil(getConnectedDeviceResponse.entity)
if let responseEntity = getConnectedDeviceResponse.entity {
XCTAssertTrue(responseEntity is UsergridDevice)
}
self.user.disconnectFromDevice() { disconnectResponse in
XCTAssertNotNil(disconnectResponse)
XCTAssertTrue(disconnectResponse.ok)
XCTAssertNil(disconnectResponse.error)
self.deleteUser(userExpect)
}
}
}
}
self.waitForExpectationsWithTimeout(100, handler: nil)
}
func test_DEVICE_CONNECT_FAIL() {
let userExpect = self.expectationWithDescription("\(#function)")
user.create() { createResponse in
XCTAssertNotNil(createResponse)
XCTAssertTrue(createResponse.ok)
XCTAssertNotNil(createResponse.user)
XCTAssertNotNil(createResponse.users)
XCTAssertNotNil(self.user.uuid)
self.user.connectToDevice() { connectResponse in
XCTAssertNotNil(connectResponse)
XCTAssertTrue(connectResponse.ok)
XCTAssertNil(connectResponse.error)
self.user.getConnectedDevice() { getConnectedDeviceResponse in
XCTAssertNotNil(getConnectedDeviceResponse)
XCTAssertTrue(getConnectedDeviceResponse.ok)
XCTAssertNil(getConnectedDeviceResponse.error)
XCTAssertNotNil(getConnectedDeviceResponse.entity)
if let responseEntity = getConnectedDeviceResponse.entity {
XCTAssertTrue(responseEntity is UsergridDevice)
}
self.user.disconnectFromDevice() { disconnectResponse in
XCTAssertNotNil(disconnectResponse)
XCTAssertTrue(disconnectResponse.ok)
XCTAssertNil(disconnectResponse.error)
self.deleteUser(userExpect)
}
}
}
}
self.waitForExpectationsWithTimeout(100, handler: nil)
}
func test_USER_NSCODING() {
let userData = NSKeyedArchiver.archivedDataWithRootObject(user)
let newInstanceFromData = NSKeyedUnarchiver.unarchiveObjectWithData(userData) as? UsergridUser
XCTAssertNotNil(newInstanceFromData)
if let newInstance = newInstanceFromData {
XCTAssertEqual(user.uuid,newInstance.uuid)
XCTAssertEqual(user.uuidOrName,newInstance.uuidOrName)
XCTAssertEqual(user.uuidOrUsername,newInstance.uuidOrUsername)
XCTAssertEqual(user.auth,newInstance.auth)
XCTAssertEqual(user.created,newInstance.created)
XCTAssertEqual(user.modified,newInstance.modified)
XCTAssertEqual(user.location!.coordinate.longitude,newInstance.location!.coordinate.longitude)
XCTAssertEqual(user.location!.coordinate.latitude,newInstance.location!.coordinate.latitude)
XCTAssertEqual(user.name,newInstance.name)
XCTAssertEqual(user.age,newInstance.age)
XCTAssertEqual(user.username,newInstance.username)
XCTAssertEqual(user.email,newInstance.email)
XCTAssertEqual(user.picture,newInstance.picture)
XCTAssertEqual(user.activated,newInstance.activated)
XCTAssertEqual(user.disabled,newInstance.disabled)
XCTAssertEqual(user.hasAsset,newInstance.hasAsset)
}
}
}