| 23 | ) |
| 24 | |
| 25 | func TestAPIResponseSerialization(t *testing.T) { |
| 26 | lastEvalTime := time.Now() |
| 27 | responseTime := lastEvalTime.Format(time.RFC3339Nano) |
| 28 | testCases := map[string]struct { |
| 29 | rules RuleDiscovery |
| 30 | expectedJSON string |
| 31 | }{ |
| 32 | "No rules": { |
| 33 | rules: RuleDiscovery{ |
| 34 | RuleGroups: make([]*RuleGroup, 0), |
| 35 | }, |
| 36 | expectedJSON: `{ |
| 37 | "groups":[] |
| 38 | }`, |
| 39 | }, |
| 40 | "Rules with no next token": { |
| 41 | rules: RuleDiscovery{ |
| 42 | RuleGroups: []*RuleGroup{ |
| 43 | { |
| 44 | Name: "Test", |
| 45 | File: "/rules/Test", |
| 46 | Rules: make([]rule, 0), |
| 47 | Interval: 60, |
| 48 | LastEvaluation: lastEvalTime, |
| 49 | EvaluationTime: 10, |
| 50 | Limit: 0, |
| 51 | }, |
| 52 | }, |
| 53 | }, |
| 54 | expectedJSON: fmt.Sprintf(`{ |
| 55 | "groups": [ |
| 56 | { |
| 57 | "evaluationTime": 10, |
| 58 | "limit": 0, |
| 59 | "name": "Test", |
| 60 | "file": "/rules/Test", |
| 61 | "interval": 60, |
| 62 | "rules": [], |
| 63 | "lastEvaluation": "%s" |
| 64 | } |
| 65 | ] |
| 66 | }`, responseTime), |
| 67 | }, |
| 68 | "Rules with next token": { |
| 69 | rules: RuleDiscovery{ |
| 70 | RuleGroups: []*RuleGroup{ |
| 71 | { |
| 72 | Name: "Test", |
| 73 | File: "/rules/Test", |
| 74 | Rules: make([]rule, 0), |
| 75 | Interval: 60, |
| 76 | LastEvaluation: lastEvalTime, |
| 77 | EvaluationTime: 10, |
| 78 | Limit: 0, |
| 79 | }, |
| 80 | }, |
| 81 | GroupNextToken: "abcdef", |
| 82 | }, |