| 215 | } |
| 216 | |
| 217 | func Test_mapper_MapRules(t *testing.T) { |
| 218 | l := log.NewLogfmtLogger(os.Stdout) |
| 219 | l = level.NewFilter(l, level.AllowInfo()) |
| 220 | setupRuleSets() |
| 221 | m := &mapper{ |
| 222 | Path: "/rules", |
| 223 | FS: afero.NewMemMapFs(), |
| 224 | logger: l, |
| 225 | } |
| 226 | |
| 227 | t.Run("basic rulegroup", func(t *testing.T) { |
| 228 | updated, files, err := m.MapRules(testUser, initialRuleSet) |
| 229 | require.True(t, updated) |
| 230 | require.Len(t, files, 1) |
| 231 | require.Equal(t, fileOnePath, files[0]) |
| 232 | require.NoError(t, err) |
| 233 | |
| 234 | exists, err := afero.Exists(m.FS, fileOnePath) |
| 235 | require.True(t, exists) |
| 236 | require.NoError(t, err) |
| 237 | }) |
| 238 | |
| 239 | t.Run("identical rulegroup", func(t *testing.T) { |
| 240 | updated, files, err := m.MapRules(testUser, initialRuleSet) |
| 241 | require.False(t, updated) |
| 242 | require.Len(t, files, 1) |
| 243 | require.NoError(t, err) |
| 244 | |
| 245 | exists, err := afero.Exists(m.FS, fileOnePath) |
| 246 | require.True(t, exists) |
| 247 | require.NoError(t, err) |
| 248 | }) |
| 249 | |
| 250 | t.Run("out of order identical rulegroup", func(t *testing.T) { |
| 251 | updated, files, err := m.MapRules(testUser, outOfOrderRuleSet) |
| 252 | require.False(t, updated) |
| 253 | require.Len(t, files, 1) |
| 254 | require.NoError(t, err) |
| 255 | |
| 256 | exists, err := afero.Exists(m.FS, fileOnePath) |
| 257 | require.True(t, exists) |
| 258 | require.NoError(t, err) |
| 259 | }) |
| 260 | |
| 261 | t.Run("updated rulegroup", func(t *testing.T) { |
| 262 | updated, files, err := m.MapRules(testUser, updatedRuleSet) |
| 263 | require.True(t, updated) |
| 264 | require.Len(t, files, 1) |
| 265 | require.Equal(t, fileOnePath, files[0]) |
| 266 | require.NoError(t, err) |
| 267 | |
| 268 | exists, err := afero.Exists(m.FS, fileOnePath) |
| 269 | require.True(t, exists) |
| 270 | require.NoError(t, err) |
| 271 | }) |
| 272 | } |
| 273 | |
| 274 | func Test_mapper_MapRulesMultipleFiles(t *testing.T) { |