Skip to content

Commit

Permalink
Merge 8df4b74 into a94133a
Browse files Browse the repository at this point in the history
  • Loading branch information
robdefeo committed Feb 20, 2021
2 parents a94133a + 8df4b74 commit 277a05d
Show file tree
Hide file tree
Showing 7 changed files with 190 additions and 7 deletions.
3 changes: 1 addition & 2 deletions cmd/mailchain/internal/settings/algorand_pkf.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"github.com/mailchain/mailchain/internal/mailbox"
"github.com/mailchain/mailchain/internal/protocols"
"github.com/mailchain/mailchain/internal/protocols/algorand"
"github.com/mailchain/mailchain/internal/protocols/substrate"
)

// AlgorandPublicKeyFinder configuration element.
Expand Down Expand Up @@ -51,7 +50,7 @@ func (r AlgorandPublicKeyFinder) Supports() map[string]bool {

// Produce a `mailbox.PubKeyFinder` base on the configuration.
func (r AlgorandPublicKeyFinder) Produce() (mailbox.PubKeyFinder, error) {
return substrate.NewPublicKeyFinder(), nil
return algorand.NewPublicKeyFinder(), nil
}

// Output configuration as an `output.Element` for use in exporting configuration.
Expand Down
122 changes: 122 additions & 0 deletions cmd/mailchain/internal/settings/algorand_pkf_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
package settings

import (
"testing"

"github.com/golang/mock/gomock"
"github.com/mailchain/mailchain/cmd/internal/settings/values"
"github.com/mailchain/mailchain/cmd/internal/settings/values/valuestest"
"github.com/mailchain/mailchain/internal/mailbox"
"github.com/mailchain/mailchain/internal/protocols/algorand"
"github.com/stretchr/testify/assert"
)

func Test_algorandPublicKeyFinder(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
type args struct {
s values.Store
}
tests := []struct {
name string
args args
wantEnabledProtocolNetworks []string
}{
{
"success",
args{
func() values.Store {
m := valuestest.NewMockStore(mockCtrl)
m.EXPECT().IsSet("public-key-finders.algorand-public-key-extractor.enabled-networks").Return(false)
return m
}(),
},
[]string{"algorand/mainnet", "algorand/betanet", "algorand/testnet"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := algorandPublicKeyFinder(tt.args.s)
assert.Equal(t, tt.wantEnabledProtocolNetworks, got.EnabledProtocolNetworks.Get())
})
}
}

func TestAlgorandPublicKeyFinder_Supports(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
type fields struct {
EnabledProtocolNetworks values.StringSlice
}
tests := []struct {
name string
fields fields
want map[string]bool
}{
{
"success",
fields{
func() values.StringSlice {
m := valuestest.NewMockStringSlice(mockCtrl)
m.EXPECT().Get().Return([]string{"algorand/mainnet", "algorand/betanet"})
return m
}(),
},
map[string]bool{"algorand/mainnet": true, "algorand/betanet": true},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
r := AlgorandPublicKeyFinder{
EnabledProtocolNetworks: tt.fields.EnabledProtocolNetworks,
}
if got := r.Supports(); !assert.Equal(t, tt.want, got) {
t.Errorf("AlgorandPublicKeyFinder.Supports() = %v, want %v", got, tt.want)
}
})
}
}

func TestAlgorandPublicKeyFinder_Produce(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
type fields struct {
kind string
EnabledProtocolNetworks values.StringSlice
}
tests := []struct {
name string
fields fields
want mailbox.PubKeyFinder
wantErr bool
}{
{
"success",
fields{
"test",
func() values.StringSlice {
m := valuestest.NewMockStringSlice(mockCtrl)
return m
}(),
},
&algorand.PublicKeyFinder{},
false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
r := AlgorandPublicKeyFinder{
kind: tt.fields.kind,
EnabledProtocolNetworks: tt.fields.EnabledProtocolNetworks,
}
got, err := r.Produce()
if (err != nil) != tt.wantErr {
t.Errorf("AlgorandPublicKeyFinder.Produce() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !assert.IsType(t, tt.want, got) {
t.Errorf("AlgorandPublicKeyFinder.Produce() = %v, want %v", got, tt.want)
}
})
}
}
2 changes: 1 addition & 1 deletion cmd/mailchain/internal/settings/defaults/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ const (
// Port default value.
Port = 8080
// AlgorandPublicKeyFinder default value.
AlgorandPublicKeyFinder = "algorand-public-key-finder"
AlgorandPublicKeyFinder = "algorand-public-key-extractor"
// SubstratePublicKeyFinder default value.
SubstratePublicKeyFinder = "substrate-public-key-finder"
// CacheTimeout default value for caching interval in memory
Expand Down
12 changes: 10 additions & 2 deletions cmd/mailchain/internal/settings/defaults/networks.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,19 @@ func EthereumNetworkAny() *NetworkDefaults {
// SubstrateNetworkAny default values for any Substrate network.
func SubstrateNetworkAny(network string) *NetworkDefaults {
return &NetworkDefaults{
// NameServiceAddress: NameServiceAddressKind,
// NameServiceDomainName: NameServiceDomainNameKind,
PublicKeyFinder: SubstratePublicKeyFinder,
Receiver: Mailchain,
Sender: "substrate-rpc-" + network,
Disabled: false,
}
}

// AlgorandNetworkAny default values for any Algorand network.
func AlgorandNetworkAny(network string) *NetworkDefaults {
return &NetworkDefaults{
PublicKeyFinder: AlgorandPublicKeyFinder,
// Receiver: Mailchain,
// Sender: "substrate-rpc-" + network,
Disabled: false,
}
}
6 changes: 6 additions & 0 deletions cmd/mailchain/internal/settings/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/mailchain/mailchain/cmd/internal/settings/values"
"github.com/mailchain/mailchain/cmd/mailchain/internal/settings/defaults"
"github.com/mailchain/mailchain/internal/protocols"
"github.com/mailchain/mailchain/internal/protocols/algorand"
"github.com/mailchain/mailchain/internal/protocols/ethereum"
"github.com/mailchain/mailchain/internal/protocols/substrate"
)
Expand All @@ -33,6 +34,11 @@ func FromStore(s values.Store) *Root {
substrate.EdgewareBeresheet: network(s, protocols.Substrate, substrate.EdgewareBeresheet, defaults.SubstrateNetworkAny(substrate.EdgewareBeresheet)),
substrate.EdgewareLocal: network(s, protocols.Substrate, substrate.EdgewareLocal, defaults.SubstrateNetworkAny(substrate.EdgewareLocal)),
}),
protocols.Algorand: protocol(s, protocols.Algorand, map[string]NetworkClient{
algorand.Mainnet: network(s, protocols.Algorand, algorand.Mainnet, defaults.AlgorandNetworkAny(algorand.Mainnet)),
algorand.Testnet: network(s, protocols.Algorand, algorand.Testnet, defaults.AlgorandNetworkAny(algorand.Testnet)),
algorand.Betanet: network(s, protocols.Algorand, algorand.Betanet, defaults.AlgorandNetworkAny(algorand.Betanet)),
}),
},
// other
Keystore: keystore(s),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,28 @@
# protocols:
# algorand:
# disabled: false
# networks:
# betanet:
# disabled: false
# nameservice-address: ""
# nameservice-domain-name: ""
# public-key-finder: "algorand-public-key-extractor"
# receiver: ""
# sender: ""
# mainnet:
# disabled: false
# nameservice-address: ""
# nameservice-domain-name: ""
# public-key-finder: "algorand-public-key-extractor"
# receiver: ""
# sender: ""
# testnet:
# disabled: false
# nameservice-address: ""
# nameservice-domain-name: ""
# public-key-finder: "algorand-public-key-extractor"
# receiver: ""
# sender: ""
# ethereum:
# disabled: false
# networks:
Expand Down Expand Up @@ -80,7 +104,7 @@
# - "ethereum/rinkeby"
# - "ethereum/ropsten"
# public-key-finders:
# algorand-public-key-finder:
# algorand-public-key-extractor:
# disabled: false
# enabled-networks:
# - "algorand/mainnet"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,28 @@
protocols:
algorand:
disabled: false
networks:
betanet:
disabled: false
nameservice-address: ""
nameservice-domain-name: ""
public-key-finder: "algorand-public-key-extractor"
receiver: ""
sender: ""
mainnet:
disabled: false
nameservice-address: ""
nameservice-domain-name: ""
public-key-finder: "algorand-public-key-extractor"
receiver: ""
sender: ""
testnet:
disabled: false
nameservice-address: ""
nameservice-domain-name: ""
public-key-finder: "algorand-public-key-extractor"
receiver: ""
sender: ""
ethereum:
disabled: false
networks:
Expand Down Expand Up @@ -80,7 +104,7 @@ nameservice-domain-name:
- "ethereum/rinkeby"
- "ethereum/ropsten"
public-key-finders:
algorand-public-key-finder:
algorand-public-key-extractor:
disabled: false
enabled-networks:
- "algorand/mainnet"
Expand Down

0 comments on commit 277a05d

Please sign in to comment.