surrealpatch/util/cert/cert_test.go
2016-07-04 09:08:18 +01:00

141 lines
6.4 KiB
Go

// Copyright © 2016 Abcum Ltd
//
// Licensed 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.
package cert
import (
"os"
"testing"
. "github.com/smartystreets/goconvey/convey"
)
var enc = `-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIFFDCCAvygAwIBAgIIFF4HaGPiklwwDQYJKoZIhvcNAQENBQAwMDEOMAwGA1UE
ChMFQWJjdW0xHjAcBgNVBAMTFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0xNjA3
MDQwNzUxMTNaFw0yNjA3MDQwNzUxMTNaMC0xDjAMBgNVBAoTBUFiY3VtMRswGQYD
VQQDExJTZXJ2ZXIgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQC4eHcJGB0gS1MvBJsZXd6R8Ti50tMEBjqbeyv/cPDVpqtzajoEaPGr
21klOg4yushWdK6TxKTXHpTTP/JxbaomKS9lhuODqrglfxf3KVglaqoE7ZPUsihj
sh8bqI4Sy6Vx7OX2kOVZWm/R86se1HvmaPHfvokZqjcS+T0wvO3mozMgBqZU3Z9t
gyqyLbqKH0FpMscBd2gP4D69nzDwnQgb8BF1AG70905c7aGHOTgJqt/GGeIqiqjZ
62ApCDjaySh/oYfThCVxLn/QRXaZ2d6da6hOKOmSa82pvMmG5MnbwHdFIHCwDdyQ
FAQOuLUW1fVSrHDeDeocPg0RwJPRYSsFEHlbQAjW+xFA6E8iei6IzRc+l6ZmI0RM
L4MU1DuAbXSDc5RMtLrhK8mrwEcfrEfVY/w0Pm+LHmKUNenQK0PPNgQ6glqfP4wk
YsWCQ9gaqBZcQOyZwhxOxU9uUVFePIND1+dvhTijPVa+6tEMxqYJPzvlHBkIOnGM
g8AkzKKvW7i8a7FjrQ8AX83I54eN/uTx4xXMyO8q8bRONHqY4XgM0tvpP7NWKNyr
zDKc+zwPWMaFiuy8a+GSST/0HpPLtNa+DuWqtGnHDRBqVKuAVyU1Dm0CR6ZHFxca
w0cq8VhkmkR+jl8cZWe3/WbW2+aaeKVp06WR4r0kZhqrgyEZIHEJ8QIDAQABozUw
MzAOBgNVHQ8BAf8EBAMCAvwwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/
BAIwADANBgkqhkiG9w0BAQ0FAAOCAgEATIGvRoQdFrOiyLPMsNC3I49fUu5sfxse
OesCgDfzIXgUxZuHTiSbon6QP3+YfrRvWunuhl68xlQLZk7dBhZ0CM7Qe/TS06vL
Shjp2BsuJs2Ej8Vw0xuqAjCkuSOXqsu3Lt3G6edSrsZNBoi+76/uIOnaoZ19N4n5
R5p6tggwRHf7xzggjvmRx+iyjyn3uY8LkN57xNZEjFxI9MihnKrUx9NofsdfYpJ3
VTQoXN+dIPFO+PFCmZ4/EVd/hxc/kKHxiUXQ9Zs6KFEYkh4mVmt6BT3mO6U4bE+3
aZSKx7JJs0A9USyWUP7p6P7QMCBtY+UxXqY5CKIyi0i/3+REbdmXfIQPeolliiqI
M17g5KCJO8wbBRzyzIsL14KkXj4zaSud9vBcJR6kJ6skOKM629zPyKtTlE56bBEy
Bi3woBxcw9E71Cd9Qbibv34NXU7lagv4a+Mz8pKnRXSbVTEHgPbfqFdnK4+OYDee
7HUqZKacL1+CT2nxo/ll1Bb93SUrSz72dJKZdSDUJ1YiwfhAX0LYdgFYihGFyftf
TKMZpHXH4xE0TVPv6y/jpMEH/6EKbxgYyJUwaJndSEBuCEMEUzxwr0/EXY2shk0R
4aigCFBVyrwOTlzoVJcNx5jEMgBQ8Npvxpm898GxZssDJpk74AICs3iy7OjDcKLn
EPJLOqCsvLs=
-----END CERTIFICATE-----
`
func TestValid(t *testing.T) {
Convey("PEM encoded file should extract", t, func() {
err := Extract(enc, "test.crt", "test.key")
So(err, ShouldBeNil)
os.Remove("test.crt")
os.Remove("test.key")
})
}
func TestInvalid(t *testing.T) {
Convey("Unknown encoded file should not extract", t, func() {
err := Extract("err", "test.crt", "test.key")
So(err, ShouldNotBeNil)
os.Remove("test.crt")
os.Remove("test.key")
})
Convey("Certificate file can not be created", t, func() {
err := Extract(enc, "nofolder/test.crt", "test.key")
So(err, ShouldNotBeNil)
os.Remove("test.crt")
os.Remove("test.key")
})
Convey("Private key file can not be created", t, func() {
err := Extract(enc, "test.crt", "nofolder/test.key")
So(err, ShouldNotBeNil)
os.Remove("test.crt")
os.Remove("test.key")
})
}