Convert ACL fixture to a factory, and add some tests
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 26 Oct 2016 08:15:56 +0000 (09:15 +0100)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 26 Oct 2016 08:15:56 +0000 (09:15 +0100)
The fixture was unused, so I took the opportunity to put in a couple
of basic model tests.

app/models/acl.rb
test/factories/acls.rb [new file with mode: 0644]
test/fixtures/acls.yml [deleted file]
test/models/acl_test.rb

index 8bb4ae4b9dd8ebf294419aa141ebeaea5f4d7994..529ccbe3bc26640dfb057674aca5b433ec1582d3 100644 (file)
@@ -1,4 +1,6 @@
 class Acl < ActiveRecord::Base
+  validates :k, :presence => true
+
   def self.match(address, domain = nil)
     if domain
       Acl.where("address >>= ? OR domain = ?", address, domain)
diff --git a/test/factories/acls.rb b/test/factories/acls.rb
new file mode 100644 (file)
index 0000000..3f91df3
--- /dev/null
@@ -0,0 +1,5 @@
+FactoryGirl.define do
+  factory :acl do
+    sequence(:k) { |n| "Key #{n}" }
+  end
+end
diff --git a/test/fixtures/acls.yml b/test/fixtures/acls.yml
deleted file mode 100644 (file)
index 399e088..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-
-one:
-  address: 1
-  netmask: 1
-  k: MyText
-  v: MyText
-
-two:
-  address: 1
-  netmask: 1
-  k: MyText
-  v: MyText
index 4022b8adb0673aeb51679620e68b6ee2d68b0e2c..189f92677019bae19f1f7c557563b64f243ae668 100644 (file)
@@ -1,8 +1,22 @@
 require "test_helper"
 
 class AclTest < ActiveSupport::TestCase
-  # Replace this with your real tests.
-  def test_truth
-    assert true
+  def test_k_required
+    acl = create(:acl)
+    assert acl.valid?
+    acl.k = nil
+    assert !acl.valid?
+  end
+
+  def test_no_account_creation_by_subnet
+    assert !Acl.no_account_creation("192.168.1.1")
+    create(:acl, :address => "192.168.0.0/16", :k => "no_account_creation")
+    assert Acl.no_account_creation("192.168.1.1")
+  end
+
+  def test_no_account_creation_by_domain
+    assert !Acl.no_account_creation("192.168.1.1", "example.com")
+    create(:acl, :domain => "example.com", :k => "no_account_creation")
+    assert Acl.no_account_creation("192.168.1.1", "example.com")
   end
 end