(t *testing.T)
| 12 | ) |
| 13 | |
| 14 | func TestComputeFirewallDiff_NewDomains(t *testing.T) { |
| 15 | run1 := &FirewallAnalysis{ |
| 16 | TotalRequests: 5, |
| 17 | AllowedRequests: 5, |
| 18 | RequestsByDomain: map[string]DomainRequestStats{ |
| 19 | "api.github.com:443": {Allowed: 5, Blocked: 0}, |
| 20 | }, |
| 21 | } |
| 22 | run2 := &FirewallAnalysis{ |
| 23 | TotalRequests: 20, |
| 24 | AllowedRequests: 17, |
| 25 | BlockedRequests: 3, |
| 26 | RequestsByDomain: map[string]DomainRequestStats{ |
| 27 | "api.github.com:443": {Allowed: 5, Blocked: 0}, |
| 28 | "registry.npmjs.org:443": {Allowed: 15, Blocked: 0}, |
| 29 | "telemetry.example.com:443": {Allowed: 0, Blocked: 2}, |
| 30 | }, |
| 31 | } |
| 32 | |
| 33 | diff := computeFirewallDiff(100, 200, run1, run2) |
| 34 | |
| 35 | assert.Equal(t, int64(100), diff.Run1ID, "Run1ID should match") |
| 36 | assert.Equal(t, int64(200), diff.Run2ID, "Run2ID should match") |
| 37 | assert.Len(t, diff.NewDomains, 2, "Should have 2 new domains") |
| 38 | assert.Empty(t, diff.RemovedDomains, "Should have no removed domains") |
| 39 | assert.Empty(t, diff.StatusChanges, "Should have no status changes") |
| 40 | |
| 41 | // Check new domains are sorted |
| 42 | assert.Equal(t, "registry.npmjs.org:443", diff.NewDomains[0].Domain, "First new domain should be registry.npmjs.org") |
| 43 | assert.Equal(t, "new", diff.NewDomains[0].Status, "Status should be 'new'") |
| 44 | assert.Equal(t, "allowed", diff.NewDomains[0].Run2Status, "Registry should be allowed") |
| 45 | assert.False(t, diff.NewDomains[0].IsAnomaly, "Allowed new domain should not be anomaly") |
| 46 | |
| 47 | assert.Equal(t, "telemetry.example.com:443", diff.NewDomains[1].Domain, "Second new domain should be telemetry.example.com") |
| 48 | assert.Equal(t, "denied", diff.NewDomains[1].Run2Status, "Telemetry should be denied") |
| 49 | assert.True(t, diff.NewDomains[1].IsAnomaly, "New denied domain should be anomaly") |
| 50 | assert.Equal(t, "new denied domain", diff.NewDomains[1].AnomalyNote, "Anomaly note should explain the issue") |
| 51 | |
| 52 | // Check summary |
| 53 | assert.Equal(t, 2, diff.Summary.NewDomainCount, "Summary should show 2 new domains") |
| 54 | assert.True(t, diff.Summary.HasAnomalies, "Should have anomalies") |
| 55 | assert.Equal(t, 1, diff.Summary.AnomalyCount, "Should have 1 anomaly") |
| 56 | } |
| 57 | |
| 58 | func TestComputeFirewallDiff_RemovedDomains(t *testing.T) { |
| 59 | run1 := &FirewallAnalysis{ |
nothing calls this directly
no test coverage detected