37 lines
781 B
Go
37 lines
781 B
Go
// SPDX-License-Identifier: MIT
|
|
|
|
package checker
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"errors"
|
|
|
|
sdk "git.happydns.org/checker-sdk-go/checker"
|
|
)
|
|
|
|
// stubObs is a minimal ObservationGetter for rule tests. It JSON round-trips
|
|
// the stored value into the destination so it exercises the same code path
|
|
// rules see in production.
|
|
type stubObs struct {
|
|
value any
|
|
err error
|
|
}
|
|
|
|
func (s stubObs) Get(_ context.Context, _ sdk.ObservationKey, dest any) error {
|
|
if s.err != nil {
|
|
return s.err
|
|
}
|
|
if s.value == nil {
|
|
return errors.New("no value")
|
|
}
|
|
raw, err := json.Marshal(s.value)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return json.Unmarshal(raw, dest)
|
|
}
|
|
|
|
func (s stubObs) GetRelated(_ context.Context, _ sdk.ObservationKey) ([]sdk.RelatedObservation, error) {
|
|
return nil, nil
|
|
}
|