mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-14 20:12:39 +08:00
fix(openai): preserve manifest key validation
This commit is contained in:
@@ -2461,18 +2461,21 @@ func mergeMissingCodexModelFields(current, defaults map[string]json.RawMessage)
|
||||
}
|
||||
|
||||
func validateCodexModelsManifestEnvelope(body []byte) error {
|
||||
var envelope *struct {
|
||||
Models []json.RawMessage `json:"models"`
|
||||
}
|
||||
var envelope map[string]json.RawMessage
|
||||
if err := json.Unmarshal(body, &envelope); err != nil {
|
||||
return fmt.Errorf("decode JSON object: %w", err)
|
||||
}
|
||||
if envelope == nil {
|
||||
return errors.New("expected a JSON object")
|
||||
}
|
||||
if envelope.Models == nil {
|
||||
models, ok := envelope["models"]
|
||||
if !ok {
|
||||
return errors.New("missing top-level models array")
|
||||
}
|
||||
models = bytes.TrimSpace(models)
|
||||
if len(models) == 0 || models[0] != '[' {
|
||||
return errors.New("top-level models field is not an array")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -2562,6 +2562,11 @@ func TestFetchCodexModelsManifestRejectsInvalidEnvelope(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateCodexModelsManifestEnvelopeRequiresExactModelsKey(t *testing.T) {
|
||||
require.NoError(t, validateCodexModelsManifestEnvelope([]byte(`{"models":[]}`)))
|
||||
require.Error(t, validateCodexModelsManifestEnvelope([]byte(`{"Models":[]}`)))
|
||||
}
|
||||
|
||||
func TestFetchCodexModelsManifestAPIKeyDoesNotCacheInvalidEnvelope(t *testing.T) {
|
||||
var calls atomic.Int32
|
||||
upstream := &codexModelsHTTPUpstreamStub{do: func(_ *http.Request, _ string, _ int64, _ int) (*http.Response, error) {
|
||||
|
||||
Reference in New Issue
Block a user