mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-15 08:53:07 +09:00
63 lines
2.4 KiB
Swift
63 lines
2.4 KiB
Swift
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
@testable import Account
|
|
import Shared
|
|
import UIKit
|
|
|
|
import XCTest
|
|
|
|
class FirefoxAccountTests: XCTestCase {
|
|
override func setUp() {
|
|
super.setUp()
|
|
continueAfterFailure = false
|
|
}
|
|
|
|
func testSerialization() {
|
|
let ogPushSub = PushSubscription(channelID: "channel-id",
|
|
endpoint: URL(string: "https://mozilla.com")!,
|
|
p256dhPrivateKey: "private-key",
|
|
p256dhPublicKey: "public-key",
|
|
authKey: "auth-key")
|
|
|
|
let d: [String: Any] = [
|
|
"version": 1,
|
|
"configurationLabel": FirefoxAccountConfigurationLabel.production.rawValue,
|
|
"email": "testtest@test.com",
|
|
"uid": "uid",
|
|
"deviceRegistration": FxADeviceRegistration(id: "bogus-device", version: 0, lastRegistered: Date.now()),
|
|
"pushRegistration": PushRegistration(uaid: "bogus-device-uaid", secret: "secret", subscription: ogPushSub),
|
|
]
|
|
|
|
let account1 = FirefoxAccount(
|
|
configuration: FirefoxAccountConfigurationLabel.production.toConfiguration(),
|
|
email: d["email"] as! String,
|
|
uid: d["uid"] as! String,
|
|
deviceRegistration: (d["deviceRegistration"] as! FxADeviceRegistration),
|
|
stateKeyLabel: Bytes.generateGUID(),
|
|
state: SeparatedState())
|
|
|
|
account1.pushRegistration = d["pushRegistration"] as? PushRegistration
|
|
|
|
let d1 = account1.dictionary()
|
|
|
|
let account2 = FirefoxAccount.fromDictionary(d1)
|
|
XCTAssertNotNil(account2)
|
|
let d2 = account2!.dictionary()
|
|
|
|
for (k, v) in d {
|
|
// Skip version, which is an Int.
|
|
if let s = v as? String {
|
|
XCTAssertEqual(s, d1[k] as? String, "Value for '\(k)' does not agree for manually created account.")
|
|
XCTAssertEqual(s, d2[k] as? String, "Value for '\(k)' does not agree for deserialized account.")
|
|
}
|
|
}
|
|
|
|
if let pubSub = account2?.pushRegistration?.defaultSubscription {
|
|
XCTAssertEqual(pubSub, ogPushSub)
|
|
} else {
|
|
XCTFail("PushSubscription did not get decoded")
|
|
}
|
|
}
|
|
}
|