Merge branch '14874-post-merge-fixes'
[arvados.git] / services / api / test / unit / log_test.rb
index 370bec1101bd6816c0459fbe20d7a679aef23f2e..8a878ada91a9b9f0afe6da60f60036eaca3450e6 100644 (file)
@@ -1,3 +1,7 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 require 'test_helper'
 require 'audit_logs'
 
@@ -278,7 +282,7 @@ class LogTest < ActiveSupport::TestCase
   end
 
   test "non-empty configuration.unlogged_attributes" do
-    Rails.configuration.unlogged_attributes = ["manifest_text"]
+    Rails.configuration.AuditLogs.UnloggedAttributes = ["manifest_text"]
     txt = ". acbd18db4cc2f85cedef654fccc4a4d8+3 0:3:foo\n"
 
     act_as_system_user do
@@ -293,7 +297,7 @@ class LogTest < ActiveSupport::TestCase
   end
 
   test "empty configuration.unlogged_attributes" do
-    Rails.configuration.unlogged_attributes = []
+    Rails.configuration.AuditLogs.UnloggedAttributes = []
     txt = ". acbd18db4cc2f85cedef654fccc4a4d8+3 0:3:foo\n"
 
     act_as_system_user do
@@ -323,35 +327,43 @@ class LogTest < ActiveSupport::TestCase
     Log.unscoped.where('event_type in (?)', %w(create update destroy delete))
   end
 
+  # Default settings should not delete anything -- some sites rely on
+  # the original "keep everything forever" behavior.
   test 'retain old audit logs with default settings' do
     assert_no_logs_deleted do
       AuditLogs.delete_old(
-        max_age: Rails.configuration.max_audit_log_age,
-        max_batch: Rails.configuration.max_audit_log_delete_batch)
+        max_age: Rails.configuration.AuditLogs.MaxAge,
+        max_batch: Rails.configuration.AuditLogs.MaxDeleteBatch)
     end
   end
 
-  test 'retain old audit logs with batch=0' do
+  # Batch size 0 should retain all logs -- even if max_age is very
+  # short, and even if the default settings (and associated test) have
+  # changed.
+  test 'retain old audit logs with max_audit_log_delete_batch=0' do
     assert_no_logs_deleted do
       AuditLogs.delete_old(max_age: 1, max_batch: 0)
     end
   end
 
+  # We recommend a more conservative age of 5 minutes for production,
+  # but 3 minutes suits our test data better (and is test-worthy in
+  # that it's expected to work correctly in production).
   test 'delete old audit logs with production settings' do
     initial_log_count = Log.unscoped.all.count
     AuditLogs.delete_old(max_age: 180, max_batch: 100000)
     assert_operator remaining_audit_logs.count, :<, initial_log_count
   end
 
-  test 'delete old audit logs in multiple batches' do
-    AuditLogs.delete_old(max_age: 0, max_batch: 2)
+  test 'delete all audit logs in multiple batches' do
+    AuditLogs.delete_old(max_age: 0.00001, max_batch: 2)
     assert_equal [], remaining_audit_logs.collect(&:uuid)
   end
 
   test 'delete old audit logs in thread' do
     begin
-      Rails.configuration.max_audit_log_age = 20
-      Rails.configuration.max_audit_log_delete_batch = 100000
+      Rails.configuration.AuditLogs.MaxAge = 20
+      Rails.configuration.AuditLogs.MaxDeleteBatch = 100000
       Rails.cache.delete 'AuditLogs'
       initial_log_count = Log.unscoped.all.count + 1
       act_as_system_user do