package loopd import ( "testing" "github.com/lightninglabs/loop" ) // TestValidateConfTarget tests all failure and success cases for our conf // target validation function, including the case where we replace a zero // target with the default provided. func TestValidateConfTarget(t *testing.T) { const ( // Various input confirmation values for tests. zeroConf int32 = 0 oneConf int32 = 1 twoConf int32 = 2 fiveConf int32 = 5 // defaultConf is the default confirmation target we use for // all tests. defaultConf = 6 ) tests := []struct { name string confTarget int32 expectedTarget int32 expectErr bool }{ { name: "zero conf, get default", confTarget: zeroConf, expectedTarget: defaultConf, expectErr: false, }, { name: "one conf, get error", confTarget: oneConf, expectErr: true, }, { name: "two conf, ok", confTarget: twoConf, expectedTarget: twoConf, expectErr: false, }, { name: "five conf, ok", confTarget: fiveConf, expectedTarget: fiveConf, expectErr: false, }, } for _, test := range tests { test := test t.Run(test.name, func(t *testing.T) { target, err := validateConfTarget( test.confTarget, defaultConf, ) haveErr := err != nil if haveErr != test.expectErr { t.Fatalf("expected err: %v, got: %v", test.expectErr, err) } if target != test.expectedTarget { t.Fatalf("expected: %v, got: %v", test.expectedTarget, target) } }) } } // TestValidateLoopInRequest tests validation of loop in requests. func TestValidateLoopInRequest(t *testing.T) { tests := []struct { name string external bool confTarget int32 expectErr bool expectedTarget int32 }{ { name: "external and htlc conf set", external: true, confTarget: 1, expectErr: true, expectedTarget: 0, }, { name: "external and no conf", external: true, confTarget: 0, expectErr: false, expectedTarget: 0, }, { name: "not external, zero conf", external: false, confTarget: 0, expectErr: false, expectedTarget: loop.DefaultHtlcConfTarget, }, { name: "not external, bad conf", external: false, confTarget: 1, expectErr: true, expectedTarget: 0, }, { name: "not external, ok conf", external: false, confTarget: 5, expectErr: false, expectedTarget: 5, }, } for _, test := range tests { test := test t.Run(test.name, func(t *testing.T) { external := test.external conf, err := validateLoopInRequest( test.confTarget, external, ) haveErr := err != nil if haveErr != test.expectErr { t.Fatalf("expected err: %v, got: %v", test.expectErr, err) } if conf != test.expectedTarget { t.Fatalf("expected: %v, got: %v", test.expectedTarget, conf) } }) } }