Skip to content

Commit c5fca66

Browse files
committed
Implement config validation
1 parent 7406d34 commit c5fca66

14 files changed

Lines changed: 68 additions & 43 deletions

File tree

lib/code0/identities.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@
1818
module Code0
1919
module Identities
2020
class Error < StandardError; end
21+
class MissingConfigurationError < Error; end
22+
class InvalidConfigurationError < Error; end
2123
end
2224
end

lib/code0/identities/identity_provider.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ def load_identity(provider_id, params)
2424
raise Error, "Provider with id '#{provider_id}' is not configured, did you forget to use add_provider"
2525
end
2626

27-
provider.load_identity(params)
27+
provider.load_identity(**params)
2828
end
2929

30-
def [](provider_id)
31-
providers[provider_id]
30+
def self.for_type(provider_type)
31+
Identities::Provider.const_get(provider_type.capitalize)
3232
end
3333
end
3434
end

lib/code0/identities/provider/base_oauth.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def initialize(config_loader)
1010
@config_loader = config_loader
1111
end
1212

13-
def config_attributes
13+
def validate_config!
1414
raise NotImplementedError
1515
end
1616

lib/code0/identities/provider/discord.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ module Code0
44
module Identities
55
module Provider
66
class Discord < BaseOauth
7-
def config_attributes
8-
{
9-
required: %i[client_id client_secret redirect_uri],
10-
optional: %i[provider_name]
11-
}
7+
def validate_config!
8+
required_keys = %i[redirect_uri client_id client_secret]
9+
10+
missing_keys = required_keys - config.keys
11+
invalid_keys = config.keys - required_keys - [:provider_name]
12+
13+
raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14+
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
1215
end
1316

1417
def token_url

lib/code0/identities/provider/github.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ module Code0
44
module Identities
55
module Provider
66
class Github < BaseOauth
7-
def config_attributes
8-
{
9-
required: %i[client_id client_secret redirect_uri],
10-
optional: %i[provider_name]
11-
}
7+
def validate_config!
8+
required_keys = %i[redirect_uri client_id client_secret]
9+
10+
missing_keys = required_keys - config.keys
11+
invalid_keys = config.keys - required_keys - [:provider_name]
12+
13+
raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14+
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
1215
end
1316

1417
def token_url

lib/code0/identities/provider/gitlab.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ module Code0
44
module Identities
55
module Provider
66
class Gitlab < BaseOauth
7-
def config_attributes
8-
{
9-
required: %i[base_url client_id client_secret redirect_uri],
10-
optional: %i[provider_name]
11-
}
7+
def validate_config!
8+
required_keys = %i[base_url redirect_uri client_id client_secret]
9+
10+
missing_keys = required_keys - config.keys
11+
invalid_keys = config.keys - required_keys - [:provider_name]
12+
13+
raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14+
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
1215
end
1316

1417
def base_url

lib/code0/identities/provider/google.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ module Code0
44
module Identities
55
module Provider
66
class Google < BaseOauth
7-
def config_attributes
8-
{
9-
required: %i[client_id client_secret redirect_uri],
10-
optional: %i[provider_name]
11-
}
7+
def validate_config!
8+
required_keys = %i[redirect_uri client_id client_secret]
9+
10+
missing_keys = required_keys - config.keys
11+
invalid_keys = config.keys - required_keys - [:provider_name]
12+
13+
raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14+
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
1215
end
1316

1417
def base_url

lib/code0/identities/provider/microsoft.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ module Code0
44
module Identities
55
module Provider
66
class Microsoft < BaseOauth
7-
def config_attributes
8-
{
9-
required: %i[client_id client_secret redirect_uri],
10-
optional: %i[provider_name]
11-
}
7+
def validate_config!
8+
required_keys = %i[redirect_uri client_id client_secret]
9+
10+
missing_keys = required_keys - config.keys
11+
invalid_keys = config.keys - required_keys - [:provider_name]
12+
13+
raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14+
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
1215
end
1316

1417
def base_url

lib/code0/identities/provider/oidc.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ module Code0
44
module Identities
55
module Provider
66
class Oidc < BaseOauth
7-
def config_attributes
8-
{
9-
required: %i[client_id client_secret redirect_uri token_url user_details_url authorization_url],
10-
optional: %i[provider_name]
11-
}
7+
def validate_config!
8+
required_keys = %i[client_id client_secret redirect_uri token_url user_details_url authorization_url]
9+
10+
missing_keys = required_keys - config.keys
11+
invalid_keys = config.keys - required_keys - [:provider_name]
12+
13+
raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14+
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
1215
end
1316

1417
def token_url

lib/code0/identities/provider/saml.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@ def initialize(config_loader)
1010
@config_loader = config_loader
1111
end
1212

13-
def config_attributes
14-
{
15-
required: %i[],
16-
optional: %i[provider_name metadata_url settings response_settings attribute_statements]
17-
}
13+
def validate_config!
14+
required_keys = config[:metadata_url].nil? ? %i[settings] : %i[metadata_url]
15+
16+
missing_keys = required_keys - config.keys
17+
invalid_keys = config.keys - %i[provider_name metadata_url settings response_settings attribute_statements]
18+
19+
raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
20+
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
1821
end
1922

2023
def authorization_url

0 commit comments

Comments
 (0)