diff --git a/tests/send1.c b/tests/send1.c index a1671ac3..13d4a218 100644 --- a/tests/send1.c +++ b/tests/send1.c @@ -1182,7 +1182,7 @@ static void sendto_channel_opmod__local(void) is_client_sendq_empty(local_chan_v, "Not +o; " MSG); is_client_sendq_empty(local_chan_p, "Message source; " MSG); is_client_sendq_empty(local_chan_d, "Deaf; " MSG); - is_client_sendq(":" TEST_ME_ID " NOTICE @" TEST_CHANNEL " : Hello World!" CRLF, server, MSG); + is_client_sendq(":" TEST_ME_ID " NOTICE @" TEST_CHANNEL " : Hello World!" CRLF, server, MSG); is_client_sendq_empty(server2, "No users to receive message; " MSG); // Moderated channel @@ -1211,6 +1211,73 @@ static void sendto_channel_opmod__local(void) is_client_sendq_empty(local_chan_d, "Deaf; " MSG); is_client_sendq(":" TEST_ME_ID "90004 TEST =" TEST_CHANNEL " :Hello World!" CRLF, server, MSG); is_client_sendq_empty(server2, "No users to receive message; " MSG); + + standard_free(); +} + +static void sendto_channel_opmod_statusmsg__local(void) +{ + standard_init(); + ConfigChannel.opmod_send_statusmsg = true; + + // This function does not support TS5... + standard_ids(); + + // Without CAP_CHW | CAP_EOPMOD + standard_server_caps(0, CAP_CHW | CAP_EOPMOD); + + sendto_channel_opmod(local_chan_p, local_chan_p, channel, "TEST", "Hello World!"); + is_client_sendq_empty(user, "Not on channel; " MSG); + is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG); + is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG); + is_client_sendq_empty(local_chan_v, "Not +o; " MSG); + is_client_sendq_empty(local_chan_p, "Message source; " MSG); + is_client_sendq_empty(local_chan_d, "Deaf; " MSG); + is_client_sendq_empty(server, "No users to receive message; " MSG); + is_client_sendq_empty(server2, "No users to receive message; " MSG); + + // With CAP_CHW, without CAP_EOPMOD + standard_server_caps(CAP_CHW, CAP_EOPMOD); + + sendto_channel_opmod(local_chan_p, local_chan_p, channel, "TEST", "Hello World!"); + is_client_sendq_empty(user, "Not on channel; " MSG); + is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG); + is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG); + is_client_sendq_empty(local_chan_v, "Not +o; " MSG); + is_client_sendq_empty(local_chan_p, "Message source; " MSG); + is_client_sendq_empty(local_chan_d, "Deaf; " MSG); + is_client_sendq(":" TEST_ME_ID " NOTICE @" TEST_CHANNEL " : Hello World!" CRLF, server, MSG); + is_client_sendq_empty(server2, "No users to receive message; " MSG); + + // Moderated channel + channel->mode.mode |= MODE_MODERATED; + + sendto_channel_opmod(local_chan_p, local_chan_p, channel, "TEST", "Hello World!"); + is_client_sendq_empty(user, "Not on channel; " MSG); + is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG); + is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG); + is_client_sendq_empty(local_chan_v, "Not +o; " MSG); + is_client_sendq_empty(local_chan_p, "Message source; " MSG); + is_client_sendq_empty(local_chan_d, "Deaf; " MSG); + is_client_sendq(":" TEST_ME_ID "90004 TEST @" TEST_CHANNEL " :Hello World!" CRLF, server, MSG); + is_client_sendq_empty(server2, "No users to receive message; " MSG); + + // With CAP_CHW | CAP_EOPMOD + channel->mode.mode &= ~MODE_MODERATED; + standard_server_caps(CAP_CHW | CAP_EOPMOD, 0); + + sendto_channel_opmod(local_chan_p, local_chan_p, channel, "TEST", "Hello World!"); + is_client_sendq_empty(user, "Not on channel; " MSG); + is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG); + is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG); + is_client_sendq_empty(local_chan_v, "Not +o; " MSG); + is_client_sendq_empty(local_chan_p, "Message source; " MSG); + is_client_sendq_empty(local_chan_d, "Deaf; " MSG); + is_client_sendq(":" TEST_ME_ID "90004 TEST =" TEST_CHANNEL " :Hello World!" CRLF, server, MSG); + is_client_sendq_empty(server2, "No users to receive message; " MSG); + + ConfigChannel.opmod_send_statusmsg = false; + standard_free(); } static void sendto_channel_opmod__local__tags(void) @@ -1248,7 +1315,7 @@ static void sendto_channel_opmod__local__tags(void) is_client_sendq_empty(local_chan_v, "Not +o; " MSG); is_client_sendq_empty(local_chan_p, "Message source; " MSG); is_client_sendq_empty(local_chan_d, "Deaf; " MSG); - is_client_sendq(":" TEST_ME_ID " NOTICE @" TEST_CHANNEL " : Hello World!" CRLF, server, MSG); + is_client_sendq(":" TEST_ME_ID " NOTICE @" TEST_CHANNEL " : Hello World!" CRLF, server, MSG); is_client_sendq_empty(server2, "No users to receive message; " MSG); // Moderated channel @@ -1282,6 +1349,8 @@ static void sendto_channel_opmod__local__tags(void) is_client_sendq_empty(local_chan_d, "Deaf; " MSG); is_client_sendq(":" TEST_ME_ID "90004 TEST =" TEST_CHANNEL " :Hello World!" CRLF, server, MSG); is_client_sendq_empty(server2, "No users to receive message; " MSG); + + standard_free(); } static void sendto_channel_opmod__remote(void) @@ -1310,7 +1379,7 @@ static void sendto_channel_opmod__remote(void) is_client_sendq(":R2ChanDeaf" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG); is_client_sendq_empty(local_chan_v, "Not +o; " MSG); is_client_sendq_empty(local_chan_d, "Deaf; " MSG); - is_client_sendq(":" TEST_SERVER2_ID " NOTICE @" TEST_CHANNEL " : Hello World!" CRLF, server, MSG); + is_client_sendq(":" TEST_SERVER2_ID " NOTICE @" TEST_CHANNEL " : Hello World!" CRLF, server, MSG); is_client_sendq_empty(server2, "Message source; " MSG); // Moderated channel @@ -1339,6 +1408,63 @@ static void sendto_channel_opmod__remote(void) standard_free(); } +static void sendto_channel_opmod_statusmsg__remote(void) +{ + standard_init(); + ConfigChannel.opmod_send_statusmsg = true; + + // This function does not support TS5... + standard_ids(); + + // Without CAP_CHW | CAP_EOPMOD + standard_server_caps(0, CAP_CHW | CAP_EOPMOD); + + sendto_channel_opmod(server2, remote2_chan_d, channel, "TEST", "Hello World!"); + is_client_sendq(":R2ChanDeaf" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG); + is_client_sendq(":R2ChanDeaf" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG); + is_client_sendq_empty(local_chan_v, "Not +o; " MSG); + is_client_sendq_empty(local_chan_d, "Deaf; " MSG); + is_client_sendq_empty(server, "Message source; " MSG); + is_client_sendq_empty(server2, "No users to receive message; " MSG); + + // With CAP_CHW, without CAP_EOPMOD + standard_server_caps(CAP_CHW, CAP_EOPMOD); + + sendto_channel_opmod(server2, remote2_chan_d, channel, "TEST", "Hello World!"); + is_client_sendq(":R2ChanDeaf" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG); + is_client_sendq(":R2ChanDeaf" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG); + is_client_sendq_empty(local_chan_v, "Not +o; " MSG); + is_client_sendq_empty(local_chan_d, "Deaf; " MSG); + is_client_sendq(":" TEST_SERVER2_ID " NOTICE @" TEST_CHANNEL " : Hello World!" CRLF, server, MSG); + is_client_sendq_empty(server2, "Message source; " MSG); + + // Moderated channel + channel->mode.mode |= MODE_MODERATED; + + sendto_channel_opmod(server2, remote2_chan_d, channel, "TEST", "Hello World!"); + is_client_sendq(":R2ChanDeaf" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG); + is_client_sendq(":R2ChanDeaf" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG); + is_client_sendq_empty(local_chan_v, "Not +o; " MSG); + is_client_sendq_empty(local_chan_d, "Deaf; " MSG); + is_client_sendq(":" TEST_SERVER2_ID "90205 TEST @" TEST_CHANNEL " :Hello World!" CRLF, server, MSG); + is_client_sendq_empty(server2, "Message source; " MSG); + + // With CAP_CHW | CAP_EOPMOD + channel->mode.mode &= ~MODE_MODERATED; + standard_server_caps(CAP_CHW | CAP_EOPMOD, 0); + + sendto_channel_opmod(server2, remote2_chan_d, channel, "TEST", "Hello World!"); + is_client_sendq(":R2ChanDeaf" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG); + is_client_sendq(":R2ChanDeaf" TEST_ID_SUFFIX " TEST @" TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG); + is_client_sendq_empty(local_chan_v, "Not +o; " MSG); + is_client_sendq_empty(local_chan_d, "Deaf; " MSG); + is_client_sendq(":" TEST_SERVER2_ID "90205 TEST =" TEST_CHANNEL " :Hello World!" CRLF, server, MSG); + is_client_sendq_empty(server2, "Message source; " MSG); + + ConfigChannel.opmod_send_statusmsg = false; + standard_free(); +} + static void sendto_channel_opmod__remote__tags(void) { standard_init(); @@ -1370,7 +1496,7 @@ static void sendto_channel_opmod__remote__tags(void) is_client_sendq("@time=" ADVENTURE_TIME " :R2ChanDeaf" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG); is_client_sendq_empty(local_chan_v, "Not +o; " MSG); is_client_sendq_empty(local_chan_d, "Deaf; " MSG); - is_client_sendq(":" TEST_SERVER2_ID " NOTICE @" TEST_CHANNEL " : Hello World!" CRLF, server, MSG); + is_client_sendq(":" TEST_SERVER2_ID " NOTICE @" TEST_CHANNEL " : Hello World!" CRLF, server, MSG); is_client_sendq_empty(server2, "Message source; " MSG); // Moderated channel @@ -4939,8 +5065,10 @@ int main(int argc, char *argv[]) sendto_channel_flags__remote__chanop_voice(); sendto_channel_opmod__local(); + sendto_channel_opmod_statusmsg__local(); sendto_channel_opmod__local__tags(); sendto_channel_opmod__remote(); + sendto_channel_opmod_statusmsg__remote(); sendto_channel_opmod__remote__tags(); sendto_channel_local1(); sendto_channel_local1__tags();