From d230fa9472403102f7d0c5a30eae09a6e879f01c Mon Sep 17 00:00:00 2001
From: David Steinacher <dsteinach@ethz.ch>
Date: Sat, 16 Nov 2024 13:02:19 +0100
Subject: [PATCH] add api seeding

---
 test_mongoinit.js | 253 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 253 insertions(+)
 create mode 100644 test_mongoinit.js

diff --git a/test_mongoinit.js b/test_mongoinit.js
new file mode 100644
index 00000000..ca4e3dcb
--- /dev/null
+++ b/test_mongoinit.js
@@ -0,0 +1,253 @@
+db.createUser(
+    {
+        user: "amivapi",
+        pwd: "amivapi",
+        roles: [
+            {
+                role: "readWrite",
+                db: "amivapi"
+            }
+        ]
+    }
+);
+
+db.getSiblingDB('test_amivapi').createUser(
+    {
+        user: "test_user",
+        pwd: "test_pw",
+        roles: [
+            {
+                role: "readWrite",
+                db: "test_amivapi"
+            }
+        ]
+    }
+);
+
+let userId = db.users.insertOne({
+    nethz: 'admin',
+    password: '$pbkdf2-sha256$5$OqfUmtNaq5UyRohxDuGckw$9H/UL5N5dA7JmUq7ohRPfmJ84OUnpRKjTgsMeuFilXM',
+    email: "admin@example.com",
+    membership: "regular",
+    gender: "female",
+    firstname: "ad",
+    lastname: "min",
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+}).insertedId;
+
+let groupId = db.groups.insertOne({
+    name: 'admin',
+    permissions: {
+        apikeys: "readwrite",
+        users: "readwrite",
+        sessions: "readwrite",
+        events: "readwrite",
+        eventsignups: "readwrite",
+        groups: "readwrite",
+        groupmemberships: "readwrite",
+        joboffers: "readwrite",
+        beverages: "read",
+        studydocuments: "readwrite",
+        oauthclients: "readwrite",
+    },
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+}).insertedId;
+
+db.groupmemberships.insertOne({
+    user: userId,
+    group: groupId,
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+})
+
+db.oauthclients.insertOne({
+    client_id: "LocalTool",
+    redirect_uri: "http://localhost",
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+});
+
+let manyUserId = []
+
+for(let i = 0; i < 10; i++){
+    manyUserId[i] = db.users.insertOne({
+        nethz: 'test' + i.toString(),
+        password: '$pbkdf2-sha256$1000$MSbEOKf0njOGkHLOOad0rg$j4GZopKcBA0TyqWZWBCPxDoVOeHOH8RtMlP9UgRu1uY',
+        email: "hans.muster@ethz.ch",
+        membership: "regular",
+        depatement: "itet",
+        gender: "male",
+        firstname: "Hans" + i.toString(),
+        lastname: "Muster",
+        _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+    }).insertedId;
+}
+
+let manyGroupId = []
+
+manyGroupId[0] = db.groups.insertOne({
+    name: 'test0',
+    permissions: {
+        apikeys: "read",
+        users: "readwrite",
+        sessions: "readwrite",
+        events: "readwrite",
+        eventsignups: "readwrite",
+        groups: "readwrite",
+        groupmemberships: "readwrite",
+        joboffers: "readwrite",
+        beverages: "read",
+        studydocuments: "readwrite",
+        oauthclients: "read",
+    },
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+}).insertedId;
+
+manyGroupId[1] = db.groups.insertOne({
+    name: 'test1',
+    permissions: {
+        apikeys: "read",
+        users: "read",
+        sessions: "readwrite",
+        events: "read",
+        eventsignups: "read",
+        groups: "readwrite",
+        groupmemberships: "readwrite",
+        joboffers: "readwrite",
+        beverages: "read",
+        studydocuments: "readwrite",
+        oauthclients: "read",
+    },
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+}).insertedId;
+
+manyGroupId[2] = db.groups.insertOne({
+    name: 'test2',
+    permissions: {
+        apikeys: "read",
+        users: "read",
+        sessions: "read",
+        events: "read",
+        eventsignups: "read",
+        groups: "read",
+        groupmemberships: "read",
+        joboffers: "readwrite",
+        beverages: "read",
+        studydocuments: "readwrite",
+        oauthclients: "read",
+    },
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+}).insertedId;
+
+for(let i = 0; i < 10; i++){
+    db.groupmemberships.insertOne({
+        user: manyUserId[i],
+        group: manyGroupId[i%3],
+        _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+    })
+}
+
+db.groupmemberships.insertOne({
+    user: manyUserId[1],
+    group: manyGroupId[0],
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+})
+db.groupmemberships.insertOne({
+    user: manyUserId[2],
+    group: manyGroupId[0],
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+})
+
+let manyEventsId = []
+
+manyEventsId[0] = db.events.insertOne({
+    allwo_email_signup: true,
+    chatchprase_de: "Chatchprase Deutsch",
+    chatchprase_en: "Chatchprase English",
+    description_de: "Das ist eine Beschreibung",
+    description_en: "This is a description",
+    location: "CAB E5",
+    price: 1000,
+    show_announce: true,
+    spots: 0,
+    time_advertising_end: "2025-04-10T15:16:11Z",
+    time_advertising_start: "2025-03-09T15:16:11Z",
+    title_de: "Event 0",
+    title_en: "event 0",
+    type: "internal",
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+}).insertedId;
+
+manyEventsId[1] = db.events.insertOne({
+    allwo_email_signup: true,
+    chatchprase_de: "Chatchprase Deutsch",
+    chatchprase_en: "Chatchprase English",
+    description_de: "Das ist eine Beschreibung",
+    description_en: "This is a description",
+    location: "CAB E5",
+    price: 500,
+    show_announce: true,
+    spots: 10,
+    time_advertising_end: "2026-04-10T15:16:11Z",
+    time_advertising_start: "2026-03-09T15:16:11Z",
+    title_de: "Event 1",
+    title_en: "event 1",
+    type: "internal",
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+}).insertedId;
+
+manyEventsId[2] = db.events.insertOne({
+    allwo_email_signup: true,
+    chatchprase_de: "Chatchprase Deutsch",
+    chatchprase_en: "Chatchprase English",
+    description_de: "Das ist eine Beschreibung",
+    description_en: "This is a description",
+    location: "CAB E5",
+    price: null,
+    show_announce: true,
+    spots: 100,
+    time_advertising_end: "2026-04-10T15:16:11Z",
+    time_advertising_start: "2024-03-09T15:16:11Z",
+    title_de: "Event 2",
+    title_en: "event 2",
+    type: "internal",
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+}).insertedId;
+
+for(let i = 0; i < 10; i++){
+    db.eventsignups.insertOne({
+        user: manyUserId[i],
+        event: manyGroupId[i%3],
+        _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+    })
+}
+
+let blacklistUserId = db.users.insertOne({
+    nethz: 'blackl',
+    password: '$pbkdf2-sha256$1000$MSbEOKf0njOGkHLOOad0rg$j4GZopKcBA0TyqWZWBCPxDoVOeHOH8RtMlP9UgRu1uY',
+    email: "black.listuser@ethz.ch",
+    membership: "regular",
+    depatement: "itet",
+    gender: "male",
+    firstname: "User",
+    lastname: "Blacklist",
+    _etag: "27f987fd9dd45d491e5aea3e27730israndom",
+}).insertedId;
+
+db.blacklist.insertOne({
+    user: blacklistUserId,
+    end_time: null,
+    price: 500,
+    reason: "This user is the dummy for the blacklist",
+    start_time: "2024-10-11T00:00:00Z",
+})
+
+db.joboffers.insertOne({
+    company: "Dummy AG",
+    description_de: "Die Dummy AG",
+    description_en: "The Dummy AG",
+    logo: "dummy",
+    pdf: null,
+    show_website: false,
+    time_end: "2028-10-10T12:00:00Z",
+    title_de: "Job in der Dummy AG",
+    title_en: "Job in the Dummy AG",
+})
-- 
GitLab