Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
firefox-merge-…
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
/* 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/. */
import XCTest
import Storage
class CertTests: XCTestCase {
func testCertStore() {
let certStore = CertStore()
let origin1 = "www.mozilla.org:80"
let origin2 = "people.mozilla.org:80"
let cert1 = getCertificate("testcert1")
let cert2 = getCertificate("testcert2")
// Check that contains return false for certs not in store.
XCTAssertFalse(certStore.containsCertificate(cert1, forOrigin: origin1))
// Add a certificate.
certStore.addCertificate(cert1, forOrigin: origin1)
// Check that the cert is in the store.
XCTAssert(certStore.containsCertificate(cert1, forOrigin: origin1))
// Check that the cert is unique to the origin.
XCTAssertFalse(certStore.containsCertificate(cert1, forOrigin: origin2))
XCTAssertFalse(certStore.containsCertificate(cert2, forOrigin: origin1))
// Add a different certificate for the same origin.
certStore.addCertificate(cert2, forOrigin: origin1)
// Check that adding a cert for an existing origin doesn't do a replace.
XCTAssert(certStore.containsCertificate(cert1, forOrigin: origin1))
XCTAssert(certStore.containsCertificate(cert2, forOrigin: origin1))
// Check that adding an existing cert has no effect.
certStore.addCertificate(cert1, forOrigin: origin1)
XCTAssert(certStore.containsCertificate(cert1, forOrigin: origin1))
}
fileprivate func getCertificate(_ file: String) -> SecCertificate {
let path = Bundle(for: type(of: self)).path(forResource: file, ofType: "pem")
let data = try? Data(contentsOf: URL(fileURLWithPath: path!))
return SecCertificateCreateWithData(nil, data! as CFData)!
}
}