Skip to content

Commit

Permalink
unit and integration tests + fix travis config
Browse files Browse the repository at this point in the history
  • Loading branch information
altafan committed Sep 6, 2018
1 parent 749b8d9 commit 562511e
Show file tree
Hide file tree
Showing 10 changed files with 669 additions and 185 deletions.
3 changes: 2 additions & 1 deletion .travis.yml
@@ -1,3 +1,4 @@
language: go
go:
- master
- master
script: go test -v ./btc/
93 changes: 71 additions & 22 deletions btc/path_address_test.go
Expand Up @@ -10,32 +10,81 @@ import (
func TestAddress(t *testing.T) {
b, storage := getTestBackend(t)

exp := MissingTokenError
_, err := b.HandleRequest(context.Background(), &logical.Request{
Storage: storage,
Path: "address/wallet1",
Operation: logical.UpdateOperation,
})
if err == nil {
t.Fatal("Should have failed before")
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
name := "test"
network := "testnet"
_, err := newWallet(t, b, storage, name, network)
if err != nil {
t.Fatal(err)
}

exp = InvalidTokenError
_, err = b.HandleRequest(context.Background(), &logical.Request{
Storage: storage,
Path: "address/wallet1",
resp, err := newAuthToken(t, b, storage, name)
token := resp.Data["token"].(string)

t.Run("Get address for wallet", func(t *testing.T) {
resp, err := newAddress(t, b, storage, name, token)
if err != nil {
t.Fatal(err)
}
if resp == nil {
t.Fatal("No response received")
}
})

t.Run("Get address with expired auth token should fail", func(t *testing.T) {
t.Parallel()

exp := InvalidTokenError
_, err := newAddress(t, b, storage, name, token)
if err == nil {
t.Fatal("Should have failed before")
}
if err.Error() != exp {
t.Fatalf("Want: %v, got %v", exp, err)
}
})

t.Run("Get address without auth token should fail", func(t *testing.T) {
t.Parallel()

token := ""
exp := MissingTokenError
_, err := newAddress(t, b, storage, name, token)
if err == nil {
t.Fatal("Should have failed before")
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
}
})

t.Run("Get address with invalid auth token should fail", func(t *testing.T) {
t.Parallel()

token := "testtoken"
exp := InvalidTokenError
_, err := newAddress(t, b, storage, name, token)
if err == nil {
t.Fatal("Should have failed before")
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
}
})
}

func newAddress(t *testing.T, b logical.Backend, store logical.Storage, name string, token string) (*logical.Response, error) {
resp, err := b.HandleRequest(context.Background(), &logical.Request{
Storage: store,
Path: "address/" + name,
Operation: logical.UpdateOperation,
Data: map[string]interface{}{
"token": "testtoken",
},
Data: map[string]interface{}{"token": token},
})
if err == nil {
t.Fatal("Should have failed before")
if err != nil {
return nil, err
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
if resp.IsError() {
return nil, resp.Error()
}

return resp, nil
}
52 changes: 44 additions & 8 deletions btc/path_credentials_test.go
Expand Up @@ -10,16 +10,52 @@ import (
func TestCredentials(t *testing.T) {
b, storage := getTestBackend(t)

exp := "Failed to create credentials for 'wallet1': wallet does not exist"
_, err := b.HandleRequest(context.Background(), &logical.Request{
Storage: storage,
Path: "creds/wallet1",
name := "test"
network := "testnet"
_, err := newWallet(t, b, storage, name, network)
if err != nil {
t.Fatal(err)
}

t.Run("Create auth token for wallet", func(t *testing.T) {
t.Parallel()

resp, err := newAuthToken(t, b, storage, name)
if err != nil {
t.Fatal(err)
}
if resp == nil {
t.Fatal("No response received")
}
})

t.Run("Create auth token for bad wallet should fail", func(t *testing.T) {
t.Parallel()

name := "badwallet"
exp := "Failed to create credentials for '" + name + "': wallet does not exist"
_, err := newAuthToken(t, b, storage, name)
if err == nil {
t.Fatal("Should have failed before")
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
}
})
}

func newAuthToken(t *testing.T, b logical.Backend, store logical.Storage, name string) (*logical.Response, error) {
resp, err := b.HandleRequest(context.Background(), &logical.Request{
Path: "creds/" + name,
Storage: store,
Operation: logical.ReadOperation,
})
if err == nil {
t.Fatal("Should have failed before")
if err != nil {
return nil, err
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
if resp.IsError() {
return nil, resp.Error()
}

return resp, nil
}
96 changes: 74 additions & 22 deletions btc/path_multisig_address_test.go
Expand Up @@ -10,32 +10,84 @@ import (
func TestMultiSigAddress(t *testing.T) {
b, storage := getTestBackend(t)

exp := MissingTokenError
_, err := b.HandleRequest(context.Background(), &logical.Request{
Storage: storage,
Path: "address/multisig/wallet1",
Operation: logical.UpdateOperation,
})
if err == nil {
t.Fatal("Should have failed before")
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
m := 2
n := 3
name := "test"
network := "testnet"
pubkeys := []string{"", ""}
_, err := newMultiSigWallet(t, b, storage, name, network, m, n, pubkeys)
if err != nil {
t.Fatal(err)
}

exp = InvalidTokenError
_, err = b.HandleRequest(context.Background(), &logical.Request{
Storage: storage,
Path: "address/multisig/wallet1",
resp, err := newMultiSigAuthToken(t, b, storage, name)
token := resp.Data["token"].(string)

t.Run("Get address for multisig wallet", func(t *testing.T) {
resp, err := newMultiSigAddress(t, b, storage, name, token)
if err != nil {
t.Fatal(err)
}
if resp == nil {
t.Fatal("No response received")
}
})

t.Run("Get address with expired auth token should fail", func(t *testing.T) {
t.Parallel()

exp := InvalidTokenError
_, err := newMultiSigAddress(t, b, storage, name, token)
if err == nil {
t.Fatal("Should have failed before")
}
if err.Error() != exp {
t.Fatalf("Want: %v, got %v", exp, err)
}
})

t.Run("Get address without auth token should fail", func(t *testing.T) {
t.Parallel()

token := ""
exp := MissingTokenError
_, err := newMultiSigAddress(t, b, storage, name, token)
if err == nil {
t.Fatal("Should have failed before")
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
}
})

t.Run("Get address with invalid auth token should fail", func(t *testing.T) {
t.Parallel()

token := "testtoken"
exp := InvalidTokenError
_, err := newMultiSigAddress(t, b, storage, name, token)
if err == nil {
t.Fatal("Should have failed before")
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
}
})
}

func newMultiSigAddress(t *testing.T, b logical.Backend, store logical.Storage, name string, token string) (*logical.Response, error) {
resp, err := b.HandleRequest(context.Background(), &logical.Request{
Storage: store,
Path: "address/multisig/" + name,
Operation: logical.UpdateOperation,
Data: map[string]interface{}{
"token": "testtoken",
},
Data: map[string]interface{}{"token": token},
})
if err == nil {
t.Fatal("Should have failed before")
if err != nil {
return nil, err
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
if resp.IsError() {
return nil, resp.Error()
}

return resp, nil
}
55 changes: 47 additions & 8 deletions btc/path_multisig_credentials_test.go
Expand Up @@ -10,16 +10,55 @@ import (
func TestMultiSigCredentials(t *testing.T) {
b, storage := getTestBackend(t)

exp := "Failed to create credentials for 'multisig_wallet1': wallet does not exist"
_, err := b.HandleRequest(context.Background(), &logical.Request{
Storage: storage,
Path: "creds/multisig/wallet1",
m := 2
n := 3
name := "test"
network := "testnet"
pubkeys := []string{"", ""}
_, err := newMultiSigWallet(t, b, storage, name, network, m, n, pubkeys)
if err != nil {
t.Fatal(err)
}

t.Run("Create auth token for multisig wallet", func(t *testing.T) {
t.Parallel()

resp, err := newMultiSigAuthToken(t, b, storage, name)
if err != nil {
t.Fatal(err)
}
if resp == nil {
t.Fatal("No response received")
}
})

t.Run("Create auth token for bad multisig wallet should fail", func(t *testing.T) {
t.Parallel()

name := "badwallet"
exp := "Failed to create credentials for '" + MultiSigPrefix + name + "': wallet does not exist"
_, err := newMultiSigAuthToken(t, b, storage, name)
if err == nil {
t.Fatal("Should have failed before")
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
}
})
}

func newMultiSigAuthToken(t *testing.T, b logical.Backend, store logical.Storage, name string) (*logical.Response, error) {
resp, err := b.HandleRequest(context.Background(), &logical.Request{
Path: "creds/multisig/" + name,
Storage: store,
Operation: logical.ReadOperation,
})
if err == nil {
t.Fatal("Should have failed before")
if err != nil {
return nil, err
}
if err.Error() != exp {
t.Fatalf("Want: %v, got: %v", exp, err)
if resp.IsError() {
return nil, resp.Error()
}

return resp, nil
}

0 comments on commit 562511e

Please sign in to comment.