]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'openstreetmap/pull/1337'
authorTom Hughes <tom@compton.nu>
Wed, 26 Oct 2016 14:41:30 +0000 (15:41 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 26 Oct 2016 14:41:30 +0000 (15:41 +0100)
app/controllers/changeset_controller.rb
app/controllers/user_preference_controller.rb
app/models/acl.rb
app/models/node.rb
app/models/relation.rb
app/models/trace.rb
app/models/way.rb
test/factories/acls.rb [new file with mode: 0644]
test/fixtures/acls.yml [deleted file]
test/models/acl_test.rb

index 09bad34bc07f3a19f69afd6ef24a7ccdaac7aa00..da066a73afa4bc703f293067ad536ea7c63536e7 100644 (file)
@@ -83,7 +83,7 @@ class ChangesetController < ApplicationController
 
     # the request is in pseudo-osm format... this is kind-of an
     # abuse, maybe should change to some other format?
-    doc = XML::Parser.string(request.raw_post).parse
+    doc = XML::Parser.string(request.raw_post, :options => XML::Parser::Options::NOERROR).parse
     doc.find("//osm/node").each do |n|
       lon << n["lon"].to_f * GeoRecord::SCALE
       lat << n["lat"].to_f * GeoRecord::SCALE
index 78ab45308e874a9d7e56cad7efab1c6d63ca32c4..bf9bab213296f1ad4bc3324b480ad89f9a4895cd 100644 (file)
@@ -39,7 +39,7 @@ class UserPreferenceController < ApplicationController
 
     new_preferences = {}
 
-    doc = XML::Parser.string(request.raw_post).parse
+    doc = XML::Parser.string(request.raw_post, :options => XML::Parser::Options::NOERROR).parse
 
     doc.find("//preferences/preference").each do |pt|
       if preference = old_preferences.delete(pt["k"])
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)
index 578735688be4253bb90bef0967c9f7244aee5de4..2a64259c10c0832d16c4ec8e2008aa7e34985947 100644 (file)
@@ -49,7 +49,7 @@ class Node < ActiveRecord::Base
 
   # Read in xml as text and return it's Node object representation
   def self.from_xml(xml, create = false)
-    p = XML::Parser.string(xml)
+    p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
     doc = p.parse
 
     doc.find("//osm/node").each do |pt|
index 4c80be210e6c64ef23004641f2d64ed8d6c770d0..ed37d159af3422437bdda4d00ce0319b381a3417 100644 (file)
@@ -36,7 +36,7 @@ class Relation < ActiveRecord::Base
   TYPES = %w(node way relation).freeze
 
   def self.from_xml(xml, create = false)
-    p = XML::Parser.string(xml)
+    p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
     doc = p.parse
 
     doc.find("//osm/relation").each do |pt|
index 85c0244d5b89175e595e436119280feb7b8b8ec3..47e5c38b7ee79be23de54384a73b11d0bf881006 100644 (file)
@@ -174,7 +174,7 @@ class Trace < ActiveRecord::Base
 
   # Read in xml as text and return it's Node object representation
   def self.from_xml(xml, create = false)
-    p = XML::Parser.string(xml)
+    p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
     doc = p.parse
 
     doc.find("//osm/gpx_file").each do |pt|
index ecbdd2f9ccd054ab4120fe7f627afb0c93f14e5c..98c4902f9e693cd2396aaf84761df00c0c3a8d83 100644 (file)
@@ -34,7 +34,7 @@ class Way < ActiveRecord::Base
 
   # Read in xml as text and return it's Way object representation
   def self.from_xml(xml, create = false)
-    p = XML::Parser.string(xml)
+    p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
     doc = p.parse
 
     doc.find("//osm/way").each do |pt|
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