Add more tests logic

This commit is contained in:
aya 2025-02-23 13:19:11 +02:00
parent 4f580615ef
commit 42333217dc
2 changed files with 158 additions and 5 deletions

View File

@ -12,7 +12,7 @@ import (
"google.golang.org/protobuf/proto"
)
func TestStoreQueryFromPeer(t *testing.T) {
func TestStoreQuery3Nodes(t *testing.T) {
Debug("Starting test to verify store query from a peer using direct peer connections")
node1Config := DefaultWakuConfig
@ -62,8 +62,8 @@ func TestStoreQueryFromPeer(t *testing.T) {
Timestamp: proto.Int64(time.Now().UnixNano()),
})
defaultPubsubTopic := DefaultPubsubTopic
msgHash, err := node1.RelayPublishNoCTX(defaultPubsubTopic, message)
queryTimestamp := proto.Int64(time.Now().UnixNano())
msgHash, err := node1.RelayPublishNoCTX(DefaultPubsubTopic, message)
require.NoError(t, err, "Failed to publish message from Node1")
Debug("Waiting for message delivery to Node2")
@ -74,7 +74,10 @@ func TestStoreQueryFromPeer(t *testing.T) {
require.NoError(t, err, "Node2 should have received the message")
Debug("Node3 querying stored messages from Node2")
res, err := node3.GetStoredMessages(node2, nil)
storeQueryRequest := &common.StoreQueryRequest{
TimeStart: queryTimestamp,
}
res, err := node3.GetStoredMessages(node2, storeQueryRequest)
var storedMessages = *res.Messages
require.NoError(t, err, "Failed to retrieve stored messages from Node2")
require.NotEmpty(t, storedMessages, "Expected at least one stored message")
@ -807,5 +810,109 @@ func TestCheckStoredMSGsEphemeralFalse(t *testing.T) {
require.NoError(t, err, "Failed to query store messages from Node2")
require.Equal(t, 1, len(*storedmsgs.Messages), "Expected exactly one stored message")
Debug("Test successfully verified that exactly one non-ephemeral message is stored")
Debug("Test finished successfully ")
}
func TestCheckLegacyStore(t *testing.T) {
Debug("Starting test ")
node1Config := DefaultWakuConfig
node1Config.Relay = true
Debug("Creating Node1 ")
node1, err := StartWakuNode("Node1", &node1Config)
require.NoError(t, err, "Failed to start Node1")
node2Config := DefaultWakuConfig
node2Config.Relay = true
node2Config.Store = true
node2Config.LegacyStore = true
Debug("Creating Node2")
node2, err := StartWakuNode("Node2", &node2Config)
require.NoError(t, err, "Failed to start Node2")
defer func() {
Debug("Stopping and destroying both nodes")
node1.StopAndDestroy()
node2.StopAndDestroy()
}()
Debug("Connecting Node2 to Node1")
err = node2.ConnectPeer(node1)
require.NoError(t, err, "Failed to connect Node2 to Node1")
queryTimestamp := proto.Int64(time.Now().UnixNano())
Debug("Sender Node1 is publishing a message")
message := node1.CreateMessage()
msgHash, err := node1.RelayPublishNoCTX(DefaultPubsubTopic, message)
require.NoError(t, err)
require.NotEmpty(t, msgHash)
Debug("Querying stored messages from Node2 using Node1")
storeQueryRequest := &common.StoreQueryRequest{
TimeStart: queryTimestamp,
}
storedmsgs, err := node1.GetStoredMessages(node2, storeQueryRequest)
require.NoError(t, err, "Failed to query store messages from Node2")
require.Equal(t, 1, len(*storedmsgs.Messages), "Expected exactly one stored message")
Debug("Test finished successfully ")
}
func TestStoredMessagesWithVDifferentPayloads(t *testing.T) {
Debug("Starting test ")
node1Config := DefaultWakuConfig
node1Config.Relay = true
Debug("Creating Node1")
node1, err := StartWakuNode("Node1", &node1Config)
require.NoError(t, err, "Failed to start Node1")
node2Config := DefaultWakuConfig
node2Config.Relay = true
node2Config.Store = true
Debug("Creating Node2 ")
node2, err := StartWakuNode("Node2", &node2Config)
require.NoError(t, err, "Failed to start Node2")
defer func() {
Debug("Stopping and destroying both nodes")
node1.StopAndDestroy()
node2.StopAndDestroy()
}()
Debug("Connecting Node2 to Node1")
err = node2.ConnectPeer(node1)
require.NoError(t, err, "Failed to connect Node2 to Node1")
for _, pLoad := range SAMPLE_INPUTS {
queryTimestamp := proto.Int64(time.Now().UnixNano())
Debug("Sender Node1 is publishing message with payload: %s", pLoad.Value)
message := node1.CreateMessage()
message.Payload = []byte(pLoad.Value)
msgHash, err := node1.RelayPublishNoCTX(DefaultPubsubTopic, message)
require.NoError(t, err, "Failed to publish message")
require.NotEmpty(t, msgHash, "Message hash is empty")
Debug("Querying stored messages from Node2 using Node1")
storeQueryRequest := &common.StoreQueryRequest{
TimeStart: queryTimestamp,
IncludeData: true,
}
storedmsgs, err := node1.GetStoredMessages(node2, storeQueryRequest)
require.NoError(t, err, "Failed to query store messages from Node2")
retrievedMessage := (*storedmsgs.Messages)[0]
require.Equal(t, pLoad.Value, string(retrievedMessage.WakuMessage.Payload), "Expected WakuMessage but got nil")
Debug("Payload matches expected %s", string(retrievedMessage.WakuMessage.Payload))
}
Debug("Test finished successfully ")
}

View File

@ -49,3 +49,49 @@ var (
MinPort = 1024 // Minimum allowable port (exported)
MaxPort = 65535 // Maximum allowable port (exported)
)
var SAMPLE_INPUTS = []struct {
Description string
Value string
}{
{"A simple string", "Hello World!"},
{"An integer", "1234567890"},
{"A dictionary", `{"key": "value"}`},
{"Chinese characters", "这是一些中文"},
{"Emojis", "🚀🌟✨"},
{"Lorem ipsum text", "Lorem ipsum dolor sit amet"},
{"HTML content", "<html><body>Hello</body></html>"},
{"Cyrillic characters", "\u041f\u0440\u0438\u0432\u0435\u0442"},
{"Base64 encoded string", "Base64==dGVzdA=="},
{"Binary data", "d29ya2luZyB3aXRoIGJpbmFyeSBkYXRh: \x50\x51"},
{"Special characters with whitespace", "\t\nSpecial\tCharacters\n"},
{"Boolean false as a string", "False"},
{"A float number", "3.1415926535"},
{"A list", "[1, 2, 3, 4, 5]"},
{"Hexadecimal number as a string", "0xDEADBEEF"},
{"Email format", "user@example.com"},
{"URL format", "http://example.com"},
{"Date and time in ISO format", "2023-11-01T12:00:00Z"},
{"String with escaped quotes", `"Escaped" \"quotes\"`},
{"A regular expression", "Regular expression: ^[a-z0-9_-]{3,16}$"},
{"A very long string", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},
{"A JSON string", `{"name": "John", "age": 30, "city": "New York"}`},
{"A Unix path", "/usr/local/bin"},
{"A Windows path", "C:\\Windows\\System32"},
{"An SQL query", "SELECT * FROM users WHERE id = 1;"},
{"JavaScript code snippet", "function test() { console.log('Hello World'); }"},
{"A CSS snippet", "body { background-color: #fff; }"},
{"A Python one-liner", "print('Hello World')"},
{"An IP address", "192.168.1.1"},
{"A domain name", "www.example.com"},
{"A user agent string", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"},
{"A credit card number", "1234-5678-9012-3456"},
{"A phone number", "+1234567890"},
{"A UUID", "123e4567-e89b-12d3-a456-426614174000"},
{"A hashtag", "#helloWorld"},
{"A Twitter handle", "@username"},
{"A password", "P@ssw0rd!"},
{"A date in common format", "01/11/2023"},
{"A time string", "12:00:00"},
{"A mathematical equation", "E = mc^2"},
}