diff options
author | EuAndreh <eu@euandre.org> | 2024-11-04 09:13:33 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-11-04 15:50:31 -0300 |
commit | 1feab2105ac464747b231232f53f4ac335f4467f (patch) | |
tree | cb4fd127f2bb59aa70deb44a8f7a30944f9a7936 /tests | |
parent | mv doc/rfc/ doc/rfcs; Add newer related rfcs (diff) | |
download | papod-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.go | 142 | ||||
-rw-r--r-- | tests/queries.sql | 220 |
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: |