diff --git a/integration/integration.go b/integration/integration.go index 8b77fa0..bb8cec7 100644 --- a/integration/integration.go +++ b/integration/integration.go @@ -15,8 +15,7 @@ const ( user = "version" ) - -// This should be oncverted into +// This should be oncverted into // GetClient(accessToken string, realmName, idClient string) (kc.ClientRepresentation, error) // GetClientRoleMappings(accessToken string, realmName, userID, clientID string) ([]kc.RoleRepresentation, error) // AddClientRolesToUserRoleMapping(accessToken string, realmName, userID, clientID string, roles []kc.RoleRepresentation) error @@ -137,7 +136,6 @@ func main() { log.Fatalf("could not create test users: %v", err) } - } // Check that all users where created. { @@ -169,7 +167,7 @@ func main() { log.Fatalf("could not get user") } - if !(*(user.Username) != ""){ + if !(*(user.Username) != "") { log.Fatalf("Username should not be empty") } @@ -236,7 +234,7 @@ func main() { log.Fatalf("there should be 7 users matched by search") } } - + fmt.Println("Test users retrieved.") } @@ -345,16 +343,15 @@ func main() { } } - - - func getKeycloakConfig() *keycloak.Config { - var adr = pflag.String("url", "http://localhost:8080", "keycloak address") + var apiAddr = pflag.String("urlKc", "http://localhost:8080", "keycloak address") + var tokenAddr = pflag.String("url", "http://127.0.0.1:8080", "keycloak address") pflag.Parse() return &keycloak.Config{ - Addr: *adr, - Timeout: 10 * time.Second, + AddrTokenProvider: *tokenAddr, + AddrAPI: *apiAddr, + Timeout: 10 * time.Second, } } diff --git a/keycloak_client.go b/keycloak_client.go index 6db4359..1a40f37 100644 --- a/keycloak_client.go +++ b/keycloak_client.go @@ -17,36 +17,48 @@ import ( // Config is the keycloak client http config. type Config struct { - Addr string - Timeout time.Duration + AddrTokenProvider string + AddrAPI string + Timeout time.Duration } // Client is the keycloak client. type Client struct { - url *url.URL - httpClient *gentleman.Client + tokenProviderUrl *url.URL + apiUrl *url.URL + httpClient *gentleman.Client } // New returns a keycloak client. func New(config Config) (*Client, error) { - var u *url.URL + var uToken *url.URL { var err error - u, err = url.Parse(config.Addr) + uToken, err = url.Parse(config.AddrTokenProvider) if err != nil { - return nil, errors.Wrap(err, "could not parse URL") + return nil, errors.Wrap(err, "could not parse Token Provider URL") + } + } + + var uAPI *url.URL + { + var err error + uAPI, err = url.Parse(config.AddrAPI) + if err != nil { + return nil, errors.Wrap(err, "could not parse API URL") } } var httpClient = gentleman.New() { - httpClient = httpClient.URL(u.String()) + httpClient = httpClient.URL(uAPI.String()) httpClient = httpClient.Use(timeout.Request(config.Timeout)) } return &Client{ - url: u, - httpClient: httpClient, + tokenProviderUrl: uToken, + apiUrl: uAPI, + httpClient: httpClient, }, nil } @@ -101,7 +113,7 @@ func (c *Client) VerifyToken(realmName string, accessToken string) error { var oidcProvider *oidc.Provider { var err error - var issuer = fmt.Sprintf("%s/auth/realms/%s", c.url.String(), realmName) + var issuer = fmt.Sprintf("%s/auth/realms/%s", c.tokenProviderUrl.String(), realmName) oidcProvider, err = oidc.NewProvider(context.Background(), issuer) if err != nil { return errors.Wrap(err, "could not create oidc provider")