summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-11-04 09:13:33 -0300
committerEuAndreh <eu@euandre.org>2024-11-04 15:50:31 -0300
commit1feab2105ac464747b231232f53f4ac335f4467f (patch)
treecb4fd127f2bb59aa70deb44a8f7a30944f9a7936 /tests
parentmv doc/rfc/ doc/rfcs; Add newer related rfcs (diff)
downloadpapod-1feab2105ac464747b231232f53f4ac335f4467f.tar.gz
papod-1feab2105ac464747b231232f53f4ac335f4467f.tar.xz
src/papod.go: Integrate db layer with network, create command handlers, simplify network loop
Diffstat (limited to 'tests')
-rw-r--r--tests/papod.go142
-rw-r--r--tests/queries.sql220
2 files changed, 226 insertions, 136 deletions
diff --git a/tests/papod.go b/tests/papod.go
index 60e670c..42974f4 100644
--- a/tests/papod.go
+++ b/tests/papod.go
@@ -139,6 +139,7 @@ func test_createUserStmt() {
g.TestStart("createUserStmt()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -146,7 +147,12 @@ func test_createUserStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- createUser, createUserClose, createUserErr := createUserStmt(db, prefix)
+ cfg := dbconfigT{
+ shared: db,
+ dbpath: dbpath,
+ prefix: prefix,
+ }
+ createUser, createUserClose, createUserErr := createUserStmt(cfg)
g.TErrorIf(createUserErr)
defer g.SomeFnError(
createUserClose,
@@ -230,6 +236,7 @@ func test_userByUUIDStmt() {
g.TestStart("userByUUIDStmt()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -237,9 +244,14 @@ func test_userByUUIDStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- createUser, createUserClose, createUserErr := createUserStmt(db, prefix)
- userByUUID, userByUUIDClose, userByUUIDErr := userByUUIDStmt(db, prefix)
- deleteUser, deleteUserClose, deleteUserErr := deleteUserStmt(db, prefix)
+ cfg := dbconfigT{
+ shared: db,
+ dbpath: dbpath,
+ prefix: prefix,
+ }
+ createUser, createUserClose, createUserErr := createUserStmt(cfg)
+ userByUUID, userByUUIDClose, userByUUIDErr := userByUUIDStmt(cfg)
+ deleteUser, deleteUserClose, deleteUserErr := deleteUserStmt(cfg)
g.TErrorIf(g.SomeError(
createUserErr,
deleteUserErr,
@@ -310,6 +322,7 @@ func test_updateUserStmt() {
g.TestStart("updateUserStmt()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -317,10 +330,15 @@ func test_updateUserStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- createUser, createUserClose, createUserErr := createUserStmt(db, prefix)
- userByUUID, userByUUIDClose, userByUUIDErr := userByUUIDStmt(db, prefix)
- updateUser, updateUserClose, updateUserErr := updateUserStmt(db, prefix)
- deleteUser, deleteUserClose, deleteUserErr := deleteUserStmt(db, prefix)
+ cfg := dbconfigT{
+ shared: db,
+ dbpath: dbpath,
+ prefix: prefix,
+ }
+ createUser, createUserClose, createUserErr := createUserStmt(cfg)
+ userByUUID, userByUUIDClose, userByUUIDErr := userByUUIDStmt(cfg)
+ updateUser, updateUserClose, updateUserErr := updateUserStmt(cfg)
+ deleteUser, deleteUserClose, deleteUserErr := deleteUserStmt(cfg)
g.TErrorIf(g.SomeError(
createUserErr,
userByUUIDErr,
@@ -455,6 +473,7 @@ func test_deleteUserStmt() {
g.TestStart("deleteUserStmt()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -462,8 +481,13 @@ func test_deleteUserStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- createUser, createUserClose, createUserErr := createUserStmt(db, prefix)
- deleteUser, deleteUserClose, deleteUserErr := deleteUserStmt(db, prefix)
+ cfg := dbconfigT{
+ shared: db,
+ dbpath: dbpath,
+ prefix: prefix,
+ }
+ createUser, createUserClose, createUserErr := createUserStmt(cfg)
+ deleteUser, deleteUserClose, deleteUserErr := deleteUserStmt(cfg)
g.TErrorIf(g.SomeError(
createUserErr,
deleteUserErr,
@@ -507,6 +531,7 @@ func test_addNetworkStmt() {
g.TestStart("addNetworkStmt()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -514,9 +539,14 @@ func test_addNetworkStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- createUser, createUserClose, createUserErr := createUserStmt(db, prefix)
- deleteUser, deleteUserClose, deleteUserErr := deleteUserStmt(db, prefix)
- addNetwork, addNetworkClose, addNetworkErr := addNetworkStmt(db, prefix)
+ cfg := dbconfigT{
+ shared: db,
+ dbpath: dbpath,
+ prefix: prefix,
+ }
+ createUser, createUserClose, createUserErr := createUserStmt(cfg)
+ deleteUser, deleteUserClose, deleteUserErr := deleteUserStmt(cfg)
+ addNetwork, addNetworkClose, addNetworkErr := addNetworkStmt(cfg)
g.TErrorIf(g.SomeError(
createUserErr,
deleteUserErr,
@@ -650,6 +680,7 @@ func test_getNetworkStmt() {
g.TestStart("getNetworkStmt()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -657,12 +688,17 @@ func test_getNetworkStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- createUser, createUserClose, createUserErr := createUserStmt(db, prefix)
- deleteUser, deleteUserClose, deleteUserErr := deleteUserStmt(db, prefix)
- addNetwork, addNetworkClose, addNetworkErr := addNetworkStmt(db, prefix)
- getNetwork, getNetworkClose, getNetworkErr := getNetworkStmt(db, prefix)
- addMember, addMemberClose, addMemberErr := addMemberStmt(db, prefix)
- dropMember, dropMemberClose, dropMemberErr := dropMemberStmt(db, prefix)
+ cfg := dbconfigT{
+ shared: db,
+ dbpath: dbpath,
+ prefix: prefix,
+ }
+ createUser, createUserClose, createUserErr := createUserStmt(cfg)
+ deleteUser, deleteUserClose, deleteUserErr := deleteUserStmt(cfg)
+ addNetwork, addNetworkClose, addNetworkErr := addNetworkStmt(cfg)
+ getNetwork, getNetworkClose, getNetworkErr := getNetworkStmt(cfg)
+ addMember, addMemberClose, addMemberErr := addMemberStmt(cfg)
+ dropMember, dropMemberClose, dropMemberErr := dropMemberStmt(cfg)
g.TErrorIf(g.SomeError(
createUserErr,
deleteUserErr,
@@ -897,6 +933,7 @@ func test_networksStmt() {
g.TestStart("networksStmt()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -904,8 +941,8 @@ func test_networksStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- addNetwork, addNetworkClose, addNetworkErr := addNetworkStmt(db, prefix)
- networks, networksClose, networksErr := networksStmt(db, prefix)
+ addNetwork, addNetworkClose, addNetworkErr := addNetworkStmt(cfg)
+ networks, networksClose, networksErr := networksStmt(cfg)
g.TErrorIf(g.SomeError(
addNetworkErr,
networksErr,
@@ -966,6 +1003,7 @@ func test_setNetworkStmt() {
g.TestStart("setNetworkStmt()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -973,10 +1011,15 @@ func test_setNetworkStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- createUser, createUserClose, createUserErr := createUserStmt(db, prefix)
- addNetwork, addNetworkClose, addNetworkErr := addNetworkStmt(db, prefix)
- getNetwork, getNetworkClose, getNetworkErr := getNetworkStmt(db, prefix)
- setNetwork, setNetworkClose, setNetworkErr := setNetworkStmt(db, prefix)
+ cfg := dbconfigT{
+ shared: db,
+ dbpath: dbpath,
+ prefix: prefix,
+ }
+ createUser, createUserClose, createUserErr := createUserStmt(cfg)
+ addNetwork, addNetworkClose, addNetworkErr := addNetworkStmt(cfg)
+ getNetwork, getNetworkClose, getNetworkErr := getNetworkStmt(cfg)
+ setNetwork, setNetworkClose, setNetworkErr := setNetworkStmt(cfg)
g.TErrorIf(g.SomeError(
createUserErr,
addNetworkErr,
@@ -1109,6 +1152,7 @@ func test_addMemberStmt() {
g.TestStart("addMember()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -1116,8 +1160,8 @@ func test_addMemberStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- addNetwork, addNetworkClose, addNetworkErr := addNetworkStmt(db, prefix)
- addMember, addMemberClose, addMemberErr := addMemberStmt(db, prefix)
+ addNetwork, addNetworkClose, addNetworkErr := addNetworkStmt(cfg)
+ addMember, addMemberClose, addMemberErr := addMemberStmt(cfg)
g.TErrorIf(g.SomeError(
addNetworkErr,
addMemberErr,
@@ -1187,6 +1231,7 @@ func test_addChannelStmt() {
g.TestStart("addChannelStmt()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -1194,8 +1239,13 @@ func test_addChannelStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- addChannel, addChannelClose, addChannelErr := addChannelStmt(db, prefix)
- channels, channelsClose, channelsErr := channelsStmt(db, prefix)
+ cfg := dbconfigT{
+ shared: db,
+ dbpath: dbpath,
+ prefix: prefix,
+ }
+ addChannel, addChannelClose, addChannelErr := addChannelStmt(cfg)
+ channels, channelsClose, channelsErr := channelsStmt(cfg)
g.TErrorIf(g.SomeError(
addChannelErr,
channelsErr,
@@ -1306,6 +1356,7 @@ func test_addEventStmt() {
g.TestStart("addEventStmt()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -1313,7 +1364,12 @@ func test_addEventStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- addEvent, addEventClose, addEventErr := addEventStmt(db, prefix)
+ cfg := dbconfigT{
+ shared: db,
+ dbpath: dbpath,
+ prefix: prefix,
+ }
+ addEvent, addEventClose, addEventErr := addEventStmt(cfg)
g.TErrorIf(addEventErr)
defer g.SomeFnError(
addEventClose,
@@ -1389,6 +1445,7 @@ func test_allAfterStmt() {
g.TestStart("allAfter()")
const (
+ dbpath = golite.InMemory
prefix = defaultPrefix
)
@@ -1396,9 +1453,14 @@ func test_allAfterStmt() {
g.TErrorIf(err)
g.TErrorIf(createTables(db, prefix))
- addChannel, addChannelClose, addChannelErr := addChannelStmt(db, prefix)
- addEvent, addEventClose, addEventErr := addEventStmt(db, prefix)
- allAfter, allAfterClose, allAfterErr := allAfterStmt(db, prefix)
+ cfg := dbconfigT{
+ shared: db,
+ dbpath: dbpath,
+ prefix: prefix,
+ }
+ addChannel, addChannelClose, addChannelErr := addChannelStmt(cfg)
+ addEvent, addEventClose, addEventErr := addEventStmt(cfg)
+ allAfter, allAfterClose, allAfterErr := allAfterStmt(cfg)
g.TErrorIf(g.SomeError(
addChannelErr,
addEventErr,
@@ -1485,6 +1547,18 @@ func test_allAfterStmt() {
// FIXME
}
+func test_logMessageStmt() {
+ g.TestStart("logMessageStmt()")
+
+ // FIXME
+
+ g.Testing("no error if closed more than once", func() {
+ g.TErrorIf(g.SomeError(
+ // FIXME
+ ))
+ })
+}
+
func test_initDB() {
// FIXME
}
@@ -1987,6 +2061,7 @@ func dumpQueries() {
{ "names", namesSQL },
{ "addEvent", addEventSQL },
{ "allAfter", allAfterSQL },
+ { "logMessage", logMessageSQL },
}
for _, query := range queries {
q := query.fn(defaultPrefix)
@@ -2039,6 +2114,7 @@ func MainTest() {
test_addEventStmt()
test_eventEach()
test_allAfterStmt()
+ test_logMessageStmt()
test_initDB()
test_queriesTclose()
test_splitOnCRLF()
diff --git a/tests/queries.sql b/tests/queries.sql
index 3aa6586..c996f02 100644
--- a/tests/queries.sql
+++ b/tests/queries.sql
@@ -16,88 +16,88 @@
username TEXT NOT NULL,
display_name TEXT NOT NULL,
picture_uuid BLOB UNIQUE,
- deleted INT NOT NULL
+ deleted INT NOT NULL CHECK(deleted IN (0, 1))
) STRICT;
- CREATE TABLE IF NOT EXISTS "papod_user_changes" (
- id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
- timestamp TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%f000000Z', 'now')),
- user_id INTEGER NOT NULL REFERENCES "papod_users"(id),
- attribute TEXT NOT NULL CHECK(
- attribute IN (
- 'username',
- 'display_name',
- 'picture_uuid',
- 'deleted'
- )
- ),
- value TEXT NOT NULL,
- op INT NOT NULL CHECK(op IN (0, 1))
- ) STRICT;
- CREATE TRIGGER IF NOT EXISTS "papod_user_creation"
- AFTER INSERT ON "papod_users"
- BEGIN
- INSERT INTO "papod_user_changes" (
- user_id, attribute, value, op
- ) VALUES
- (NEW.id, 'username', NEW.username, true),
- (NEW.id, 'display_name', NEW.display_name, true),
- (NEW.id, 'deleted', NEW.deleted, true)
- ;
- END;
- CREATE TRIGGER IF NOT EXISTS "papod_user_creation_picture_uuid"
- AFTER INSERT ON "papod_users"
- WHEN NEW.picture_uuid != NULL
- BEGIN
- INSERT INTO "papod_user_changes" (
- user_id, attribute, value, op
- ) VALUES
- (NEW.id, 'picture_uuid', NEW.picture_uuid, true)
- ;
- END;
- CREATE TRIGGER IF NOT EXISTS "papod_user_update_username"
- AFTER UPDATE ON "papod_users"
- WHEN OLD.username != NEW.username
- BEGIN
- INSERT INTO "papod_user_changes" (
- user_id, attribute, value, op
- ) VALUES
- (NEW.id, 'username', OLD.username, false),
- (NEW.id, 'username', NEW.username, true)
- ;
- END;
- CREATE TRIGGER IF NOT EXISTS "papod_user_update_display_name"
- AFTER UPDATE ON "papod_users"
- WHEN OLD.display_name != NEW.display_name
- BEGIN
- INSERT INTO "papod_user_changes" (
- user_id, attribute, value, op
- ) VALUES
- (NEW.id, 'display_name', OLD.display_name, false),
- (NEW.id, 'display_name', NEW.display_name, true)
- ;
- END;
- CREATE TRIGGER IF NOT EXISTS "papod_user_update_picture_uuid"
- AFTER UPDATE ON "papod_users"
- WHEN OLD.picture_uuid != NEW.picture_uuid
- BEGIN
- INSERT INTO "papod_user_changes" (
- user_id, attribute, value, op
- ) VALUES
- (NEW.id, 'picture_uuid', OLD.picture_uuid, false),
- (NEW.id, 'picture_uuid', NEW.picture_uuid, true)
- ;
- END;
- CREATE TRIGGER IF NOT EXISTS "papod_user_update_deleted"
- AFTER UPDATE ON "papod_users"
- WHEN OLD.deleted != NEW.deleted
- BEGIN
- INSERT INTO "papod_user_changes" (
- user_id, attribute, value, op
- ) VALUES
- (NEW.id, 'deleted', OLD.deleted, false),
- (NEW.id, 'deleted', NEW.deleted, true)
- ;
- END;
+-- CREATE TABLE IF NOT EXISTS "papod_user_changes" (
+-- id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
+-- timestamp TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%f000000Z', 'now')),
+-- user_id INTEGER NOT NULL REFERENCES "papod_users"(id),
+-- attribute TEXT NOT NULL CHECK(
+-- attribute IN (
+-- 'username',
+-- 'display_name',
+-- 'picture_uuid',
+-- 'deleted'
+-- )
+-- ),
+-- value TEXT NOT NULL,
+-- op INT NOT NULL CHECK(op IN (0, 1))
+-- ) STRICT;
+-- CREATE TRIGGER IF NOT EXISTS "papod_user_creation"
+-- AFTER INSERT ON "papod_users"
+-- BEGIN
+-- INSERT INTO "papod_user_changes" (
+-- user_id, attribute, value, op
+-- ) VALUES
+-- (NEW.id, 'username', NEW.username, true),
+-- (NEW.id, 'display_name', NEW.display_name, true),
+-- (NEW.id, 'deleted', NEW.deleted, true)
+-- ;
+-- END;
+-- CREATE TRIGGER IF NOT EXISTS "papod_user_creation_picture_uuid"
+-- AFTER INSERT ON "papod_users"
+-- WHEN NEW.picture_uuid != NULL
+-- BEGIN
+-- INSERT INTO "papod_user_changes" (
+-- user_id, attribute, value, op
+-- ) VALUES
+-- (NEW.id, 'picture_uuid', NEW.picture_uuid, true)
+-- ;
+-- END;
+-- CREATE TRIGGER IF NOT EXISTS "papod_user_update_username"
+-- AFTER UPDATE ON "papod_users"
+-- WHEN OLD.username != NEW.username
+-- BEGIN
+-- INSERT INTO "papod_user_changes" (
+-- user_id, attribute, value, op
+-- ) VALUES
+-- (NEW.id, 'username', OLD.username, false),
+-- (NEW.id, 'username', NEW.username, true)
+-- ;
+-- END;
+-- CREATE TRIGGER IF NOT EXISTS "papod_user_update_display_name"
+-- AFTER UPDATE ON "papod_users"
+-- WHEN OLD.display_name != NEW.display_name
+-- BEGIN
+-- INSERT INTO "papod_user_changes" (
+-- user_id, attribute, value, op
+-- ) VALUES
+-- (NEW.id, 'display_name', OLD.display_name, false),
+-- (NEW.id, 'display_name', NEW.display_name, true)
+-- ;
+-- END;
+-- CREATE TRIGGER IF NOT EXISTS "papod_user_update_picture_uuid"
+-- AFTER UPDATE ON "papod_users"
+-- WHEN OLD.picture_uuid != NEW.picture_uuid
+-- BEGIN
+-- INSERT INTO "papod_user_changes" (
+-- user_id, attribute, value, op
+-- ) VALUES
+-- (NEW.id, 'picture_uuid', OLD.picture_uuid, false),
+-- (NEW.id, 'picture_uuid', NEW.picture_uuid, true)
+-- ;
+-- END;
+-- CREATE TRIGGER IF NOT EXISTS "papod_user_update_deleted"
+-- AFTER UPDATE ON "papod_users"
+-- WHEN OLD.deleted != NEW.deleted
+-- BEGIN
+-- INSERT INTO "papod_user_changes" (
+-- user_id, attribute, value, op
+-- ) VALUES
+-- (NEW.id, 'deleted', OLD.deleted, false),
+-- (NEW.id, 'deleted', NEW.deleted, true)
+-- ;
+-- END;
CREATE TABLE IF NOT EXISTS "papod_networks" (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
@@ -196,7 +196,7 @@
UNIQUE (channel_id, member_id)
) STRICT;
- -- FIXME: create table for connections?
+ -- FIXME: create database table for connections?
-- A user can have multiple sessions (different browsers,
-- mobile, etc.), and each session has multiple connections, as
-- the user connects and disconnections using the same session
@@ -292,7 +292,7 @@
)
) RETURNING id, timestamp;
- INSERT INTO "%!s(MISSING)_members" (
+ INSERT INTO "papod_members" (
network_id, user_id, username, display_name,
picture_uuid, status, active_uniq
) VALUES (
@@ -300,7 +300,7 @@
?,
(
SELECT username, display_name, picture_uuid
- FROM "%!s(MISSING)_users"
+ FROM "papod_users"
WHERE id = ? AND deleted = false
),
'active',
@@ -345,24 +345,26 @@
-- write:
-- read:
- -- FIXME
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- setNetwork.sql:
-- write:
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- read:
-- nipNetwork.sql:
-- write:
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- read:
-- addMember.sql:
-- write:
- -- FIXME
+ -- FIXME papod
-- read:
@@ -371,23 +373,26 @@
-- write:
-- read:
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- members.sql:
-- write:
-- read:
- -- FIXME
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- editMember.sql:
-- write:
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- read:
-- dropMember.sql:
-- write:
+ -- FIXME
-- read:
@@ -405,32 +410,34 @@
-- write:
-- read:
- -- FIXME
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- topic.sql:
-- write:
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- read:
-- endChannel.sql:
-- write:
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- read:
-- join.sql:
-- write:
- -- FIXME
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- read:
-- part.sql:
-- write:
- -- FIXME
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- read:
@@ -438,8 +445,8 @@
-- write:
-- read:
- -- FIXME
- %!(EXTRA string=papod)
+ -- FIXME papod
+
-- addEvent.sql:
-- write:
@@ -483,3 +490,10 @@
SELECT channel_id FROM landmark_event
);
+
+-- logMessage.sql:
+-- write:
+ -- FIXME papod
+
+
+-- read: