2017-06-30 00:40:06 +00:00
|
|
|
package ipfscluster
|
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
2017-07-14 16:18:34 +00:00
|
|
|
func TestClusterSecretFormat(t *testing.T) {
|
|
|
|
goodSecret := "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
|
|
|
|
emptySecret := ""
|
2017-07-13 17:39:37 +00:00
|
|
|
tooShort := "0123456789abcdef"
|
|
|
|
tooLong := "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0"
|
|
|
|
unsupportedChars := "0123456789abcdef0123456789!!!!!!0123456789abcdef0123456789abcdef"
|
|
|
|
|
2017-07-14 16:18:34 +00:00
|
|
|
_, err := DecodeClusterSecret(goodSecret)
|
2017-07-13 17:39:37 +00:00
|
|
|
if err != nil {
|
2017-07-14 16:18:34 +00:00
|
|
|
t.Fatal("Failed to decode well-formatted secret.")
|
|
|
|
}
|
|
|
|
decodedEmptySecret, err := DecodeClusterSecret(emptySecret)
|
|
|
|
if decodedEmptySecret != nil || err != nil {
|
|
|
|
t.Fatal("Unsuspected output of decoding empty secret.")
|
2017-07-13 17:39:37 +00:00
|
|
|
}
|
|
|
|
_, err = DecodeClusterSecret(tooShort)
|
|
|
|
if err == nil {
|
2017-07-14 16:18:34 +00:00
|
|
|
t.Fatal("Successfully decoded secret that should haved failed (too short).")
|
2017-07-13 17:39:37 +00:00
|
|
|
}
|
|
|
|
_, err = DecodeClusterSecret(tooLong)
|
|
|
|
if err == nil {
|
2017-07-14 16:18:34 +00:00
|
|
|
t.Fatal("Successfully decoded secret that should haved failed (too long).")
|
2017-07-13 17:39:37 +00:00
|
|
|
}
|
|
|
|
_, err = DecodeClusterSecret(unsupportedChars)
|
|
|
|
if err == nil {
|
2017-07-14 16:18:34 +00:00
|
|
|
t.Fatal("Successfully decoded secret that should haved failed (unsupported chars).")
|
2017-07-13 17:39:37 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-06-30 00:40:06 +00:00
|
|
|
func TestSimplePNet(t *testing.T) {
|
2017-07-04 20:39:10 +00:00
|
|
|
clusters, mocks := peerManagerClusters(t)
|
|
|
|
defer cleanRaft()
|
|
|
|
defer shutdownClusters(t, clusters, mocks)
|
2017-06-30 00:40:06 +00:00
|
|
|
|
|
|
|
if len(clusters) < 2 {
|
|
|
|
t.Skip("need at least 2 nodes for this test")
|
|
|
|
}
|
|
|
|
|
2017-07-04 20:39:10 +00:00
|
|
|
_, err := clusters[0].PeerAdd(clusterAddr(clusters[1]))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
2017-06-30 00:40:06 +00:00
|
|
|
|
2017-07-04 20:39:10 +00:00
|
|
|
if len(clusters[0].Peers()) != len(clusters[1].Peers()) {
|
|
|
|
t.Fatal("Expected same number of peers")
|
|
|
|
}
|
|
|
|
if len(clusters[0].Peers()) != 2 {
|
|
|
|
t.Fatal("Expected 2 peers")
|
|
|
|
}
|
2017-06-30 00:40:06 +00:00
|
|
|
}
|
|
|
|
|
2017-07-04 20:39:10 +00:00
|
|
|
func TestClusterSecretRequired(t *testing.T) {
|
|
|
|
cl1Secret, err := generateClusterSecret()
|
|
|
|
if err != nil {
|
2017-07-10 19:04:27 +00:00
|
|
|
t.Fatal("Unable to generate cluster secret.")
|
2017-06-30 00:40:06 +00:00
|
|
|
}
|
2017-07-04 20:39:10 +00:00
|
|
|
cl1, _ := createOnePeerCluster(t, 1, cl1Secret)
|
|
|
|
cl2, _ := createOnePeerCluster(t, 2, testingClusterSecret)
|
|
|
|
defer cleanRaft()
|
|
|
|
defer cl1.Shutdown()
|
|
|
|
defer cl2.Shutdown()
|
|
|
|
peers1 := cl1.Peers()
|
|
|
|
peers2 := cl2.Peers()
|
|
|
|
|
|
|
|
_, err = cl1.PeerAdd(clusterAddr(cl2))
|
|
|
|
if err == nil {
|
|
|
|
t.Fatal("Peer entered private cluster without key.")
|
|
|
|
}
|
2017-06-30 00:40:06 +00:00
|
|
|
|
2017-07-04 20:39:10 +00:00
|
|
|
if len(peers1) != len(peers2) {
|
|
|
|
t.Fatal("Expected same number of peers")
|
|
|
|
}
|
|
|
|
if len(peers1) != 1 {
|
|
|
|
t.Fatal("Expected no peers other than self")
|
|
|
|
}
|
2017-06-30 00:40:06 +00:00
|
|
|
}
|