Commit 8e4f69b

mo khan <mo@mokhan.ca>
2022-05-09 02:58:56
refactor: embed client metadata in response
1 parent 4303221
pkg/dto/client_information_response.go
@@ -13,27 +13,23 @@ type ClientInformationResponse struct {
 	ClientSecret          string `json:"client_secret"`
 	ClientIdIssuedAt      int64  `json:"client_id_issued_at"`
 	ClientSecretExpiresAt int64  `json:"client_secret_expires_at"`
-
-	RedirectUris            []string `json:"redirect_uris"`
-	GrantTypes              []string `json:"grant_types"`
-	ClientName              string   `json:"client_name"`
-	TokenEndpointAuthMethod string   `json:"token_endpoint_auth_method"`
-	LogoUri                 string   `json:"logo_uri"`
-	JwksUri                 string   `json:"jwks_uri"`
+	ClientMetadata
 }
 
 func NewClientInformationResponse(request *ClientRegistrationRequest) *ClientInformationResponse {
 	expiresAt := time.Now().Add(time.Duration(1) * time.Hour)
 	return &ClientInformationResponse{
-		ClientId:                uuid.GenerateUUID(),
-		ClientIdIssuedAt:        time.Now().Unix(),
-		ClientName:              request.ClientName,
-		ClientSecret:            uuid.GenerateUUID(),
-		ClientSecretExpiresAt:   expiresAt.Unix(),
-		RedirectUris:            request.RedirectUris,
-		TokenEndpointAuthMethod: request.TokenEndpointAuthMethod.String(),
-		LogoUri:                 request.LogoUri,
-		JwksUri:                 request.JWKSUri,
+		ClientMetadata: ClientMetadata{
+			RedirectUris:            request.RedirectUris,
+			ClientName:              request.ClientName,
+			TokenEndpointAuthMethod: request.TokenEndpointAuthMethod,
+			LogoUri:                 request.LogoUri,
+			JWKSUri:                 request.JWKSUri,
+		},
+		ClientId:              uuid.GenerateUUID(),
+		ClientIdIssuedAt:      time.Now().Unix(),
+		ClientSecret:          uuid.GenerateUUID(),
+		ClientSecretExpiresAt: expiresAt.Unix(),
 	}
 }
 
pkg/dto/client_metadata.go
@@ -3,7 +3,7 @@ package dto
 type ClientMetadata struct {
 	RedirectUris            []string                `json:"redirect_uris"`
 	TokenEndpointAuthMethod TokenEndpointAuthMethod `json:"token_endpoint_auth_method"`
-	GrantTypes              []GrantType
+	GrantTypes              []GrantType             `json:"grant_types"`
 	ResponseTypes           []ResponseType
 	ClientName              string `json:"client_name"`
 	ClientUri               string
pkg/web/register_test.go
@@ -40,10 +40,10 @@ func TestRegister(t *testing.T) {
 			json.NewDecoder(w.Body).Decode(&x)
 
 			assert.Equal(t, "My Client", x.ClientName)
-			assert.Equal(t, "client_secret_basic", x.TokenEndpointAuthMethod)
+			assert.Equal(t, dto.ClientSecretBasic, x.TokenEndpointAuthMethod)
 			assert.Equal(t, "https://client.example.org/callback", x.RedirectUris[0])
 			assert.Equal(t, "https://client.example.org/logo.png", x.LogoUri)
-			assert.Equal(t, "https://client.example.org/my_public_keys.jwks", x.JwksUri)
+			assert.Equal(t, "https://client.example.org/my_public_keys.jwks", x.JWKSUri)
 			assert.Equal(t, 1, len(x.RedirectUris))
 			assert.NotEmpty(t, x.ClientId)
 			assert.NotEmpty(t, x.ClientIdIssuedAt)