Module:Sensitive IP addresses/blocktext/testcases: Difference between revisions
Appearance
Content deleted Content added
add a test for parseSensitivityData |
add more tests for parseSensitivityData |
||
Line 159: | Line 159: | ||
) |
) |
||
end |
end |
||
function suite:test_parse_sensitivity_data_for_us_senate_range() |
|||
local ipData = { |
|||
sensitiveips = { |
|||
entities = { |
|||
ussenate = { |
|||
description = "the [[United States Senate]]", |
|||
id = "ussenate", |
|||
ipv4Ranges = {"156.33.0.0/16"}, |
|||
ipv6Ranges = {"2620:0:8a0::/48", "2600:803:618::/48"}, |
|||
name = "United States Senate", |
|||
reason = "political", |
|||
}, |
|||
}, |
|||
["entity-ids"] = {"ussenate"}, |
|||
["matched-ranges"] = { |
|||
["156.33.0.0/16"] = { |
|||
["entity-id"] = "ussenate", |
|||
["ip-version"] = "IPv4", |
|||
range = "156.33.0.0/16", |
|||
}, |
|||
}, |
|||
matches = { |
|||
{ |
|||
["entity-id"] = "ussenate", |
|||
["ip-version"] = "IPv4", |
|||
["matches-range"] = "156.33.0.0/16", |
|||
range = "156.33.0.0/24", |
|||
type = "range", |
|||
}, |
|||
}, |
|||
}, |
|||
} |
|||
self:assertDeepEquals( |
|||
{ |
|||
type = 'range', |
|||
range = '156.33.0.0/24', |
|||
['entity-id'] = 'ussenate', |
|||
['matches-range'] = '156.33.0.0/16', |
|||
['entity-name'] = 'United States Senate', |
|||
['entity-description'] = 'the [[United States Senate]]', |
|||
reason = 'political', |
|||
}, |
|||
parseSensitivityData(ipData) |
|||
) |
|||
end |
|||
function suite:test_parse_sensitivity_data_when_no_match_occurs() |
|||
local ipData = { |
|||
sensitiveips = { |
|||
entities = {}, |
|||
["entity-ids"] = {}, |
|||
["matched-ranges"] = {}, |
|||
matches = {}, |
|||
}, |
|||
} |
|||
self:assertEquals(nil, parseSensitivityData(ipData)) |
|||
end |
|||
function suite:test_parse_sensitivity_data_when_an_error_occurs() |
|||
local ipData = { |
|||
error = { |
|||
["*"] = "See https://en.wikipedia.org/wiki/Module:Sensitive_IP_addresses/API for API usage", |
|||
code = "sipa-invalid-test-string", |
|||
info = "test string #1 'foo' was not a valid IP address or CIDR string", |
|||
}, |
|||
} |
|||
self:assertEquals(nil, parseSensitivityData(ipData)) |
|||
end |
|||
return suite |
return suite |
Revision as of 14:19, 8 October 2018
![]() | This is the test cases page for the module Module:Sensitive IP addresses/blocktext. Results of the test cases. |
-- Unit tests for [[Module:Sensitive IP addresses/blocktext]]
local mBlockText = require('Module:Sensitive IP addresses/blocktext')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
local mBlockTextFunctions = mBlockText._exportFunctions()
local parseTitle = mBlockTextFunctions.parseTitle
local fetchSensitivityData = mBlockTextFunctions.fetchSensitivityData
local parseSensitivityData = mBlockTextFunctions.parseSensitivityData
-------------------------------------------------------------------------------
-- parseTitle tests
-------------------------------------------------------------------------------
function suite:test_parse_special_block_with_ipv4_address()
self:assertEquals(
'1.2.3.4',
parseTitle(mw.title.new('Special:Block/1.2.3.4'))
)
end
function suite:test_parse_special_block_with_ipv4_range()
self:assertEquals(
'1.2.3.0/24',
parseTitle(mw.title.new('Special:Block/1.2.3.0/24'))
)
end
function suite:test_parse_special_block_with_ipv6_address()
self:assertEquals(
'2001:db8::ff00:12:3456',
parseTitle(mw.title.new('Special:Block/2001:db8::ff00:12:3456'))
)
end
function suite:test_parse_special_block_with_ipv6_range()
self:assertEquals(
'2001:db8::ff00:12:0/122',
parseTitle(mw.title.new('Special:Block/2001:db8::ff00:12:0/122'))
)
end
function suite:test_parse_special_block_with_username()
self:assertEquals(
nil,
parseTitle(mw.title.new('Special:Block/Example'))
)
end
function suite:test_parse_special_block_with_non_normalized_ipv6_address()
self:assertEquals(
'2001:db8::ff00:12:3456',
parseTitle(mw.title.new('Special:Block/2001:db8:0:0::ff00:12:3456'))
)
end
function suite:test_parse_special_block_with_invalid_ipv4_address()
self:assertEquals(
nil,
parseTitle(mw.title.new('Special:Block/1.2.3.256'))
)
end
function suite:test_parse_special_block_in_french()
self:assertEquals(
'1.2.3.4',
parseTitle(mw.title.new('Spécial:Bloquer/1.2.3.4'))
)
end
-------------------------------------------------------------------------------
-- fetchSensitivityData tests
--
-- Here we test against the live sensitivity data, which means that changes to
-- that module could make these tests fail. This is bad for isolation but a
-- good quick check that the interface is working. To reduce the chance of test
-- failures because of data changes, only test one or two items, only test the
-- items that are least likely to change, and only test the data points that we
-- need.
-------------------------------------------------------------------------------
function suite:test_fetch_sensitivity_data_for_us_senate_ip()
local ipData = fetchSensitivityData('156.33.0.1')
self:assertEquals('ussenate', ipData.sensitiveips.matches[1]['entity-id'])
self:assertEquals('156.33.0.1', ipData.sensitiveips.matches[1].ip)
self:assertTrue(ipData.sensitiveips.entities.ussenate.description:find('Senate'))
self:assertEquals('political', ipData.sensitiveips.entities.ussenate.reason)
end
function suite:test_fetch_sensitivity_data_for_us_senate_range()
local ipData = fetchSensitivityData('156.33.0.0/24')
self:assertEquals('ussenate', ipData.sensitiveips.matches[1]['entity-id'])
self:assertEquals('156.33.0.0/24', ipData.sensitiveips.matches[1].range)
self:assertTrue(ipData.sensitiveips.entities.ussenate.description:find('Senate'))
self:assertEquals('political', ipData.sensitiveips.entities.ussenate.reason)
end
function suite:test_fetch_sensitivity_data_for_wmf_ip()
local ipData = fetchSensitivityData('185.15.56.1')
self:assertEquals('wmf', ipData.sensitiveips.matches[1]['entity-id'])
self:assertEquals('185.15.56.1', ipData.sensitiveips.matches[1].ip)
self:assertTrue(ipData.sensitiveips.entities.wmf.description:find('Wikimedia Foundation'))
self:assertEquals('technical', ipData.sensitiveips.entities.wmf.reason)
end
function suite:test_fetch_sensitivity_data_for_private_ip()
local ipData = fetchSensitivityData('10.0.0.1')
self:assertEquals(0, #ipData.sensitiveips.matches)
end
-------------------------------------------------------------------------------
-- parseSensitivityData tests
-------------------------------------------------------------------------------
function suite:test_parse_sensitivity_data_for_us_senate_ip()
local ipData = {
sensitiveips = {
entities = {
ussenate = {
description = "the [[United States Senate]]",
id = "ussenate",
ipv4Ranges = {"156.33.0.0/16"},
ipv6Ranges = {"2620:0:8a0::/48", "2600:803:618::/48"},
name = "United States Senate",
reason = "political",
},
},
["entity-ids"] = {"ussenate"},
["matched-ranges"] = {
["156.33.0.0/16"] = {
["entity-id"] = "ussenate",
["ip-version"] = "IPv4",
range = "156.33.0.0/16",
},
},
matches = {
{
["entity-id"] = "ussenate",
ip = "156.33.0.1",
["ip-version"] = "IPv4",
["matches-range"] = "156.33.0.0/16",
type = "ip",
},
},
},
}
self:assertDeepEquals(
{
type = 'ip',
ip = '156.33.0.1',
['entity-id'] = 'ussenate',
['matches-range'] = '156.33.0.0/16',
['entity-name'] = 'United States Senate',
['entity-description'] = 'the [[United States Senate]]',
reason = 'political',
},
parseSensitivityData(ipData)
)
end
function suite:test_parse_sensitivity_data_for_us_senate_range()
local ipData = {
sensitiveips = {
entities = {
ussenate = {
description = "the [[United States Senate]]",
id = "ussenate",
ipv4Ranges = {"156.33.0.0/16"},
ipv6Ranges = {"2620:0:8a0::/48", "2600:803:618::/48"},
name = "United States Senate",
reason = "political",
},
},
["entity-ids"] = {"ussenate"},
["matched-ranges"] = {
["156.33.0.0/16"] = {
["entity-id"] = "ussenate",
["ip-version"] = "IPv4",
range = "156.33.0.0/16",
},
},
matches = {
{
["entity-id"] = "ussenate",
["ip-version"] = "IPv4",
["matches-range"] = "156.33.0.0/16",
range = "156.33.0.0/24",
type = "range",
},
},
},
}
self:assertDeepEquals(
{
type = 'range',
range = '156.33.0.0/24',
['entity-id'] = 'ussenate',
['matches-range'] = '156.33.0.0/16',
['entity-name'] = 'United States Senate',
['entity-description'] = 'the [[United States Senate]]',
reason = 'political',
},
parseSensitivityData(ipData)
)
end
function suite:test_parse_sensitivity_data_when_no_match_occurs()
local ipData = {
sensitiveips = {
entities = {},
["entity-ids"] = {},
["matched-ranges"] = {},
matches = {},
},
}
self:assertEquals(nil, parseSensitivityData(ipData))
end
function suite:test_parse_sensitivity_data_when_an_error_occurs()
local ipData = {
error = {
["*"] = "See https://en.wikipedia.org/wiki/Module:Sensitive_IP_addresses/API for API usage",
code = "sipa-invalid-test-string",
info = "test string #1 'foo' was not a valid IP address or CIDR string",
},
}
self:assertEquals(nil, parseSensitivityData(ipData))
end
return suite