Use real metadata keys

This commit is contained in:
2023-04-15 20:32:18 +02:00
parent 6c5595539c
commit 10c1772121

View File

@ -18,9 +18,6 @@ CLIENT_NICKS = {
class MetadataTestCase(cases.BaseServerTestCase): class MetadataTestCase(cases.BaseServerTestCase):
valid_metadata_keys = {"valid_key1", "valid_key2"}
invalid_metadata_keys = {"invalid_key1", "invalid_key2"}
def getBatchMessages(self, client): def getBatchMessages(self, client):
messages = self.getMessages(client) messages = self.getMessages(client)
@ -40,7 +37,7 @@ class MetadataTestCase(cases.BaseServerTestCase):
self.connectClient( self.connectClient(
"foo", capabilities=["draft/metadata-2", "batch"], skip_if_cap_nak=True "foo", capabilities=["draft/metadata-2", "batch"], skip_if_cap_nak=True
) )
self.sendLine(1, "METADATA * GET valid_key1") self.sendLine(1, "METADATA * GET display-name")
(batch_id, messages) = self.getBatchMessages(1) (batch_id, messages) = self.getBatchMessages(1)
self.assertEqual(len(messages), 1, fail_msg="Expected one ERR_NOMATCHINGKEY") self.assertEqual(len(messages), 1, fail_msg="Expected one ERR_NOMATCHINGKEY")
@ -61,7 +58,7 @@ class MetadataTestCase(cases.BaseServerTestCase):
self.connectClient( self.connectClient(
"foo", capabilities=["draft/metadata-2", "batch"], skip_if_cap_nak=True "foo", capabilities=["draft/metadata-2", "batch"], skip_if_cap_nak=True
) )
self.sendLine(1, "METADATA * GET valid_key1 valid_key2") self.sendLine(1, "METADATA * GET display-name avatar")
(batch_id, messages) = self.getBatchMessages(1) (batch_id, messages) = self.getBatchMessages(1)
self.assertEqual(len(messages), 2, fail_msg="Expected two ERR_NOMATCHINGKEY") self.assertEqual(len(messages), 2, fail_msg="Expected two ERR_NOMATCHINGKEY")
self.assertMessageMatch( self.assertMessageMatch(
@ -72,9 +69,9 @@ class MetadataTestCase(cases.BaseServerTestCase):
) )
self.assertMessageMatch( self.assertMessageMatch(
messages[0], messages[0],
params=["foo", "foo", "valid_key1", ANYSTR], params=["foo", "foo", "display-name", ANYSTR],
fail_msg="Response to “METADATA * GET valid_key1 valid_key2" fail_msg="Response to “METADATA * GET display-name avatar"
"did not respond to valid_key1 first: {msg}", "did not respond to display-name first: {msg}",
) )
self.assertMessageMatch( self.assertMessageMatch(
messages[1], messages[1],
@ -84,9 +81,9 @@ class MetadataTestCase(cases.BaseServerTestCase):
) )
self.assertMessageMatch( self.assertMessageMatch(
messages[1], messages[1],
params=["foo", "foo", "valid_key2", ANYSTR], params=["foo", "foo", "avatar", ANYSTR],
fail_msg="Response to “METADATA * GET valid_key1 valid_key2" fail_msg="Response to “METADATA * GET display-name avatar"
"did not respond to valid_key2 as second response: {msg}", "did not respond to avatar as second response: {msg}",
) )
@cases.mark_specifications("IRCv3") @cases.mark_specifications("IRCv3")
@ -167,8 +164,8 @@ class MetadataTestCase(cases.BaseServerTestCase):
self.connectClient( self.connectClient(
"foo", capabilities=["draft/metadata-2", "batch"], skip_if_cap_nak=True "foo", capabilities=["draft/metadata-2", "batch"], skip_if_cap_nak=True
) )
self.assertSetValue(1, set_target, "valid_key1", "myvalue") self.assertSetValue(1, set_target, "display-name", "Foo The First")
self.assertGetValue(1, get_target, "valid_key1", "myvalue") self.assertGetValue(1, get_target, "display-name", "Foo The First")
@cases.mark_specifications("IRCv3") @cases.mark_specifications("IRCv3")
def testSetGetAgain(self): def testSetGetAgain(self):
@ -176,8 +173,8 @@ class MetadataTestCase(cases.BaseServerTestCase):
self.connectClient( self.connectClient(
"foo", capabilities=["draft/metadata-2", "batch"], skip_if_cap_nak=True "foo", capabilities=["draft/metadata-2", "batch"], skip_if_cap_nak=True
) )
self.assertSetGetValue(1, "*", "valid_key1", "myvalue1") self.assertSetGetValue(1, "*", "display-name", "Foo The First")
self.assertSetGetValue(1, "*", "valid_key1", "myvalue2") self.assertSetGetValue(1, "*", "display-name", "Foo The Second")
@cases.mark_specifications("IRCv3") @cases.mark_specifications("IRCv3")
def testSetGetChannel(self): def testSetGetChannel(self):
@ -194,13 +191,13 @@ class MetadataTestCase(cases.BaseServerTestCase):
self.getMessages(2) self.getMessages(2)
self.getMessages(1) self.getMessages(1)
self.assertSetGetValue(1, "#chan", "valid_key1", "myvalue1") self.assertSetGetValue(1, "#chan", "display-name", "Hash Channel")
self.assertEqual( self.assertEqual(
self.getMessages(2), self.getMessages(2),
[], [],
fail_msg="Unexpected messages after other user used METADATA SET: {got}", fail_msg="Unexpected messages after other user used METADATA SET: {got}",
) )
self.assertGetValue(2, "#chan", "valid_key1", "myvalue1") self.assertGetValue(2, "#chan", "display-name", "Hash Channel")
@cases.mark_specifications("IRCv3") @cases.mark_specifications("IRCv3")
def testGetOtherUser(self): def testGetOtherUser(self):
@ -219,13 +216,13 @@ class MetadataTestCase(cases.BaseServerTestCase):
self.getMessages(2) self.getMessages(2)
self.getMessages(1) self.getMessages(1)
self.assertSetValue(1, "*", "valid_key1", "myvalue1") self.assertSetValue(1, "*", "display-name", "Foo The First")
self.assertEqual( self.assertEqual(
self.getMessages(2), self.getMessages(2),
[], [],
fail_msg="Unexpected messages after other user used METADATA SET: {got}", fail_msg="Unexpected messages after other user used METADATA SET: {got}",
) )
self.assertGetValue(2, "foo", "valid_key1", "myvalue1") self.assertGetValue(2, "foo", "display-name", "Foo The First")
@cases.mark_specifications("IRCv3") @cases.mark_specifications("IRCv3")
def testSetGetChannelNotOp(self): def testSetGetChannelNotOp(self):
@ -242,11 +239,11 @@ class MetadataTestCase(cases.BaseServerTestCase):
self.getMessages(2) self.getMessages(2)
self.getMessages(1) self.getMessages(1)
self.sendLine(2, "METADATA #chan SET valid_key1 myvalue") self.sendLine(2, "METADATA #chan SET display-name :Sharp Channel")
self.assertMessageMatch( self.assertMessageMatch(
self.getMessage(2), self.getMessage(2),
command="FAIL", command="FAIL",
params=["METADATA", "KEY_NO_PERMISSION", "#chan", "valid_key1", ANYSTR], params=["METADATA", "KEY_NO_PERMISSION", "#chan", "display-name", ANYSTR],
) )
self.assertEqual( self.assertEqual(
@ -274,11 +271,11 @@ class MetadataTestCase(cases.BaseServerTestCase):
self.getMessages(2) self.getMessages(2)
self.getMessages(1) self.getMessages(1)
self.sendLine(1, "METADATA bar SET valid_key1 myvalue") self.sendLine(1, "METADATA bar SET display-name :Totally Not Foo")
self.assertMessageMatch( self.assertMessageMatch(
self.getMessage(1), self.getMessage(1),
command="FAIL", command="FAIL",
params=["METADATA", "KEY_NO_PERMISSION", "bar", "valid_key1", ANYSTR], params=["METADATA", "KEY_NO_PERMISSION", "bar", "display-name", ANYSTR],
) )
self.assertEqual( self.assertEqual(
@ -301,14 +298,14 @@ class MetadataTestCase(cases.BaseServerTestCase):
self.requestCapabilities(1, ["draft/metadata-2", "batch"], skip_if_cap_nak=True) self.requestCapabilities(1, ["draft/metadata-2", "batch"], skip_if_cap_nak=True)
self.assertSetValue(1, "*", "valid_key1", "myvalue") self.assertSetValue(1, "*", "display-name", "Foo The First")
self.sendLine(1, "NICK foo") self.sendLine(1, "NICK foo")
self.sendLine(1, "USER foo 0 * :foo") self.sendLine(1, "USER foo 0 * :foo")
self.sendLine(1, "CAP END") self.sendLine(1, "CAP END")
self.skipToWelcome(1) self.skipToWelcome(1)
self.assertGetValue(1, "*", "valid_key1", "myvalue") self.assertGetValue(1, "*", "display-name", "Foo The First")
@cases.mark_specifications("IRCv3") @cases.mark_specifications("IRCv3")
def testSetGetHeartInValue(self): def testSetGetHeartInValue(self):
@ -322,7 +319,7 @@ class MetadataTestCase(cases.BaseServerTestCase):
self.assertSetGetValue( self.assertSetGetValue(
1, 1,
"*", "*",
"valid_key1", "display-name",
"->{}<-".format(heart), "->{}<-".format(heart),
) )
@ -333,7 +330,7 @@ class MetadataTestCase(cases.BaseServerTestCase):
# Sending directly because it is not valid UTF-8 so Python would # Sending directly because it is not valid UTF-8 so Python would
# not like it # not like it
self.clients[1].conn.sendall( self.clients[1].conn.sendall(
b"METADATA * SET valid_key1 " b":invalid UTF-8 ->\xc3<-\r\n" b"METADATA * SET display-name :invalid UTF-8 ->\xc3<-\r\n"
) )
try: try:
commands = {m.command for m in self.getMessages(1)} commands = {m.command for m in self.getMessages(1)}
@ -345,7 +342,7 @@ class MetadataTestCase(cases.BaseServerTestCase):
fail_msg="Setting METADATA key to a value containing invalid " fail_msg="Setting METADATA key to a value containing invalid "
"UTF-8 was answered with 761 (RPL_KEYVALUE)", "UTF-8 was answered with 761 (RPL_KEYVALUE)",
) )
self.clients[1].conn.sendall(b"METADATA * SET valid_key1 :" + value + b"\r\n") self.clients[1].conn.sendall(b"METADATA * SET display-name :" + value + b"\r\n")
self.assertMessageMatch( self.assertMessageMatch(
self.getMessage(1), self.getMessage(1),
command="FAIL", command="FAIL",