mirror of
https://github.com/gravitational/teleport
synced 2024-10-21 01:34:01 +00:00
Add opsgenie static credentials check and test (#27655)
* Pass down form value name field to react selectable input * Add opsgenie static validation check and test
This commit is contained in:
parent
3a008b176c
commit
0b2cef80bd
|
@ -133,18 +133,18 @@ func (p *PluginV1) CheckAndSetDefaults() error {
|
|||
}
|
||||
case *PluginSpecV1_Opsgenie:
|
||||
if settings.Opsgenie == nil {
|
||||
return trace.BadParameter("settings must be set")
|
||||
return trace.BadParameter("missing opsgenie settings")
|
||||
}
|
||||
if err := settings.Opsgenie.CheckAndSetDefaults(); err != nil {
|
||||
return trace.Wrap(err)
|
||||
}
|
||||
|
||||
bearer := p.Credentials.GetBearerToken()
|
||||
if bearer == nil {
|
||||
return trace.BadParameter("opsgenie plugin must be used with the bearer token credential type")
|
||||
staticCreds := p.Credentials.GetStaticCredentialsRef()
|
||||
if staticCreds == nil {
|
||||
return trace.BadParameter("opsgenie plugin must be used with the static credentials ref type")
|
||||
}
|
||||
if bearer.Token == "" {
|
||||
return trace.BadParameter("Token must be specified")
|
||||
if len(staticCreds.Labels) == 0 {
|
||||
return trace.BadParameter("labels must be specified")
|
||||
}
|
||||
case *PluginSpecV1_Jamf:
|
||||
if settings.Jamf.JamfSpec.ApiEndpoint == "" {
|
||||
|
@ -311,6 +311,8 @@ func (p *PluginV1) GetType() PluginType {
|
|||
return PluginTypeOkta
|
||||
case *PluginSpecV1_Jamf:
|
||||
return PluginTypeJamf
|
||||
case *PluginSpecV1_Opsgenie:
|
||||
return PluginTypeOpsgenie
|
||||
default:
|
||||
return PluginTypeUnknown
|
||||
}
|
||||
|
|
|
@ -109,6 +109,98 @@ func TestPluginOpenAIValidation(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestPluginOpsgenieValidation(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
settings *PluginSpecV1_Opsgenie
|
||||
creds *PluginCredentialsV1
|
||||
assertErr require.ErrorAssertionFunc
|
||||
}{
|
||||
{
|
||||
name: "no settings",
|
||||
settings: &PluginSpecV1_Opsgenie{
|
||||
Opsgenie: nil,
|
||||
},
|
||||
creds: nil,
|
||||
assertErr: func(t require.TestingT, err error, args ...any) {
|
||||
require.True(t, trace.IsBadParameter(err))
|
||||
require.Contains(t, err.Error(), "missing opsgenie settings")
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "no api endpint",
|
||||
settings: &PluginSpecV1_Opsgenie{
|
||||
Opsgenie: &PluginOpsgenieAccessSettings{},
|
||||
},
|
||||
creds: nil,
|
||||
assertErr: func(t require.TestingT, err error, args ...any) {
|
||||
require.True(t, trace.IsBadParameter(err))
|
||||
require.Contains(t, err.Error(), "api endpoint url must be set")
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "no static credentials",
|
||||
settings: &PluginSpecV1_Opsgenie{
|
||||
Opsgenie: &PluginOpsgenieAccessSettings{
|
||||
ApiEndpoint: "https://test.opsgenie.com",
|
||||
},
|
||||
},
|
||||
assertErr: func(t require.TestingT, err error, args ...any) {
|
||||
require.True(t, trace.IsBadParameter(err))
|
||||
require.Contains(t, err.Error(), "must be used with the static credentials ref type")
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "static credentials labels not defined",
|
||||
settings: &PluginSpecV1_Opsgenie{
|
||||
Opsgenie: &PluginOpsgenieAccessSettings{
|
||||
ApiEndpoint: "https://test.opsgenie.com",
|
||||
},
|
||||
},
|
||||
creds: &PluginCredentialsV1{
|
||||
Credentials: &PluginCredentialsV1_StaticCredentialsRef{
|
||||
&PluginStaticCredentialsRef{
|
||||
Labels: map[string]string{},
|
||||
},
|
||||
},
|
||||
},
|
||||
assertErr: func(t require.TestingT, err error, args ...any) {
|
||||
require.True(t, trace.IsBadParameter(err))
|
||||
require.Contains(t, err.Error(), "labels must be specified")
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "valid credentials (static credentials)",
|
||||
settings: &PluginSpecV1_Opsgenie{
|
||||
Opsgenie: &PluginOpsgenieAccessSettings{
|
||||
ApiEndpoint: "https://test.opsgenie.com",
|
||||
},
|
||||
},
|
||||
creds: &PluginCredentialsV1{
|
||||
Credentials: &PluginCredentialsV1_StaticCredentialsRef{
|
||||
&PluginStaticCredentialsRef{
|
||||
Labels: map[string]string{
|
||||
"label1": "value1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
assertErr: func(t require.TestingT, err error, args ...any) {
|
||||
require.NoError(t, err)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
plugin := NewPluginV1(Metadata{Name: "foobar"}, PluginSpecV1{
|
||||
Settings: tc.settings,
|
||||
}, tc.creds)
|
||||
tc.assertErr(t, plugin.CheckAndSetDefaults())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestPluginOktaValidation(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
|
|
|
@ -27,6 +27,7 @@ export default function FieldSelect({
|
|||
labelTip,
|
||||
value,
|
||||
options,
|
||||
name,
|
||||
onChange,
|
||||
placeholder,
|
||||
maxMenuHeight,
|
||||
|
@ -54,6 +55,7 @@ export default function FieldSelect({
|
|||
)}
|
||||
<Select
|
||||
inputId="select"
|
||||
name={name}
|
||||
menuPosition={menuPosition}
|
||||
hasError={hasError}
|
||||
isSimpleValue={isSimpleValue}
|
||||
|
|
|
@ -35,6 +35,7 @@ export type Props = {
|
|||
options: Option<any, any>[];
|
||||
width?: string | number;
|
||||
menuPlacement?: string;
|
||||
name?: string;
|
||||
minMenuHeight?: number;
|
||||
components?: any;
|
||||
customProps?: Record<string, any>;
|
||||
|
|
Loading…
Reference in a new issue