github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/api/try_in_order_login_provider_test.go (about) 1 // Copyright 2024 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package api_test 5 6 import ( 7 "context" 8 9 "github.com/juju/errors" 10 jc "github.com/juju/testing/checkers" 11 gc "gopkg.in/check.v1" 12 13 "github.com/juju/juju/api" 14 "github.com/juju/juju/api/base" 15 ) 16 17 type tryInOrderLoginProviderSuite struct{} 18 19 var _ = gc.Suite(&tryInOrderLoginProviderSuite{}) 20 21 func (s *tryInOrderLoginProviderSuite) Test(c *gc.C) { 22 p1 := &mockLoginProvider{err: errors.New("provider 1 error")} 23 p2 := &mockLoginProvider{err: errors.New("provider 2 error")} 24 p3 := &mockLoginProvider{} 25 26 lp := api.NewTryInOrderLoginProvider(p1, p2) 27 _, err := lp.Login(context.Background(), nil) 28 c.Assert(err, gc.ErrorMatches, "provider 2 error") 29 30 lp = api.NewTryInOrderLoginProvider(p1, p2, p3) 31 _, err = lp.Login(context.Background(), nil) 32 c.Assert(err, jc.ErrorIsNil) 33 } 34 35 type mockLoginProvider struct { 36 err error 37 } 38 39 func (p *mockLoginProvider) Login(ctx context.Context, caller base.APICaller) (*api.LoginResultParams, error) { 40 return &api.LoginResultParams{}, p.err 41 }