diff --git a/server/src/setupTests.ts b/server/src/setupTests.ts
index b0858c75453fee8d4459813dc9887e087086b1e2..86676662f321b50ddd91347ba08bb092590124de 100644
--- a/server/src/setupTests.ts
+++ b/server/src/setupTests.ts
@@ -234,7 +234,7 @@ async function loadTestData() {
                 id: '00000000-0000-4000-8000-000000000002',
                 task_id: '00000000-0000-4000-8000-000000000005',
                 user_id: '00000000-0000-4000-8000-000000000000',
-                started: new Date('2020-10-10T05:00:00'),
+                started: new Date('2020-10-11T05:00:00'),
                 finished: null,
             }
         ]);
diff --git a/server/src/v1/user.test.ts b/server/src/v1/user.test.ts
index 8eaf9256cd5fde5d9d990ccca0b51cc5c0015f4d..e11d0db5140390bd094e035830262242160e1162 100644
--- a/server/src/v1/user.test.ts
+++ b/server/src/v1/user.test.ts
@@ -2,6 +2,7 @@
 import supertest from 'supertest';
 
 import { api } from '../api';
+import { generateAuthToken } from './auth';
 
 const request = supertest(api);
 
@@ -27,18 +28,123 @@ describe('/user/name', () => {
     });
 })
 
-describe('/:uuid/image', () => {
+describe('/user/:uuid/image', () => {
     test('returns 404 without body if no image is set', async () => {
         const response = await request.get('/v1/user/00000000-0000-4000-8000-000000000000/image');
         expect(response.status).toEqual(404);
         expect(response.body).toEqual({});
-    })
+    });
 
     test('returns 404 if the user does not exist', async () => {
         const response = await request.get('/v1/user/00000000-0000-4000-8000-000000000002/image');
         expect(response.status).toEqual(404);
         expect(response.body.status).toEqual('error');
-    })
+    });
+
+    test('returns the image if the user has an image', async () => {
+        const response = await request.get('/v1/user/00000000-0000-4000-8000-000000000001/image');
+        expect(response.status).toEqual(200);
+        expect(response.body).toBeTruthy();
+    });
 })
 
+describe('/user', () => {
+    test('returns the user that is authorized', async () => {
+        const response = await request
+            .get('/v1/user')
+            .set('Authorization', `Bearer ${await generateAuthToken('00000000-0000-4000-8000-000000000000')}`);
+        expect(response.status).toEqual(200);
+        expect(response.body.status).toEqual('success');
+        expect(response.body.user.id).toEqual('00000000-0000-4000-8000-000000000000');
+        expect(response.body.user.username).toEqual('user0');
+        expect(response.body.user.email).toEqual('test0@example.com');
+        expect(response.body.user.realname).toEqual('Testing Tester');
+    });
+});
+
+describe('/user/tasks', () => {
+    test('returns the tasks the user is assigned to', async () => {
+        const response = await request
+            .get('/v1/user/tasks')
+            .set('Authorization', `Bearer ${await generateAuthToken('00000000-0000-4000-8000-000000000000')}`);
+        expect(response.status).toEqual(200);
+        expect(response.body.status).toEqual('success');
+        expect(response.body.tasks.length).toEqual(1);
+        expect(response.body.tasks[0].id).toEqual('00000000-0000-4000-8000-000000000005');
+    });
+});
+
+describe('/user/work', () => {
+    test('returns all the users work items', async () => {
+        const response = await request
+            .get('/v1/user/work')
+            .set('Authorization', `Bearer ${await generateAuthToken('00000000-0000-4000-8000-000000000000')}`);
+        expect(response.status).toEqual(200);
+        expect(response.body.status).toEqual('success');
+        expect(response.body.work.length).toEqual(3);
+    });
+    test('returns all finished work items', async () => {
+        const response = await request
+            .get('/v1/user/work')
+            .set('Authorization', `Bearer ${await generateAuthToken('00000000-0000-4000-8000-000000000000')}`);
+        expect(response.status).toEqual(200);
+        expect(response.body.status).toEqual('success');
+        expect(response.body.work).toContainEqual({
+            id: '00000000-0000-4000-8000-000000000000',
+            task: '00000000-0000-4000-8000-000000000005',
+            user: '00000000-0000-4000-8000-000000000000',
+            started: (new Date('2020-10-10T00:00:00')).toString(),
+            finished: (new Date('2020-10-10T01:00:00')).toString(),
+        });
+        expect(response.body.work).toContainEqual({
+            id: '00000000-0000-4000-8000-000000000001',
+            task: '00000000-0000-4000-8000-000000000005',
+            user: '00000000-0000-4000-8000-000000000000',
+            started: (new Date('2020-10-10T03:00:00')).toString(),
+            finished: (new Date('2020-10-10T04:00:00')).toString(),
+        });
+    });
+    test('returns unfinished work items', async () => {
+        const response = await request
+            .get('/v1/user/work')
+            .set('Authorization', `Bearer ${await generateAuthToken('00000000-0000-4000-8000-000000000000')}`);
+        expect(response.status).toEqual(200);
+        expect(response.body.status).toEqual('success');
+        expect(response.body.work).toContainEqual({
+            id: '00000000-0000-4000-8000-000000000002',
+            task: '00000000-0000-4000-8000-000000000005',
+            user: '00000000-0000-4000-8000-000000000000',
+            started: (new Date('2020-10-11T05:00:00')).toString(),
+            finished: null,
+        });
+    });
+    test('can be limited in time with from date', async () => {
+        const response = await request
+            .get(`/v1/user/work?since=${Date.parse('2020-10-10T20:00:00')}`)
+            .set('Authorization', `Bearer ${await generateAuthToken('00000000-0000-4000-8000-000000000000')}`);
+        expect(response.status).toEqual(200);
+        expect(response.body.status).toEqual('success');
+        expect(response.body.work.length).toEqual(1);
+    });
+});
+
+describe('/user/activity', () => {
+    test('returns time worked for all days', async () => {
+        const response = await request
+            .get('/v1/user/activity')
+            .set('Authorization', `Bearer ${await generateAuthToken('00000000-0000-4000-8000-000000000000')}`);
+        expect(response.status).toEqual(200);
+        expect(response.body.status).toEqual('success');
+        expect(response.body.activity.length).toEqual(1);
+    });
+
+    test('returns time worked for all days', async () => {
+        const response = await request
+            .get(`/v1/user/activity?to=${Date.parse("2020-10-20")}`)
+            .set('Authorization', `Bearer ${await generateAuthToken('00000000-0000-4000-8000-000000000000')}`);
+        expect(response.status).toEqual(200);
+        expect(response.body.status).toEqual('success');
+        expect(response.body.activity.length).toEqual(1);
+    });
+});
 
diff --git a/server/src/v1/user.ts b/server/src/v1/user.ts
index 8599d130df125d05f4e1420bd9611f93933921cf..5fe655e997a20ffd748e8c9ffaa6bea80e449204 100644
--- a/server/src/v1/user.ts
+++ b/server/src/v1/user.ts
@@ -160,7 +160,8 @@ user.get('/tasks', async (req, res) => {
 
 user.get('/work', async (req, res) => {
     try {
-        const since = (req.query.since ?? 0) as number;
+        const since = parseInt(req.query.since as string ?? 0);
+        const to = parseInt(req.query.to as string ?? Date.now());
         const work = await database('workhours')
             .select({
                 id: 'workhours.id',
@@ -173,6 +174,7 @@ user.get('/work', async (req, res) => {
                 'workhours.user_id': req.body.token.id,
             })
             .andWhere('workhours.started', '>=', since)
+            .andWhere('workhours.started', '<=', to)
             .groupBy('workhours.id');
         res.status(200).json({
             status: 'success',
@@ -188,8 +190,8 @@ user.get('/work', async (req, res) => {
 
 user.get('/activity', async (req, res) => {
     try {
-        const since = (req.query.since ?? 0) as number;
-        const to = (req.query.to ?? Date.now()) as number;
+        const since = parseInt(req.query.since as string ?? 0);
+        const to = parseInt(req.query.to as string ?? Date.now());
         const activity = await database('workhours')
             .select({
                 day: database.raw('Date(`started` / 1000, \'unixepoch\')'),