github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/api/controller/identity_url_test.go (about) 1 // Copyright 2012-2019 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package controller_test 5 6 import ( 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 apitesting "github.com/juju/juju/api/base/testing" 12 "github.com/juju/juju/api/controller" 13 "github.com/juju/juju/apiserver/common" 14 "github.com/juju/juju/apiserver/params" 15 ) 16 17 func (s *Suite) TestIdentityProviderURLPriorV7(c *gc.C) { 18 called := false 19 apiCaller := apitesting.BestVersionCaller{ 20 BestVersion: 6, 21 APICallerFunc: func(objType string, version int, id, request string, a, response interface{}) error { 22 called = true 23 c.Assert(request, gc.Equals, "IdentityProviderURL") 24 return nil 25 }, 26 } 27 28 client := controller.NewClient(apiCaller) 29 _, err := client.IdentityProviderURL() 30 c.Assert(err, gc.ErrorMatches, "IdentityProviderURL not supported by this version of Juju not supported") 31 c.Assert(called, jc.IsFalse) 32 } 33 34 func (s *Suite) TestIdentityProviderURLCallError(c *gc.C) { 35 apiCaller := apitesting.BestVersionCaller{ 36 BestVersion: 7, 37 APICallerFunc: func(string, int, string, string, interface{}, interface{}) error { 38 return errors.New("boom") 39 }, 40 } 41 client := controller.NewClient(apiCaller) 42 result, err := client.IdentityProviderURL() 43 c.Check(result, gc.Equals, "") 44 c.Check(err, gc.ErrorMatches, "boom") 45 } 46 47 func (s *Suite) TestIdentityProviderURL(c *gc.C) { 48 expURL := "https://api.jujucharms.com/identity" 49 apiCaller := apitesting.BestVersionCaller{ 50 BestVersion: 7, 51 APICallerFunc: func(objType string, version int, id, request string, arg, result interface{}) error { 52 c.Check(objType, gc.Equals, "Controller") 53 c.Check(id, gc.Equals, "") 54 c.Check(request, gc.Equals, "IdentityProviderURL") 55 c.Check(result, gc.FitsTypeOf, ¶ms.StringResult{}) 56 57 out := result.(*params.StringResult) 58 out.Result = expURL 59 return nil 60 }, 61 } 62 63 client := controller.NewClient(apiCaller) 64 result, err := client.IdentityProviderURL() 65 c.Assert(err, jc.ErrorIsNil) 66 c.Assert(result, gc.Equals, expURL) 67 } 68 69 func (s *Suite) TestIdentityProviderURLWithErrorResult(c *gc.C) { 70 apiCaller := apitesting.BestVersionCaller{ 71 BestVersion: 7, 72 APICallerFunc: func(objType string, version int, id, request string, arg, result interface{}) error { 73 c.Check(objType, gc.Equals, "Controller") 74 c.Check(id, gc.Equals, "") 75 c.Check(request, gc.Equals, "IdentityProviderURL") 76 c.Check(result, gc.FitsTypeOf, ¶ms.StringResult{}) 77 78 out := result.(*params.StringResult) 79 out.Result = "garbage" 80 out.Error = common.ServerError(errors.New("version error")) 81 return nil 82 }, 83 } 84 85 client := controller.NewClient(apiCaller) 86 _, err := client.IdentityProviderURL() 87 c.Assert(err, gc.ErrorMatches, "version error") 88 }