From 80e418f8b726f4b734739f8cee18745b521e8efd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20K=C3=BChn?= Date: Thu, 30 Apr 2026 10:18:21 +0200 Subject: [PATCH] Add PHPUnit integration tests, remove legacy pre-Symfony files, fix password reset - Delete legacy root files (api.php, index.php, app.js, style.css, logo.png, include/) - Install symfony/test-pack, add 34 integration tests covering auth, goals, invites, register, password reset - Fix bug: users_resets.selector was varchar(20) but controller generates 24-char selectors; widen to varchar(64) - Remove doctrine dbname_suffix from test env (tests run against live DB, cleanup via tearDown) Co-Authored-By: Claude Sonnet 4.6 --- .env.test | 3 + .gitignore | 5 + api.php | 294 ---- app.js | 716 --------- bin/phpunit | 4 + composer.json | 5 + composer.lock | 2073 +++++++++++++++++++++++++- config/packages/doctrine.yaml | 5 - config/reference.php | 11 - include/db.php | 60 - include/mailer.php | 19 - index.php | 8 - logo.png | Bin 233309 -> 0 bytes migrations/Version20260430000000.php | 26 + phpunit.dist.xml | 44 + style.css | 113 -- symfony.lock | 15 + tests/AppIntegrationTest.php | 586 ++++++++ tests/bootstrap.php | 13 + 19 files changed, 2768 insertions(+), 1232 deletions(-) create mode 100644 .env.test delete mode 100644 api.php delete mode 100644 app.js create mode 100755 bin/phpunit delete mode 100644 include/db.php delete mode 100644 include/mailer.php delete mode 100644 index.php delete mode 100644 logo.png create mode 100644 migrations/Version20260430000000.php create mode 100644 phpunit.dist.xml delete mode 100644 style.css create mode 100644 tests/AppIntegrationTest.php create mode 100644 tests/bootstrap.php diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..64bd111 --- /dev/null +++ b/.env.test @@ -0,0 +1,3 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' diff --git a/.gitignore b/.gitignore index 3ba2448..576fac8 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,8 @@ /.aider* /docs/private/ ###< tools ### + +###> phpunit/phpunit ### +/phpunit.xml +/.phpunit.cache/ +###< phpunit/phpunit ### diff --git a/api.php b/api.php deleted file mode 100644 index b7788b1..0000000 --- a/api.php +++ /dev/null @@ -1,294 +0,0 @@ - $e->getMessage(), 'file' => basename($e->getFile()), 'line' => $e->getLine()]); - exit; -}); -require_once __DIR__ . '/include/db.php'; -require_once __DIR__ . '/include/mailer.php'; - -header('Content-Type: application/json; charset=utf-8'); - -// CORS für gleiche Domain nicht nötig; bei separaten Dev-Domains ggf. ergänzen - -$method = $_SERVER['REQUEST_METHOD']; -$segments = explode('/', trim($_GET['_path'] ?? '', '/')); -$resource = $segments[0] ?? ''; -$resourceId = isset($segments[1]) && $segments[1] !== '' ? (int)$segments[1] : null; - - -$body = json_decode(file_get_contents('php://input'), true) ?? []; - -function json_out(array $data, int $status = 200): never { - http_response_code($status); - echo json_encode($data); - exit; -} - -function require_auth(\Delight\Auth\Auth $auth): int { - if (!$auth->isLoggedIn()) { - json_out(['error' => 'Unauthorized'], 401); - } - return $auth->getUserId(); -} - -// ── POST /api/login ────────────────────────────────────────────────────────── -if ($method === 'POST' && $resource === 'login') { - $email = trim($body['email'] ?? ''); - $pass = $body['password'] ?? ''; - try { - $auth->login($email, $pass, 86400); - json_out(['ok' => true, 'email' => $auth->getEmail()]); - } catch (\Delight\Auth\InvalidEmailException - | \Delight\Auth\InvalidPasswordException - | \Delight\Auth\UserNotFound $e) { - json_out(['error' => 'Falsche E-Mail oder Passwort'], 401); - } catch (\Delight\Auth\TooManyRequestsException $e) { - json_out(['error' => 'Zu viele Versuche, bitte warten'], 429); - } -} - -// ── POST /api/logout ───────────────────────────────────────────────────────── -if ($method === 'POST' && $resource === 'logout') { - $auth->logOut(); - json_out(['ok' => true]); -} - -// ── GET /api/me ─────────────────────────────────────────────────────────────── -if ($method === 'GET' && $resource === 'me') { - if ($auth->isLoggedIn()) { - $name = $conn->fetchOne('SELECT username FROM users WHERE id = ?', [$auth->getUserId()]); - json_out(['ok' => true, 'email' => $auth->getEmail(), 'id' => $auth->getUserId(), 'name' => $name ?: '']); - } - json_out(['ok' => false], 401); -} - -// ── PATCH /api/me ───────────────────────────────────────────────────────────── -if ($method === 'PATCH' && $resource === 'me') { - $uid = require_auth($auth); - $name = trim($body['name'] ?? ''); - if (!$name) json_out(['error' => 'Name fehlt'], 400); - $conn->executeStatement('UPDATE users SET username = ? WHERE id = ?', [$name, $uid]); - json_out(['ok' => true, 'name' => $name]); -} - -// ── POST /api/register ──────────────────────────────────────────────────────── -if ($method === 'POST' && $resource === 'register') { - $email = trim($body['email'] ?? ''); - $pass = $body['password'] ?? ''; - $token = trim($body['token'] ?? ''); - - if (!$email || !$pass || !$token) { - json_out(['error' => 'Fehlende Felder'], 400); - } - - // Token validieren - $invite = $conn->fetchAssociative( - 'SELECT * FROM invites WHERE token = ? AND used_by IS NULL AND expires_at > NOW()', - [$token] - ); - if (!$invite) { - json_out(['error' => 'Ungültiger oder abgelaufener Einladungslink'], 400); - } - - $name = trim($body['name'] ?? ''); - - try { - $userId = $auth->register($email, $pass); - } catch (\Delight\Auth\InvalidEmailException $e) { - json_out(['error' => 'Ungültige E-Mail'], 400); - } catch (\Delight\Auth\InvalidPasswordException $e) { - json_out(['error' => 'Passwort zu kurz (min. 8 Zeichen)'], 400); - } catch (\Delight\Auth\UserAlreadyExistsException $e) { - json_out(['error' => 'E-Mail bereits registriert'], 409); - } - - // Token als verwendet markieren - $conn->executeStatement( - 'UPDATE invites SET used_by = ?, used_at = NOW() WHERE token = ?', - [$userId, $token] - ); - if ($name) { - $conn->executeStatement('UPDATE users SET username = ? WHERE id = ?', [$name, $userId]); - } - - // Direkt einloggen - $auth->login($email, $pass, 86400); - json_out(['ok' => true, 'email' => $auth->getEmail(), 'name' => $name]); -} - -// ── POST /api/reset-request ────────────────────────────────────────────────── -if ($method === 'POST' && $resource === 'reset-request') { - $email = trim($body['email'] ?? ''); - if (!$email) json_out(['error' => 'E-Mail fehlt'], 400); - try { - $auth->requestPasswordReset($email, function (string $selector, string $token) use ($email) { - $url = APP_URL . '/?reset_selector=' . rawurlencode($selector) . '&reset_token=' . rawurlencode($token); - $text = "Hallo,\n\nklicke auf den folgenden Link um dein Passwort zurückzusetzen (gültig 24h):\n\n$url\n\nFalls du das nicht angefragt hast, ignoriere diese E-Mail."; - sendMail($email, 'Durchzieh-Dienst – Passwort zurücksetzen', $text); - }); - } catch (\Delight\Auth\InvalidEmailException $e) { - // Keinen Hinweis geben ob die E-Mail existiert - } catch (\Exception $e) { - json_out(['error' => 'Mail konnte nicht gesendet werden'], 500); - } - json_out(['ok' => true]); // immer ok, auch wenn E-Mail unbekannt -} - -// ── POST /api/reset-password ────────────────────────────────────────────────── -if ($method === 'POST' && $resource === 'reset-password') { - $selector = $body['selector'] ?? ''; - $token = $body['token'] ?? ''; - $pass = $body['password'] ?? ''; - if (!$selector || !$token || !$pass) json_out(['error' => 'Fehlende Felder'], 400); - try { - $auth->resetPassword($selector, $token, $pass); - json_out(['ok' => true]); - } catch (\Delight\Auth\InvalidSelectorTokenPairException $e) { - json_out(['error' => 'Ungültiger oder abgelaufener Reset-Link'], 400); - } catch (\Delight\Auth\TokenExpiredException $e) { - json_out(['error' => 'Reset-Link abgelaufen, bitte neu anfordern'], 400); - } catch (\Delight\Auth\InvalidPasswordException $e) { - json_out(['error' => 'Passwort zu kurz (min. 8 Zeichen)'], 400); - } -} - -// ── POST /api/change-password ───────────────────────────────────────────────── -if ($method === 'POST' && $resource === 'change-password') { - $uid = require_auth($auth); - $oldPass = $body['old_password'] ?? ''; - $newPass = $body['new_password'] ?? ''; - if (!$oldPass || !$newPass) json_out(['error' => 'Fehlende Felder'], 400); - try { - $auth->changePassword($oldPass, $newPass); - json_out(['ok' => true]); - } catch (\Delight\Auth\NotLoggedInException $e) { - json_out(['error' => 'Nicht eingeloggt'], 401); - } catch (\Delight\Auth\InvalidPasswordException $e) { - json_out(['error' => 'Neues Passwort zu kurz (min. 8 Zeichen)'], 400); - } catch (\Delight\Auth\TooManyRequestsException $e) { - json_out(['error' => 'Zu viele Versuche'], 429); - } -} - -// ── POST /api/invite ───────────────────────────────────────────────────────── -if ($method === 'POST' && $resource === 'invite') { - $uid = require_auth($auth); - $token = bin2hex(random_bytes(32)); - $note = trim($body['note'] ?? ''); - $conn->executeStatement( - 'INSERT INTO invites (token, note, created_by, expires_at) VALUES (?, ?, ?, DATE_ADD(NOW(), INTERVAL 7 DAY))', - [$token, $note ?: null, $uid] - ); - json_out(['url' => APP_URL . '/?invite=' . $token]); -} - -// ── GET /api/invites ────────────────────────────────────────────────────────── -if ($method === 'GET' && $resource === 'invites') { - $uid = require_auth($auth); - $rows = $conn->fetchAllAssociative( - 'SELECT i.token, i.created_at, i.expires_at, i.used_at, i.note, u.email AS used_by_email - FROM invites i - LEFT JOIN users u ON u.id = i.used_by - WHERE i.created_by = ? - ORDER BY i.created_at DESC', - [$uid] - ); - $result = array_map(function ($r) { - if ($r['used_by_email'] !== null) { - $status = 'used'; - } elseif (strtotime($r['expires_at']) < time()) { - $status = 'expired'; - } else { - $status = 'pending'; - } - return [ - 'url' => $status === 'pending' ? APP_URL . '/?invite=' . $r['token'] : null, - 'created_at' => $r['created_at'], - 'expires_at' => $r['expires_at'], - 'used_at' => $r['used_at'], - 'note' => $r['note'], - 'used_by_email' => $r['used_by_email'], - 'status' => $status, - ]; - }, $rows); - json_out($result); -} - -// ── GET /api/goals ──────────────────────────────────────────────────────────── -if ($method === 'GET' && $resource === 'goals') { - $uid = require_auth($auth); - $rows = $conn->fetchAllAssociative( - 'SELECT id, name, unit, daily, days, start, sets FROM goals WHERE user_id = ? ORDER BY created_at ASC', - [$uid] - ); - $goals = array_map(function ($r) { - $r['sets'] = json_decode($r['sets'], true) ?: []; - $r['id'] = (string)$r['id']; - return $r; - }, $rows); - json_out($goals); -} - -// ── POST /api/goals ─────────────────────────────────────────────────────────── -if ($method === 'POST' && $resource === 'goals') { - $uid = require_auth($auth); - $name = trim($body['name'] ?? ''); - $unit = trim($body['unit'] ?? 'Stück'); - $daily = (float)($body['daily'] ?? 1); - $days = (int) ($body['days'] ?? 30); - try { $start = (new DateTime($body['start'] ?? 'now'))->format('Y-m-d H:i:s'); } - catch (\Exception $e) { $start = date('Y-m-d H:i:s'); } - $setsJson = isset($body['sets']) && is_array($body['sets']) ? json_encode((object)$body['sets']) : '{}'; - if (!$name) json_out(['error' => 'Name fehlt'], 400); - - $conn->executeStatement( - 'INSERT INTO goals (user_id, name, unit, daily, days, start, sets) VALUES (?, ?, ?, ?, ?, ?, ?)', - [$uid, $name, $unit, $daily, $days, $start, $setsJson] - ); - $id = (string)$conn->lastInsertId(); - json_out(['id' => $id, 'name' => $name, 'unit' => $unit, 'daily' => $daily, 'days' => $days, 'start' => $start, 'sets' => json_decode($setsJson, true)]); -} - -// ── PATCH /api/goals/{id} ───────────────────────────────────────────────────── -if ($method === 'PATCH' && $resource === 'goals' && $resourceId !== null) { - $uid = require_auth($auth); - // Sicherstellen dass das Ziel dem User gehört - $existing = $conn->fetchOne('SELECT id FROM goals WHERE id = ? AND user_id = ?', [$resourceId, $uid]); - if (!$existing) json_out(['error' => 'Nicht gefunden'], 404); - - $fields = []; - $params = []; - foreach (['name', 'unit'] as $f) { - if (isset($body[$f])) { $fields[] = "$f = ?"; $params[] = (string)$body[$f]; } - } - foreach (['daily'] as $f) { - if (isset($body[$f])) { $fields[] = "$f = ?"; $params[] = (float)$body[$f]; } - } - foreach (['days'] as $f) { - if (isset($body[$f])) { $fields[] = "$f = ?"; $params[] = (int)$body[$f]; } - } - if (isset($body['sets'])) { - $fields[] = 'sets = ?'; - $params[] = json_encode($body['sets']); - } - if (!$fields) json_out(['ok' => true]); - - $params[] = $resourceId; - $params[] = $uid; - $conn->executeStatement('UPDATE goals SET ' . implode(', ', $fields) . ' WHERE id = ? AND user_id = ?', $params); - json_out(['ok' => true]); -} - -// ── DELETE /api/goals/{id} ──────────────────────────────────────────────────── -if ($method === 'DELETE' && $resource === 'goals' && $resourceId !== null) { - $uid = require_auth($auth); - $conn->executeStatement('DELETE FROM goals WHERE id = ? AND user_id = ?', [$resourceId, $uid]); - json_out(['ok' => true]); -} - -json_out(['error' => 'Not found'], 404); diff --git a/app.js b/app.js deleted file mode 100644 index 97a60e2..0000000 --- a/app.js +++ /dev/null @@ -1,716 +0,0 @@ -var TODAY = new Date(); TODAY.setHours(0,0,0,0); -var goals = [], prefs, selDay = {}, addAmt = {}, renamingId = null, renameVal = '', collapsed = {}; -var userName = ''; - -function loadPref(k,def){ try{ return JSON.parse(localStorage.getItem(k)||def); }catch(e){ return JSON.parse(def); } } -function saveP(){ localStorage.setItem('zt_p',JSON.stringify(prefs)); } -prefs = loadPref('zt_p','{}'); - -function tOff(g){ return Math.round((TODAY - new Date(g.start))/86400000); } -function o2d(g,i){ var d=new Date(new Date(g.start).getTime()+i*86400000); d.setHours(0,0,0,0); return d; } -function dTot(g,o){ return (g.sets[String(o)]||[]).reduce(function(a,b){return a+b.amount;},0); } -function fd(d){ return d.toLocaleDateString('de-DE',{weekday:'short',day:'numeric',month:'short'}); } -function fs(d){ return d.toLocaleDateString('de-DE',{day:'numeric',month:'short'}); } -function editable(g,o){ var t=tOff(g); return o===t||o===t-1; } -function now(){ var n=new Date(); return String(n.getHours()).padStart(2,'0')+':'+String(n.getMinutes()).padStart(2,'0'); } - -function heuteColor(tdone,daily){ - if(tdone===0) return 'var(--red)'; - if(tdone>=daily*1.1) return 'var(--blue)'; - if(tdone>=daily) return 'var(--green)'; - return 'var(--amber)'; -} - -function isCollapsed(id){ return collapsed[id]!==false; } -function toggleCollapse(id){ - var wasCollapsed=isCollapsed(id); - collapsed[id]=!wasCollapsed; - if(wasCollapsed){ - var g=goals.filter(function(x){return x.id===id;})[0]; - if(g) selDay[id]=tOff(g); - } - render(); -} - -function calc(g){ - var t=tOff(g), tot=g.daily*g.days; - var dr=Math.max(0,g.days-t-1); - var sd=new Date(g.start); sd.setHours(0,0,0,0); - var end=new Date(sd.getTime()+g.days*86400000); - var past=0; - for(var i=0;i=pd}; -} - -function dcls(g,i){ - var t=tOff(g); if(i>t) return 'dot df'; - var v=dTot(g,i); - var c=v===0?'dot dm':v>=g.daily*1.1?'dot db':v>=g.daily?'dot dd':'dot dp'; - return c+(editable(g,i)?' de':' dl'); -} -function dlbl(g,i){ - var t=tOff(g); if(i>t) return String(i+1); - var v=dTot(g,i); - if(v===0) return '✕'; if(v>=g.daily*1.1) return '+'; if(v>=g.daily) return '✓'; - return Math.round(v/g.daily*100)+'%'; -} - -// ── API ────────────────────────────────────────────────────────────────────── - -function api(method, path, body){ - var opts = {method:method, credentials:'include', headers:{'Content-Type':'application/json'}}; - if(body) opts.body = JSON.stringify(body); - return fetch('api/' + path, opts).then(function(res){ - return res.json().then(function(data){ - if(!res.ok){ var e=new Error(data.error||'Fehler'); e.status=res.status; throw e; } - return data; - }); - }); -} - -function loadGoals(){ - return api('GET','goals').then(function(data){ return data; }); -} - -function saveGoal(g){ - api('PATCH','goals/'+g.id,{name:g.name,unit:g.unit,daily:g.daily,days:g.days,start:g.start,sets:g.sets}) - .catch(function(e){ - if(e.status===401){ showLogin(); } - else showToast('Speicherfehler'); - }); -} - -// ── Toast ───────────────────────────────────────────────────────────────────── - -function showToast(msg){ - var t=document.createElement('div'); t.className='toast'; t.textContent=msg; - document.body.appendChild(t); setTimeout(function(){t.remove();},3000); -} - -// ── Goal-Aktionen ───────────────────────────────────────────────────────────── - -function addSet(gid,off){ - var g=goals.filter(function(x){return x.id===gid;})[0]; - if(!g||!editable(g,off)) return; - var k=gid+'_'+off, amt=parseInt(addAmt[k]||'0',10); - if(amt<=0) return; - if(!g.sets[String(off)]) g.sets[String(off)]=[]; - g.sets[String(off)].push({amount:amt,time:off===tOff(g)?now():'—'}); - addAmt[k]=''; saveGoal(g); render(); -} -function remSet(gid,off,idx){ - var g=goals.filter(function(x){return x.id===gid;})[0]; - if(!g||!editable(g,off)) return; - g.sets[String(off)].splice(idx,1); saveGoal(g); render(); -} -function delGoal(id){ - if(!confirm('Ziel wirklich löschen?')) return; - goals=goals.filter(function(g){return g.id!==id;}); - render(); - api('DELETE','goals/'+id).catch(function(){ showToast('Fehler beim Löschen'); }); -} -function selD(gid,off){ - var g=goals.filter(function(x){return x.id===gid;})[0]; - if(!g||!editable(g,off)) return; - selDay[gid]=selDay[gid]===off?null:off; render(); -} -function startRen(id){ - var g=goals.filter(function(x){return x.id===id;})[0]; if(!g) return; - renamingId=id; renameVal=g.name; render(); - setTimeout(function(){ var el=document.getElementById('ri'+id); if(el){el.focus();el.select();} },50); -} -function commitRen(id){ - var g=goals.filter(function(x){return x.id===id;})[0]; - if(g&&renameVal.trim()){g.name=renameVal.trim(); saveGoal(g);} - renamingId=null; render(); -} -function cancelRen(){ renamingId=null; render(); } - -// ── Template-Helper ─────────────────────────────────────────────────────────── - -function tpl(id){ - return document.getElementById(id).content.cloneNode(true).firstElementChild; -} - -// ── Overlays ────────────────────────────────────────────────────────────────── - -var OV_CSS='display:flex;position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.5);align-items:flex-end;justify-content:center;animation:fi .2s ease'; - -function closeOv(){ - var o=document.getElementById('ov'); - o.style.display='none'; - o.innerHTML=''; -} - -function showSheet(content, dismissable){ - var o=document.getElementById('ov'); - o.style.cssText=OV_CSS; - var sheet=tpl('tpl-sheet'); - sheet.appendChild(content); - o.innerHTML=''; - o.appendChild(sheet); - o.onclick=dismissable!==false?function(e){if(e.target===o)closeOv();}:null; -} - -// ── Login ───────────────────────────────────────────────────────────────────── - -function showLogin(err){ - var c=tpl('tpl-login'); - if(err){ var e=c.querySelector('.login-err'); e.textContent=err; e.style.display=''; } - showSheet(c,false); - var email=c.querySelector('.lf-email'), pass=c.querySelector('.lf-pass'), sub=c.querySelector('.lf-sub'); - setTimeout(function(){email.focus();},50); - email.onkeydown=function(e){if(e.key==='Enter')pass.focus();}; - pass.onkeydown=function(e){if(e.key==='Enter')sub.click();}; - c.querySelector('.lf-fgt').onclick=function(){showForgotPassword();}; - sub.onclick=function(){ - var ev=email.value.trim(), pv=pass.value; - if(!ev||!pv){ var errEl=c.querySelector('.login-err'); errEl.textContent='Bitte E-Mail und Passwort eingeben'; errEl.style.display=''; return; } - sub.disabled=true; sub.textContent='…'; - api('POST','login',{email:ev,password:pv}) - .then(function(){ return loadGoals(); }) - .then(function(g){ goals=g; closeOv(); render(); }) - .catch(function(err){ - sub.disabled=false; sub.textContent='Anmelden'; - showLogin(err.status===401?'Falsche E-Mail oder Passwort':err.status===429?'Zu viele Versuche':'Verbindungsfehler'); - }); - }; -} - -// ── Passwort vergessen ──────────────────────────────────────────────────────── - -function showForgotPassword(){ - var c=tpl('tpl-forgot-pw'); - showSheet(c,false); - var email=c.querySelector('.fp-email'), errEl=c.querySelector('.login-err'), sub=c.querySelector('.fp-sub'); - setTimeout(function(){email.focus();},50); - c.querySelector('.fp-back').onclick=function(){showLogin();}; - sub.onclick=function(){ - var ev=email.value.trim(); if(!ev) return; - sub.disabled=true; sub.textContent='…'; - api('POST','reset-request',{email:ev}) - .then(function(){ - var conf=tpl('tpl-email-sent'); - conf.querySelector('.es-ok').onclick=function(){showLogin();}; - showSheet(conf,false); - }) - .catch(function(err){ - sub.disabled=false; sub.textContent='Link senden'; - errEl.textContent=err.message||'Fehler'; errEl.style.display=''; - }); - }; -} - -// ── Passwort zurücksetzen ───────────────────────────────────────────────────── - -function showResetPassword(selector,token){ - var c=tpl('tpl-reset-pw'); - showSheet(c,false); - var pass=c.querySelector('.rp-pass'), errEl=c.querySelector('.login-err'), sub=c.querySelector('.rp-sub'); - setTimeout(function(){pass.focus();},50); - sub.onclick=function(){ - var pv=pass.value; if(!pv) return; - sub.disabled=true; sub.textContent='…'; - api('POST','reset-password',{selector:selector,token:token,password:pv}) - .then(function(){ - var conf=tpl('tpl-pw-changed'); - conf.querySelector('.pc-ok').onclick=function(){showLogin();}; - showSheet(conf,false); - }) - .catch(function(err){ - sub.disabled=false; sub.textContent='Passwort setzen'; - errEl.textContent=err.message||'Fehler'; errEl.style.display=''; - }); - }; -} - -// ── Passwort ändern ─────────────────────────────────────────────────────────── - -function showChangePassword(){ - var c=tpl('tpl-change-pw'); - showSheet(c,true); - var oldP=c.querySelector('.cp-old'), newP=c.querySelector('.cp-new'), newP2=c.querySelector('.cp-new2'); - var errEl=c.querySelector('.login-err'), sub=c.querySelector('.cp-sub'); - setTimeout(function(){oldP.focus();},50); - c.querySelector('.cp-can').onclick=closeOv; - sub.onclick=function(){ - var o=oldP.value, n=newP.value, n2=newP2.value; - if(!o||!n||!n2) return; - if(n!==n2){ errEl.textContent='Die neuen Passwörter stimmen nicht überein'; errEl.style.display=''; return; } - sub.disabled=true; sub.textContent='…'; - api('POST','change-password',{old_password:o,new_password:n}) - .then(function(){ showToast('Passwort geändert'); closeOv(); }) - .catch(function(err){ - sub.disabled=false; sub.textContent='Ändern'; - errEl.textContent=err.message||'Fehler'; errEl.style.display=''; - }); - }; -} - -// ── Registrierung ───────────────────────────────────────────────────────────── - -function showRegister(token){ - var c=tpl('tpl-register'); - showSheet(c,false); - var nameInp=c.querySelector('.rg-name'), email=c.querySelector('.rg-email'); - var pass=c.querySelector('.rg-pass'), pass2=c.querySelector('.rg-pass2'); - var errEl=c.querySelector('.login-err'), sub=c.querySelector('.rg-sub'); - setTimeout(function(){nameInp.focus();},50); - nameInp.onkeydown=function(e){if(e.key==='Enter')email.focus();}; - email.onkeydown=function(e){if(e.key==='Enter')pass.focus();}; - pass.onkeydown=function(e){if(e.key==='Enter')pass2.focus();}; - pass2.onkeydown=function(e){if(e.key==='Enter')sub.click();}; - function checkMatch(){ if(pass2.value&&pass.value!==pass2.value){ errEl.textContent='Passwörter stimmen nicht überein'; errEl.style.display=''; } else { errEl.style.display='none'; } } - pass.oninput=checkMatch; pass2.oninput=checkMatch; - sub.onclick=function(){ - var nv=nameInp.value.trim(), ev=email.value.trim(), pv=pass.value; - if(!nv||!ev||!pv){ errEl.textContent='Bitte alle Felder ausfüllen'; errEl.style.display=''; return; } - if(pv!==pass2.value){ errEl.textContent='Passwörter stimmen nicht überein'; errEl.style.display=''; return; } - sub.disabled=true; sub.textContent='…'; - api('POST','register',{name:nv,email:ev,password:pv,token:token}) - .then(function(r){ userName=r.name||''; return loadGoals(); }) - .then(function(g){ goals=g; closeOv(); updateHeader(); render(); }) - .catch(function(err){ - sub.disabled=false; sub.textContent='Registrieren'; - errEl.textContent=err.message||'Fehler'; errEl.style.display=''; - }); - }; -} - -// ── Neues Ziel ──────────────────────────────────────────────────────────────── - -function openNew(){ - var c=tpl('tpl-new-goal'); - showSheet(c,true); - var name=c.querySelector('.ng-name'), unit=c.querySelector('.ng-unit'); - var daily=c.querySelector('.ng-daily'), days=c.querySelector('.ng-days'), sub=c.querySelector('.ng-sub'); - setTimeout(function(){name.focus();},50); - c.querySelector('.ng-can').onclick=closeOv; - sub.onclick=function(){ - var nv=(name.value||'').trim(), uv=(unit.value||'').trim()||'Stück'; - var dv=parseInt(daily.value,10)||1, dyv=parseInt(days.value,10)||30; - if(!nv){ name.focus(); return; } - sub.disabled=true; - api('POST','goals',{name:nv,unit:uv,daily:dv,days:dyv,start:TODAY.toISOString()}) - .then(function(r){ - goals.push({id:r.id,name:r.name,unit:r.unit,daily:r.daily,days:r.days,start:r.start,sets:r.sets||{}}); - closeOv(); render(); - }).catch(function(e){ - sub.disabled=false; - if(e.status===401){ closeOv(); showLogin(); } - else showToast('Fehler beim Erstellen'); - }); - }; -} - -// ── Daten-Menü ──────────────────────────────────────────────────────────────── - -function openData(){ - var c=tpl('tpl-data-menu'); - showSheet(c,true); - c.querySelector('.dm-cls').onclick=closeOv; - c.querySelector('.dm-name').onclick=function(){ - var nc=tpl('tpl-change-name'); - showSheet(nc,true); - var inp=nc.querySelector('.cn-name'), errEl=nc.querySelector('.login-err'), sub=nc.querySelector('.cn-sub'); - inp.value=userName; - setTimeout(function(){inp.focus();inp.select();},50); - nc.querySelector('.cn-can').onclick=closeOv; - sub.onclick=function(){ - var nv=inp.value.trim(); - if(!nv){ errEl.textContent='Name darf nicht leer sein'; errEl.style.display=''; return; } - sub.disabled=true; sub.textContent='…'; - api('PATCH','me',{name:nv}) - .then(function(r){ userName=r.name; closeOv(); render(); showToast('Name gespeichert'); }) - .catch(function(){ sub.disabled=false; sub.textContent='Speichern'; showToast('Fehler beim Speichern'); }); - }; - }; - c.querySelector('.dm-cpw').onclick=function(){ closeOv(); showChangePassword(); }; - c.querySelector('.dm-lgout').onclick=function(){ - api('POST','logout').then(function(){ goals=[]; closeOv(); render(); showLogin(); }); - }; - - c.querySelector('.dm-inv').onclick=function(){ - var ic=tpl('tpl-invite-form'); - showSheet(ic,true); - var invName=ic.querySelector('.inv-name'); - setTimeout(function(){invName.focus();},50); - ic.querySelector('.inv-cancel').onclick=closeOv; - ic.querySelector('.inv-gen').onclick=function(){ - var note=invName.value.trim(), btn=this; - btn.disabled=true; btn.textContent='…'; - api('POST','invite',{note:note}).then(function(res){ - var lc=tpl('tpl-invite-link'); - lc.querySelector('.stitle').textContent='Einladungslink'+(note?' für '+note:''); - var urlInp=lc.querySelector('.il-url'); - urlInp.value=res.url; - showSheet(lc,true); - lc.querySelector('.il-close').onclick=closeOv; - lc.querySelector('.il-copy').onclick=function(){ - navigator.clipboard.writeText(res.url).then(function(){ showToast('Link kopiert!'); closeOv(); }); - }; - setTimeout(function(){urlInp.select();},50); - }).catch(function(){ - btn.disabled=false; btn.textContent='Link generieren'; - showToast('Fehler beim Generieren'); - }); - }; - }; - - c.querySelector('.dm-invlist').onclick=function(){ - api('GET','invites').then(function(list){ - var statusLabel={'pending':'Ausstehend','used':'Angenommen','expired':'Abgelaufen'}; - var statusColor={'pending':'var(--amber)','used':'var(--green)','expired':'var(--red)'}; - var lc=tpl('tpl-invite-list'); - var body=lc.querySelector('.dpanel-body'); - if(!list.length){ - var empty=document.createElement('div'); - empty.className='nosets'; empty.style.padding='16px'; - empty.textContent='Noch keine Einladungen verschickt'; - body.appendChild(empty); - } else { - for(var i=0;i0?'var(--blue)':c.st===0?'var(--green)':c.dailyDelta<=0?'var(--green)':c.dailyDelta<=g.daily*.2?'var(--amber)':'var(--red)'; - var bc,bt,bufStr=(c.buf>0?'+':'')+c.buf; - if(c.ok&&c.surplus>0){bc='b-buf';bt=bufStr;} - else if(c.ok){bc='b-done';bt=bufStr;} - else if(c.dailyDelta<=0){bc='b-ok';bt=bufStr;} - else if(c.dailyDelta<=g.daily*.2){bc='b-warn';bt=bufStr;} - else{bc='b-danger';bt=bufStr;} - - var el; - if(isCollapsed(g.id)){ - el=tpl('tpl-card-collapsed'); - if(c.ok) el.classList.add('done'); - el.querySelector('.card-hdr').dataset.g=g.id; - var bd=el.querySelector('.card-bd'); - bd.insertBefore(buildNameWrap(g),bd.firstElementChild); - var hc=heuteColor(c.tdone,g.daily); - el.querySelector('.m-dr').textContent=c.dr; - el.querySelector('.m-end').textContent=fs(c.end); - var mH=el.querySelector('.m-heute'); mH.textContent=c.tdone+'/'+g.daily; mH.style.color=hc; - el.querySelector('.m-total').textContent=c.done+'/'+c.tot; - var badge=el.querySelector('.badge'); badge.className='badge '+bc; badge.textContent=bt; - var fill=el.querySelector('.prog-fill'); fill.style.width=c.pct+'%'; fill.style.background=fc; - return el; - } - - el=tpl('tpl-card-expanded'); - if(c.ok) el.classList.add('done'); - el.querySelector('.card-hdr').dataset.g=g.id; - var bd=el.querySelector('.card-bd'); - bd.insertBefore(buildNameWrap(g),bd.firstElementChild); - el.querySelector('.m-dr').textContent=c.dr; - el.querySelector('.m-end').textContent=fs(c.end); - var badge=el.querySelector('.badge'); badge.className='badge '+bc; badge.textContent=bt; - var fill=el.querySelector('.prog-fill'); fill.style.width=c.pct+'%'; fill.style.background=fc; - el.querySelector('.pr-done').textContent=c.done+' '+g.unit+' gemacht'; - el.querySelector('.pr-pct').textContent=c.pct+'% von '+c.tot; - el.querySelector('.sv-tdone').textContent=c.tdone; - el.querySelector('.sv-daily').textContent=g.daily; - el.querySelector('.sv-st').textContent=c.st; - el.querySelector('.sv-noch').style.color=heuteColor(c.tdone,g.daily); - el.querySelectorAll('.sunit').forEach(function(u){ u.textContent=g.unit; }); - - var sel=selDay[g.id]!=null?selDay[g.id]:t; - var dotsWrap=el.querySelector('.dots-wrap'); - for(var i=0;i0?' ry':''); - if(ed){ dot.dataset.g=g.id; dot.dataset.d=i; } - dot.textContent=dlbl(g,i); - dotsWrap.appendChild(dot); - } - - if(sel!=null) el.insertBefore(buildPanel(g,sel),el.querySelector('.card-foot')); - el.querySelector('.btn-del').dataset.g=g.id; - return el; -} - -// ── Quick-Buchen ────────────────────────────────────────────────────────────── - -function buildQuickBook(){ - var active=goals.filter(function(g){ var c=calc(g); return tOff(g)=g.days) units+=Math.floor(g.days/30); - } - var gold=Math.floor(units/25); units%=25; - var silver=Math.floor(units/5); var bronze=units%5; - return{gold:gold,silver:silver,bronze:bronze}; -} - -function render(){ - var m=document.getElementById('main'); - var frag=document.createDocumentFragment(); - - if(!prefs.hd){ - var hint=tpl('tpl-hint'); - hint.querySelector('.hclose').onclick=function(){ prefs.hd=1; saveP(); hint.remove(); }; - frag.appendChild(hint); - } - - var aw=calcAwards(); - if(aw.gold||aw.silver||aw.bronze){ - var awards=document.createElement('div'); awards.className='awards'; - var medals=[['🥇',aw.gold],['🥈',aw.silver],['🥉',aw.bronze]]; - for(var mi=0;mi=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + }, + "time": "2025-12-06T11:56:16+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "14.1.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "4991e47adce8e31e554aee8fdaabfc3b1d60707d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4991e47adce8e31e554aee8fdaabfc3b1d60707d", + "reference": "4991e47adce8e31e554aee8fdaabfc3b1d60707d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.7.0", + "php": ">=8.4", + "phpunit/php-text-template": "^6.0", + "sebastian/complexity": "^6.0", + "sebastian/environment": "^9.2", + "sebastian/git-state": "^1.0", + "sebastian/lines-of-code": "^5.0", + "sebastian/version": "^7.0", + "theseer/tokenizer": "^2.0.1" + }, + "require-dev": { + "phpunit/phpunit": "^13.1" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "14.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/14.1.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" + } + ], + "time": "2026-04-24T13:10:08+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "6e5aa1fb0a95b1703d83e721299ee18bb4e2de50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6e5aa1fb0a95b1703d83e721299ee18bb4e2de50", + "reference": "6e5aa1fb0a95b1703d83e721299ee18bb4e2de50", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:33:26+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88", + "reference": "42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^13.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-invoker", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:34:47+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "a47af19f93f76aa3368303d752aa5272ca3299f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/a47af19f93f76aa3368303d752aa5272ca3299f4", + "reference": "a47af19f93f76aa3368303d752aa5272ca3299f4", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-text-template", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:36:37+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "9.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "a0e12065831f6ab0d83120dc61513eb8d9a966f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/a0e12065831f6ab0d83120dc61513eb8d9a966f6", + "reference": "a0e12065831f6ab0d83120dc61513eb8d9a966f6", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/9.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-timer", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:37:53+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "13.1.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "ddd6401641861cdef94b922ef10d484f436e8dcd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ddd6401641861cdef94b922ef10d484f436e8dcd", + "reference": "ddd6401641861cdef94b922ef10d484f436e8dcd", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.4.1", + "phpunit/php-code-coverage": "^14.1.3", + "phpunit/php-file-iterator": "^7.0.0", + "phpunit/php-invoker": "^7.0.0", + "phpunit/php-text-template": "^6.0.0", + "phpunit/php-timer": "^9.0.0", + "sebastian/cli-parser": "^5.0.0", + "sebastian/comparator": "^8.1.2", + "sebastian/diff": "^8.1.0", + "sebastian/environment": "^9.3.0", + "sebastian/exporter": "^8.0.2", + "sebastian/git-state": "^1.0", + "sebastian/global-state": "^9.0.0", + "sebastian/object-enumerator": "^8.0.0", + "sebastian/recursion-context": "^8.0.0", + "sebastian/type": "^7.0.0", + "sebastian/version": "^7.0.0", + "staabm/side-effects-detector": "^1.0.5" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "13.1-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/13.1.7" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsoring.html", + "type": "other" + } + ], + "time": "2026-04-18T06:14:52+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "48a4654fa5e48c1c81214e9930048a572d4b23ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/48a4654fa5e48c1c81214e9930048a572d4b23ca", + "reference": "48a4654fa5e48c1c81214e9930048a572d4b23ca", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:39:44+00:00" + }, + { + "name": "sebastian/comparator", + "version": "8.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "b3d09f4360ad97dcad8f82d1c047ad16ff38b7e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/b3d09f4360ad97dcad8f82d1c047ad16ff38b7e1", + "reference": "b3d09f4360ad97dcad8f82d1c047ad16ff38b7e1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.4", + "sebastian/diff": "^8.1", + "sebastian/exporter": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/8.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-04-14T08:24:42+00:00" + }, + { + "name": "sebastian/complexity", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "c5651c795c98093480df79350cb050813fc7a2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c5651c795c98093480df79350cb050813fc7a2f3", + "reference": "c5651c795c98093480df79350cb050813fc7a2f3", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/complexity", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:41:32+00:00" + }, + { + "name": "sebastian/diff", + "version": "8.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "9c957d730257f49c873f3761674559bd90098a7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/9c957d730257f49c873f3761674559bd90098a7d", + "reference": "9c957d730257f49c873f3761674559bd90098a7d", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0", + "symfony/process": "^7.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/8.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/diff", + "type": "tidelift" + } + ], + "time": "2026-04-05T12:02:33+00:00" + }, + { + "name": "sebastian/environment", + "version": "9.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "6767059a30e4277ac95ee034809e793528464768" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6767059a30e4277ac95ee034809e793528464768", + "reference": "6767059a30e4277ac95ee034809e793528464768", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/9.3.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" + } + ], + "time": "2026-04-15T12:14:03+00:00" + }, + { + "name": "sebastian/exporter", + "version": "8.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "9cee180ebe62259e3ed48df2212d1fc8cfd971bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/9cee180ebe62259e3ed48df2212d1fc8cfd971bb", + "reference": "9cee180ebe62259e3ed48df2212d1fc8cfd971bb", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.4", + "sebastian/recursion-context": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/8.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2026-04-15T12:38:05+00:00" + }, + { + "name": "sebastian/git-state", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/git-state.git", + "reference": "792a952e0eba55b6960a48aeceb9f371aad1f76b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/git-state/zipball/792a952e0eba55b6960a48aeceb9f371aad1f76b", + "reference": "792a952e0eba55b6960a48aeceb9f371aad1f76b", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for describing the state of a Git checkout", + "homepage": "https://github.com/sebastianbergmann/git-state", + "support": { + "issues": "https://github.com/sebastianbergmann/git-state/issues", + "security": "https://github.com/sebastianbergmann/git-state/security/policy", + "source": "https://github.com/sebastianbergmann/git-state/tree/1.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/git-state", + "type": "tidelift" + } + ], + "time": "2026-03-21T12:54:28+00:00" + }, + { + "name": "sebastian/global-state", + "version": "9.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e52e3dc22441e6218c710afe72c3042f8fc41ea7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e52e3dc22441e6218c710afe72c3042f8fc41ea7", + "reference": "e52e3dc22441e6218c710afe72c3042f8fc41ea7", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "sebastian/object-reflector": "^6.0", + "sebastian/recursion-context": "^8.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/9.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:45:13+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "4f21bb7768e1c997722ccc7efb1d6b5c11bfd471" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/4f21bb7768e1c997722ccc7efb1d6b5c11bfd471", + "reference": "4f21bb7768e1c997722ccc7efb1d6b5c11bfd471", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/lines-of-code", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:45:54+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "8.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "b39ab125fd9a7434b0ecbc4202eebce11a98cfc5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/b39ab125fd9a7434b0ecbc4202eebce11a98cfc5", + "reference": "b39ab125fd9a7434b0ecbc4202eebce11a98cfc5", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "sebastian/object-reflector": "^6.0", + "sebastian/recursion-context": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/8.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/object-enumerator", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:46:36+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "3ca042c2c60b0eab094f8a1b6a7093f4d4c72200" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/3ca042c2c60b0eab094f8a1b6a7093f4d4c72200", + "reference": "3ca042c2c60b0eab094f8a1b6a7093f4d4c72200", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/object-reflector", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:47:13+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "8.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "74c5af21f6a5833e91767ca068c4d3dfec15317e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/74c5af21f6a5833e91767ca068c4d3dfec15317e", + "reference": "74c5af21f6a5833e91767ca068c4d3dfec15317e", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/8.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:51:28+00:00" + }, + { + "name": "sebastian/type", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "42412224607bd3931241bbd17f38e0f972f5a916" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/42412224607bd3931241bbd17f38e0f972f5a916", + "reference": "42412224607bd3931241bbd17f38e0f972f5a916", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "phpunit/phpunit": "^13.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:52:09+00:00" + }, + { + "name": "sebastian/version", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "ad37a5552c8e2b88572249fdc19b6da7792e021b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ad37a5552c8e2b88572249fdc19b6da7792e021b", + "reference": "ad37a5552c8e2b88572249fdc19b6da7792e021b", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/version", + "type": "tidelift" + } + ], + "time": "2026-02-06T04:52:52+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v8.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "f5a28fca785416cf489dd579011e74c831100cc3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/f5a28fca785416cf489dd579011e74c831100cc3", + "reference": "f5a28fca785416cf489dd579011e74c831100cc3", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/dom-crawler": "^7.4|^8.0" + }, + "require-dev": { + "symfony/css-selector": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/browser-kit/tree/v8.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-30T15:14:47+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v8.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "8db1c00226a94d8ab6aa89d9224eeee91e2ea2ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/8db1c00226a94d8ab6aa89d9224eeee91e2ea2ed", + "reference": "8db1c00226a94d8ab6aa89d9224eeee91e2ea2ed", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v8.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-30T15:14:47+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v8.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "284ace90732b445b027728b5e0eec6418a17a364" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/284ace90732b445b027728b5e0eec6418a17a364", + "reference": "284ace90732b445b027728b5e0eec6418a17a364", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "symfony/css-selector": "^7.4|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v8.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-30T15:14:47+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^8.1" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2025-12-08T11:19:18+00:00" + } + ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { "php": ">=8.4", - "ext-ctype": "*", - "ext-iconv": "*" + "ext-ctype": "*" }, - "platform-dev": {}, + "platform-dev": [], "plugin-api-version": "2.9.0" } diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index ffb8ee9..62fe33e 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -19,11 +19,6 @@ doctrine: prefix: 'App\Entity' alias: App -when@test: - doctrine: - dbal: - # "TEST_TOKEN" is typically set by ParaTest - dbname_suffix: '_test%env(default::TEST_TOKEN)%' when@prod: doctrine: diff --git a/config/reference.php b/config/reference.php index 7defcec..b89e2ae 100644 --- a/config/reference.php +++ b/config/reference.php @@ -1240,16 +1240,6 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * doctrine_migrations?: DoctrineMigrationsConfig, * security?: SecurityConfig, * twig?: TwigConfig, - * "when@dev"?: array{ - * imports?: ImportsConfig, - * parameters?: ParametersConfig, - * services?: ServicesConfig, - * framework?: FrameworkConfig, - * doctrine?: DoctrineConfig, - * doctrine_migrations?: DoctrineMigrationsConfig, - * security?: SecurityConfig, - * twig?: TwigConfig, - * }, * "when@prod"?: array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, @@ -1352,7 +1342,6 @@ namespace Symfony\Component\Routing\Loader\Configurator; * deprecated?: array{package:string, version:string, message?:string}, * } * @psalm-type RoutesConfig = array{ - * "when@dev"?: array, * "when@prod"?: array, * "when@test"?: array, * ... diff --git a/include/db.php b/include/db.php deleted file mode 100644 index c81ca34..0000000 --- a/include/db.php +++ /dev/null @@ -1,60 +0,0 @@ - 'pdo_mysql', - 'host' => DB_HOST, - 'dbname' => DB_NAME, - 'user' => DB_USER, - 'password' => DB_PASS, - 'charset' => 'utf8mb4', -]); - -// PDO für delight-im/auth -$pdo = $conn->getNativeConnection(); -$auth = new \Delight\Auth\Auth($pdo); - -// Tabellen anlegen falls nicht vorhanden -$conn->executeStatement(' - CREATE TABLE IF NOT EXISTS goals ( - id INT AUTO_INCREMENT PRIMARY KEY, - user_id INT NOT NULL, - name VARCHAR(255) NOT NULL, - unit VARCHAR(50) NOT NULL DEFAULT \'Stück\', - daily FLOAT NOT NULL DEFAULT 1, - days INT NOT NULL DEFAULT 30, - start DATETIME NOT NULL, - sets JSON NOT NULL DEFAULT (\'[]\'), - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci -'); - -$conn->executeStatement(' - CREATE TABLE IF NOT EXISTS schema_migrations ( - version VARCHAR(64) NOT NULL PRIMARY KEY, - applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci -'); - -$conn->executeStatement(' - CREATE TABLE IF NOT EXISTS invites ( - id INT AUTO_INCREMENT PRIMARY KEY, - token VARCHAR(64) NOT NULL UNIQUE, - note VARCHAR(255) DEFAULT NULL, - created_by INT NOT NULL, - used_by INT DEFAULT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - expires_at TIMESTAMP NOT NULL, - used_at TIMESTAMP DEFAULT NULL - ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci -'); - -// Migrations ausführen -foreach (glob(__DIR__ . '/../migrations/*.sql') as $file) { - $version = basename($file, '.sql'); - if (!$conn->fetchOne('SELECT 1 FROM schema_migrations WHERE version = ?', [$version])) { - $conn->executeStatement(file_get_contents($file)); - $conn->executeStatement('INSERT INTO schema_migrations (version) VALUES (?)', [$version]); - } -} diff --git a/include/mailer.php b/include/mailer.php deleted file mode 100644 index 3e9e12d..0000000 --- a/include/mailer.php +++ /dev/null @@ -1,19 +0,0 @@ -isSMTP(); - $mail->Host = SMTP_HOST; - $mail->SMTPAuth = true; - $mail->Username = SMTP_USER; - $mail->Password = SMTP_PASS; - $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; - $mail->Port = SMTP_PORT; - $mail->CharSet = 'UTF-8'; - $mail->setFrom(SMTP_FROM, SMTP_FROM_NAME); - $mail->addAddress($to); - $mail->Subject = $subject; - $mail->Body = $body; - $mail->send(); -} diff --git a/index.php b/index.php deleted file mode 100644 index a2c8b46..0000000 --- a/index.php +++ /dev/null @@ -1,8 +0,0 @@ - false] -); -echo $twig->render('app.html.twig'); diff --git a/logo.png b/logo.png deleted file mode 100644 index a194b0379be02bed003a31662a2724249254aa92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233309 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�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 diff --git a/migrations/Version20260430000000.php b/migrations/Version20260430000000.php new file mode 100644 index 0000000..76450e1 --- /dev/null +++ b/migrations/Version20260430000000.php @@ -0,0 +1,26 @@ +addSql('ALTER TABLE users_resets CHANGE selector selector VARCHAR(64) NOT NULL'); + } + + public function down(Schema $schema): void + { + $this->addSql('ALTER TABLE users_resets CHANGE selector selector VARCHAR(20) NOT NULL'); + } +} diff --git a/phpunit.dist.xml b/phpunit.dist.xml new file mode 100644 index 0000000..22bd879 --- /dev/null +++ b/phpunit.dist.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + tests + + + + + + src + + + + Doctrine\Deprecations\Deprecation::trigger + Doctrine\Deprecations\Deprecation::delegateTriggerToBackend + trigger_deprecation + + + + + + diff --git a/style.css b/style.css deleted file mode 100644 index 6252ca9..0000000 --- a/style.css +++ /dev/null @@ -1,113 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=DM+Mono:wght@400;500&display=swap'); -:root{--bg:#f5f4f0;--bg2:#fff;--bg3:#f0eeea;--border:rgba(0,0,0,.07);--border2:rgba(0,0,0,.12);--text:#1a1a1a;--text2:#666;--text3:#aaa;--green:#16a34a;--green-bg:rgba(22,163,74,.08);--blue:#2563eb;--blue-bg:rgba(37,99,235,.08);--amber:#d97706;--amber-bg:rgba(217,119,6,.08);--red:#dc2626;--red-bg:rgba(220,38,38,.08);--r:14px;--rs:8px} -*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent} -body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text);min-height:100dvh;padding-bottom:80px} -.main-wrap{max-width:480px;margin:0 auto} -.hdr{position:sticky;top:0;z-index:100;background:rgba(245,244,240,.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:16px 20px 14px;display:flex;align-items:center;justify-content:space-between} -.hdr-title{font-size:18px;font-weight:600;letter-spacing:-.3px} -.hdr-logo{height:100px;width:auto;mix-blend-mode:multiply;display:block} -.hdr-sub{font-size:12px;color:var(--text3);margin-top:1px;font-family:'DM Mono',monospace} -.hdr-btns{display:flex;gap:8px;align-items:center} -.btn-add{width:38px;height:38px;border-radius:50%;background:var(--text);color:var(--bg);border:none;cursor:pointer;font-size:22px;display:flex;align-items:center;justify-content:center;font-weight:300;transition:transform .15s} -.btn-add:active{transform:scale(.92)} -.btn-menu{width:38px;height:38px;border-radius:50%;background:var(--bg3);color:var(--text2);border:1px solid var(--border);cursor:pointer;font-size:20px;display:flex;align-items:center;justify-content:center;transition:transform .15s} -.btn-menu:active{transform:scale(.92)} -.main{padding:16px 16px 0} -.greeting{font-size:17px;font-weight:600;letter-spacing:-.2px;padding:0 2px 10px} -.sec-lbl{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.6px;font-family:'DM Mono',monospace;margin-bottom:6px;margin-top:4px;padding:0 2px} -.empty{text-align:center;padding:60px 20px;color:var(--text3);font-size:14px;line-height:1.8} -.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);margin-bottom:8px;overflow:hidden} -.card.done{opacity:.7} -.card-hdr{padding:14px 16px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;user-select:none} -.name-wrap{display:flex;align-items:center;gap:6px} -.goal-name{font-size:16px;font-weight:600;letter-spacing:-.2px} -.btn-ren{background:none;border:none;color:var(--text3);cursor:pointer;font-size:14px;padding:2px 4px;line-height:1;flex-shrink:0} -.btn-ren:active{color:var(--blue)} -.ren-input{font-family:'DM Sans',sans-serif;font-size:16px;font-weight:600;background:var(--bg3);border:1px solid var(--blue);border-radius:6px;color:var(--text);padding:2px 8px;width:100%;letter-spacing:-.2px} -.ren-input:focus{outline:none} -.goal-meta{font-size:11px;color:var(--text3);margin-top:3px;font-family:'DM Mono',monospace;line-height:1.5} -.chevron{font-size:13px;color:var(--text3);margin-left:4px;flex-shrink:0} -.badge{font-size:10px;font-weight:600;padding:3px 8px;border-radius:99px;white-space:nowrap;flex-shrink:0;letter-spacing:.3px;text-transform:uppercase} -.b-ok{background:var(--green-bg);color:var(--green)}.b-done{background:var(--green-bg);color:var(--green)}.b-warn{background:var(--amber-bg);color:var(--amber)}.b-danger{background:var(--red-bg);color:var(--red)}.b-buf{background:var(--blue-bg);color:var(--blue)} -.prog-wrap{padding:0 16px 12px} -.prog-track{height:4px;background:var(--bg3);border-radius:99px;overflow:hidden} -.prog-fill{height:100%;border-radius:99px;transition:width .4s ease} -.prog-row{display:flex;justify-content:space-between;font-size:11px;color:var(--text3);margin-top:5px;font-family:'DM Mono',monospace} -.heute-stats{padding:0 16px 14px} -.heute-group{background:var(--bg3);border-radius:var(--rs);padding:8px 8px 6px} -.heute-lbl{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;text-align:center;margin-bottom:6px;font-family:'DM Mono',monospace} -.heute-inner{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px} -.stat{background:var(--bg2);border-radius:6px;padding:7px 6px 5px;text-align:center} -.slbl{font-size:9px;color:var(--text3);margin-bottom:2px} -.sval{font-size:14px;font-weight:600;font-family:'DM Mono',monospace} -.sunit{font-size:8px;color:var(--text3)} -.dots-sec{padding:0 16px 12px} -.dots-lbl{font-size:11px;color:var(--text3);margin-bottom:6px} -.dots-wrap{display:flex;gap:3px;flex-wrap:wrap} -.dot{width:26px;height:26px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:600;font-family:'DM Mono',monospace;transition:opacity .15s} -.df{background:var(--bg3);color:var(--text3)} -.dm{background:rgba(220,38,38,.12);color:var(--red)} -.dp{background:rgba(217,119,6,.12);color:var(--amber)} -.dd{background:rgba(22,163,74,.12);color:var(--green)} -.db{background:rgba(37,99,235,.12);color:var(--blue)} -.de{cursor:pointer}.de:active{opacity:.6;transform:scale(.9)}.dl{opacity:.6;cursor:default} -.rt{box-shadow:0 0 0 2px var(--text2)}.ry{box-shadow:0 0 0 2px var(--text3)}.rs{box-shadow:0 0 0 2px var(--blue) !important} -.legend{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px} -.leg{display:flex;align-items:center;gap:4px;font-size:10px;color:var(--text3)} -.ldot{width:8px;height:8px;border-radius:2px} -.dpanel{margin:0 16px 14px;background:var(--bg3);border-radius:var(--rs);overflow:hidden;border:1px solid var(--border2)} -.dpanel-hdr{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border)} -.dpanel-title{font-size:13px;font-weight:600} -.dpanel-sub{font-size:11px;color:var(--text2);font-family:'DM Mono',monospace} -.dpanel-body{padding:10px 12px} -.set-row{display:flex;align-items:center;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--border);font-size:13px} -.set-row:last-of-type{border-bottom:none} -.stime{font-size:10px;color:var(--text3);font-family:'DM Mono',monospace;margin-right:4px} -.sdel{background:none;border:none;color:var(--text3);cursor:pointer;font-size:16px;padding:2px 6px;border-radius:4px} -.sdel:active{color:var(--red)} -.add-row{display:flex;gap:8px;align-items:center;margin-top:10px} -.num-in{font-family:'DM Mono',monospace;font-size:15px;padding:8px 10px;border-radius:var(--rs);border:1px solid var(--border2);background:var(--bg2);color:var(--text);width:90px;text-align:center} -.num-in:focus{outline:none;border-color:var(--blue)} -.ulbl{font-size:12px;color:var(--text3)} -.btn-as{flex:1;padding:8px;border-radius:var(--rs);background:var(--blue-bg);color:var(--blue);border:1px solid rgba(37,99,235,.2);cursor:pointer;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600} -.btn-as:active{opacity:.7} -.nosets{font-size:12px;color:var(--text3);padding:4px 0 8px} -.card-foot{padding:8px 16px 12px;display:flex;justify-content:flex-end} -.btn-del{background:none;border:none;color:var(--text3);font-size:12px;cursor:pointer;padding:4px 0;font-family:'DM Sans',sans-serif} -.btn-del:active{color:var(--red)} -.qb-card{padding:0 16px} -.qb-row{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--border)} -.qb-row:last-child{border-bottom:none} -.qb-name{flex:1;font-size:16px;font-weight:600;letter-spacing:-.2px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0} -.qb-stat{font-size:11px;font-family:'DM Mono',monospace;color:var(--text3);white-space:nowrap} -.qb-row .num-in{width:62px;padding:6px 6px;font-size:13px} -.qb-row .btn-as{flex:none;padding:8px 14px;font-size:13px} -.ov{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;animation:fi .2s ease} -@keyframes fi{from{opacity:0}to{opacity:1}} -.sheet{width:100%;max-width:480px;background:var(--bg2);border-radius:20px 20px 0 0;border:1px solid var(--border2);padding:20px 20px 40px;animation:su .25s ease;max-height:90dvh;overflow-y:auto} -@keyframes su{from{transform:translateY(100%)}to{transform:translateY(0)}} -.shandle{width:36px;height:4px;border-radius:2px;background:var(--border2);margin:0 auto 20px} -.stitle{font-size:17px;font-weight:600;margin-bottom:4px} -.ssub{font-size:12px;color:var(--text3);margin-bottom:16px} -.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px} -.ff{margin-bottom:10px} -.ff label{font-size:11px;color:var(--text3);display:block;margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px} -.fi{width:100%;font-family:'DM Sans',sans-serif;font-size:15px;padding:10px 12px;border-radius:var(--rs);border:1px solid var(--border2);background:var(--bg3);color:var(--text)} -.fi:focus{outline:none;border-color:var(--blue)} -.factions{display:flex;gap:8px;margin-top:16px} -.btn-p{flex:1;padding:13px;border-radius:var(--rs);background:var(--text);color:var(--bg);border:none;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:15px;font-weight:600} -.btn-p:active{opacity:.8} -.btn-c{padding:13px 20px;border-radius:var(--rs);background:var(--bg3);color:var(--text2);border:1px solid var(--border);cursor:pointer;font-family:'DM Sans',sans-serif;font-size:15px} -.dbtn{width:100%;padding:13px 16px;border-radius:var(--rs);background:var(--bg3);border:1px solid var(--border);color:var(--text);font-family:'DM Sans',sans-serif;font-size:15px;text-align:left;cursor:pointer;margin-bottom:8px;display:flex;align-items:center;gap:12px} -.dbtn:active{background:var(--border2)} -.dico{font-size:18px;width:24px;text-align:center;flex-shrink:0} -.dlbl{flex:1}.dsub{font-size:11px;color:var(--text3);display:block;margin-top:1px} -.ddanger{color:var(--red)} -.ddiv{height:1px;background:var(--border);margin:12px 0} -.awards{display:flex;gap:4px;align-items:center;flex-wrap:wrap;padding:0 16px 10px} -.aw{font-size:24px;line-height:1} -.login-err{background:var(--red-bg);color:var(--red);border-radius:var(--rs);padding:10px 12px;font-size:13px;margin-bottom:12px} -.toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);background:#1a1a1a;color:#fff;padding:10px 16px;border-radius:8px;font-size:13px;z-index:300;white-space:nowrap;animation:fi .2s ease} -.hint{margin:0 16px 12px;background:var(--blue-bg);border:1px solid rgba(37,99,235,.15);border-radius:var(--rs);padding:10px 12px;font-size:12px;color:var(--blue);line-height:1.5;display:flex;justify-content:space-between;align-items:center;gap:8px} -.hclose{background:none;border:none;color:var(--blue);cursor:pointer;font-size:16px;padding:0 2px} -.btn-lnk{background:none;border:none;color:var(--text2);font-size:13px;cursor:pointer;padding:4px 8px;text-decoration:underline;text-underline-offset:2px} diff --git a/symfony.lock b/symfony.lock index 5295bca..572246c 100644 --- a/symfony.lock +++ b/symfony.lock @@ -35,6 +35,21 @@ "migrations/.gitignore" ] }, + "phpunit/phpunit": { + "version": "13.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "11.1", + "ref": "ca0bc067abfb40a8de1b2561b96cbfc2b833c314" + }, + "files": [ + ".env.test", + "phpunit.dist.xml", + "tests/bootstrap.php", + "bin/phpunit" + ] + }, "symfony/console": { "version": "8.0", "recipe": { diff --git a/tests/AppIntegrationTest.php b/tests/AppIntegrationTest.php new file mode 100644 index 0000000..a40131e --- /dev/null +++ b/tests/AppIntegrationTest.php @@ -0,0 +1,586 @@ +client = static::createClient(); + $this->em = static::getContainer()->get(EntityManagerInterface::class); + $this->cleanup(); + } + + protected function tearDown(): void + { + $this->cleanup(); + parent::tearDown(); + } + + private function cleanup(): void + { + $conn = $this->em->getConnection(); + $conn->executeStatement("DELETE FROM goals WHERE user_id IN (SELECT id FROM users WHERE email LIKE '%@test.dudi')"); + $conn->executeStatement("DELETE FROM invites WHERE created_by IN (SELECT id FROM users WHERE email LIKE '%@test.dudi')"); + $conn->executeStatement("DELETE FROM users_resets WHERE user IN (SELECT id FROM users WHERE email LIKE '%@test.dudi')"); + $conn->executeStatement("DELETE FROM users WHERE email LIKE '%@test.dudi'"); + $this->em->clear(); + } + + private function createUser(string $suffix = 'main', string $password = 'test1234'): User + { + $hasher = static::getContainer()->get(UserPasswordHasherInterface::class); + $user = new User(); + $user->setEmail($suffix . '@test.dudi') + ->setUsername('Tester ' . $suffix) + ->setVerified(true); + $user->setPassword($hasher->hashPassword($user, $password)); + $this->em->persist($user); + $this->em->flush(); + return $user; + } + + private function authClient(User $user): KernelBrowser + { + $this->client->loginUser($user); + return $this->client; + } + + private function json(KernelBrowser $client, string $method, string $url, array $body = []): array + { + $client->request($method, $url, [], [], ['CONTENT_TYPE' => 'application/json'], $body ? json_encode($body) : null); + return json_decode($client->getResponse()->getContent(), true) ?? []; + } + + // ── Auth ───────────────────────────────────────────────────────────────── + + public function testLoginSuccess(): void + { + $this->createUser('login', 'geheim99'); + $data = $this->json($this->client, 'POST', '/api/login', ['email' => 'login@test.dudi', 'password' => 'geheim99']); + + $this->assertTrue($data['ok']); + $this->assertSame('login@test.dudi', $data['email']); + $this->assertSame('Tester login', $data['name']); + } + + public function testLoginWrongPassword(): void + { + $this->createUser('login2'); + $data = $this->json($this->client, 'POST', '/api/login', ['email' => 'login2@test.dudi', 'password' => 'falsch']); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(401, $this->client->getResponse()->getStatusCode()); + } + + public function testLoginUnknownEmail(): void + { + $data = $this->json($this->client, 'POST', '/api/login', ['email' => 'nobody@test.dudi', 'password' => 'test1234']); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(401, $this->client->getResponse()->getStatusCode()); + } + + public function testMe(): void + { + $user = $this->createUser('me'); + $client = $this->authClient($user); + $data = $this->json($client, 'GET', '/api/me'); + + $this->assertTrue($data['ok']); + $this->assertSame('me@test.dudi', $data['email']); + $this->assertSame('Tester me', $data['name']); + $this->assertIsInt($data['id']); + } + + public function testMeUnauthenticated(): void + { + $this->json($this->client, 'GET', '/api/me'); + $this->assertSame(401, $this->client->getResponse()->getStatusCode()); + } + + public function testUpdateName(): void + { + $user = $this->createUser('name'); + $client = $this->authClient($user); + $data = $this->json($client, 'PATCH', '/api/me', ['name' => 'Neuer Name']); + + $this->assertTrue($data['ok']); + $this->assertSame('Neuer Name', $data['name']); + + $this->em->refresh($user); + $this->assertSame('Neuer Name', $user->getUsername()); + } + + public function testUpdateNameEmpty(): void + { + $user = $this->createUser('nameempty'); + $client = $this->authClient($user); + $data = $this->json($client, 'PATCH', '/api/me', ['name' => '']); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(400, $this->client->getResponse()->getStatusCode()); + } + + public function testChangePassword(): void + { + $user = $this->createUser('pw', 'altesPasswort1'); + $client = $this->authClient($user); + $data = $this->json($client, 'POST', '/api/change-password', [ + 'old_password' => 'altesPasswort1', + 'new_password' => 'neuesPasswort1', + ]); + + $this->assertTrue($data['ok']); + + // verify new password works + $hasher = static::getContainer()->get(UserPasswordHasherInterface::class); + $this->em->refresh($user); + $this->assertTrue($hasher->isPasswordValid($user, 'neuesPasswort1')); + } + + public function testChangePasswordWrongOld(): void + { + $user = $this->createUser('pwwrong'); + $client = $this->authClient($user); + $data = $this->json($client, 'POST', '/api/change-password', [ + 'old_password' => 'falsch1234', + 'new_password' => 'neuesPasswort1', + ]); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(401, $this->client->getResponse()->getStatusCode()); + } + + public function testChangePasswordTooShort(): void + { + $user = $this->createUser('pwshort'); + $client = $this->authClient($user); + $data = $this->json($client, 'POST', '/api/change-password', [ + 'old_password' => 'test1234', + 'new_password' => 'kurz', + ]); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(400, $this->client->getResponse()->getStatusCode()); + } + + // ── Password reset ──────────────────────────────────────────────────────── + + public function testResetRequestAlwaysReturnsOk(): void + { + // unknown email — still returns ok (don't leak existence) + $data = $this->json($this->client, 'POST', '/api/reset-request', ['email' => 'ghost@test.dudi']); + $this->assertTrue($data['ok']); + } + + public function testResetRequestWritesToken(): void + { + $user = $this->createUser('reset'); + $this->json($this->client, 'POST', '/api/reset-request', ['email' => 'reset@test.dudi']); + + $row = $this->em->getConnection()->fetchAssociative( + 'SELECT * FROM users_resets WHERE user = ?', + [$user->getId()] + ); + $this->assertNotFalse($row); + $this->assertGreaterThan(time(), $row['expires']); + } + + public function testResetPassword(): void + { + $user = $this->createUser('resetpw'); + + $selector = bin2hex(random_bytes(12)); + $token = bin2hex(random_bytes(32)); + $hash = password_hash($token, PASSWORD_BCRYPT); + $this->em->getConnection()->executeStatement( + 'INSERT INTO users_resets (user, selector, token, expires) VALUES (?, ?, ?, ?)', + [$user->getId(), $selector, $hash, time() + 3600] + ); + + $data = $this->json($this->client, 'POST', '/api/reset-password', [ + 'selector' => $selector, + 'token' => $token, + 'password' => 'neuesPasswort99', + ]); + + $this->assertTrue($data['ok']); + + $hasher = static::getContainer()->get(UserPasswordHasherInterface::class); + $this->em->refresh($user); + $this->assertTrue($hasher->isPasswordValid($user, 'neuesPasswort99')); + + // token must be deleted after use + $row = $this->em->getConnection()->fetchAssociative( + 'SELECT * FROM users_resets WHERE selector = ?', [$selector] + ); + $this->assertFalse($row); + } + + public function testResetPasswordExpiredToken(): void + { + $user = $this->createUser('resetexp'); + $selector = bin2hex(random_bytes(12)); + $token = bin2hex(random_bytes(32)); + $this->em->getConnection()->executeStatement( + 'INSERT INTO users_resets (user, selector, token, expires) VALUES (?, ?, ?, ?)', + [$user->getId(), $selector, password_hash($token, PASSWORD_BCRYPT), time() - 1] + ); + + $data = $this->json($this->client, 'POST', '/api/reset-password', [ + 'selector' => $selector, + 'token' => $token, + 'password' => 'neuesPasswort99', + ]); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(400, $this->client->getResponse()->getStatusCode()); + } + + // ── Goals ───────────────────────────────────────────────────────────────── + + public function testGoalListEmpty(): void + { + $user = $this->createUser('goallist'); + $client = $this->authClient($user); + $data = $this->json($client, 'GET', '/api/goals'); + + $this->assertSame([], $data); + } + + public function testGoalCreate(): void + { + $user = $this->createUser('goalcreate'); + $client = $this->authClient($user); + $data = $this->json($client, 'POST', '/api/goals', [ + 'name' => 'Liegestütz', + 'unit' => 'Stück', + 'daily' => 50, + 'days' => 30, + ]); + + $this->assertSame('Liegestütz', $data['name']); + $this->assertSame('Stück', $data['unit']); + $this->assertEquals(50.0, $data['daily']); + $this->assertSame(30, $data['days']); + $this->assertSame([], $data['sets']); + $this->assertIsString($data['id']); + } + + public function testGoalCreateMissingName(): void + { + $user = $this->createUser('goalnoname'); + $client = $this->authClient($user); + $data = $this->json($client, 'POST', '/api/goals', ['unit' => 'Stück', 'daily' => 10, 'days' => 7]); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(400, $this->client->getResponse()->getStatusCode()); + } + + public function testGoalDefaultUnit(): void + { + $user = $this->createUser('goalunit'); + $client = $this->authClient($user); + $data = $this->json($client, 'POST', '/api/goals', ['name' => 'Plank', 'daily' => 1, 'days' => 7]); + + $this->assertSame('Stück', $data['unit']); + } + + public function testGoalListReturnsOwned(): void + { + $user = $this->createUser('goalowned'); + $other = $this->createUser('goalother'); + + foreach ([$user, $other] as $u) { + $goal = new Goal(); + $goal->setUserId($u->getId())->setName('Ziel')->setUnit('Stück')->setDaily(1)->setDays(7)->setStart(new \DateTime())->setSets([]); + $this->em->persist($goal); + } + $this->em->flush(); + + $client = $this->authClient($user); + $data = $this->json($client, 'GET', '/api/goals'); + + $this->assertCount(1, $data); + $this->assertSame('Ziel', $data[0]['name']); + } + + public function testGoalUpdate(): void + { + $user = $this->createUser('goalupdate'); + $goal = new Goal(); + $goal->setUserId($user->getId())->setName('Alt')->setUnit('Stück')->setDaily(10)->setDays(7)->setStart(new \DateTime())->setSets([]); + $this->em->persist($goal); + $this->em->flush(); + + $client = $this->authClient($user); + $data = $this->json($client, 'PATCH', '/api/goals/' . $goal->getId(), [ + 'name' => 'Neu', + 'unit' => 'Min', + 'daily' => 20, + ]); + + $this->assertTrue($data['ok']); + $this->em->refresh($goal); + $this->assertSame('Neu', $goal->getName()); + $this->assertSame('Min', $goal->getUnit()); + $this->assertSame(20.0, $goal->getDaily()); + } + + public function testGoalUpdateSets(): void + { + $user = $this->createUser('goalsets'); + $goal = new Goal(); + $goal->setUserId($user->getId())->setName('Test')->setUnit('Stück')->setDaily(50)->setDays(7)->setStart(new \DateTime())->setSets([]); + $this->em->persist($goal); + $this->em->flush(); + + $today = date('Y-m-d'); + $client = $this->authClient($user); + $data = $this->json($client, 'PATCH', '/api/goals/' . $goal->getId(), [ + 'sets' => [$today => [20, 30]], + ]); + + $this->assertTrue($data['ok']); + $this->em->refresh($goal); + $this->assertSame([20, 30], $goal->getSets()[$today]); + } + + public function testGoalUpdateNotFound(): void + { + $user = $this->createUser('goalnotfound'); + $client = $this->authClient($user); + $data = $this->json($client, 'PATCH', '/api/goals/999999', ['name' => 'X']); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(404, $client->getResponse()->getStatusCode()); + } + + public function testGoalUpdateOwnership(): void + { + $owner = $this->createUser('goalown1'); + $other = $this->createUser('goalown2'); + + $goal = new Goal(); + $goal->setUserId($owner->getId())->setName('Privat')->setUnit('Stück')->setDaily(1)->setDays(7)->setStart(new \DateTime())->setSets([]); + $this->em->persist($goal); + $this->em->flush(); + + $client = $this->authClient($other); + $data = $this->json($client, 'PATCH', '/api/goals/' . $goal->getId(), ['name' => 'Gehackt']); + + $this->assertSame(404, $client->getResponse()->getStatusCode()); + $this->em->refresh($goal); + $this->assertSame('Privat', $goal->getName()); + } + + public function testGoalDelete(): void + { + $user = $this->createUser('goaldel'); + $goal = new Goal(); + $goal->setUserId($user->getId())->setName('Weg')->setUnit('Stück')->setDaily(1)->setDays(7)->setStart(new \DateTime())->setSets([]); + $this->em->persist($goal); + $this->em->flush(); + $id = $goal->getId(); + + $client = $this->authClient($user); + $data = $this->json($client, 'DELETE', '/api/goals/' . $id); + + $this->assertTrue($data['ok']); + $this->assertNull($this->em->find(Goal::class, $id)); + } + + public function testGoalDeleteOwnership(): void + { + $owner = $this->createUser('goaldel1'); + $other = $this->createUser('goaldel2'); + + $goal = new Goal(); + $goal->setUserId($owner->getId())->setName('Privat')->setUnit('Stück')->setDaily(1)->setDays(7)->setStart(new \DateTime())->setSets([]); + $this->em->persist($goal); + $this->em->flush(); + $id = $goal->getId(); + + $client = $this->authClient($other); + $this->json($client, 'DELETE', '/api/goals/' . $id); + + $this->assertNotNull($this->em->find(Goal::class, $id)); + } + + public function testGoalUnauthenticated(): void + { + $this->json($this->client, 'GET', '/api/goals'); + $this->assertSame(401, $this->client->getResponse()->getStatusCode()); + } + + // ── Invites ─────────────────────────────────────────────────────────────── + + public function testInviteCreate(): void + { + $user = $this->createUser('invcreate'); + $client = $this->authClient($user); + $data = $this->json($client, 'POST', '/api/invite', ['note' => 'Für Max']); + + $this->assertStringContainsString('invite=', $data['url']); + } + + public function testInviteList(): void + { + $user = $this->createUser('invlist'); + + $invite = new Invite(); + $invite->setToken(bin2hex(random_bytes(32))) + ->setNote('Testeinladung') + ->setCreatedBy($user->getId()) + ->setExpiresAt(new \DateTimeImmutable('+7 days')); + $this->em->persist($invite); + $this->em->flush(); + + $client = $this->authClient($user); + $data = $this->json($client, 'GET', '/api/invites'); + + $this->assertCount(1, $data); + $this->assertSame('pending', $data[0]['status']); + $this->assertSame('Testeinladung', $data[0]['note']); + $this->assertStringContainsString('invite=', $data[0]['url']); + } + + public function testInviteListExpired(): void + { + $user = $this->createUser('invexp'); + + $invite = new Invite(); + $invite->setToken(bin2hex(random_bytes(32))) + ->setCreatedBy($user->getId()) + ->setExpiresAt(new \DateTimeImmutable('-1 day')); + $this->em->persist($invite); + $this->em->flush(); + + $client = $this->authClient($user); + $data = $this->json($client, 'GET', '/api/invites'); + + $this->assertSame('expired', $data[0]['status']); + $this->assertNull($data[0]['url']); + } + + public function testInviteListUsed(): void + { + $user = $this->createUser('invused1'); + $newUser = $this->createUser('invused2'); + + $invite = new Invite(); + $invite->setToken(bin2hex(random_bytes(32))) + ->setCreatedBy($user->getId()) + ->setExpiresAt(new \DateTimeImmutable('+7 days')) + ->setUsedBy($newUser->getId()) + ->setUsedAt(new \DateTimeImmutable()); + $this->em->persist($invite); + $this->em->flush(); + + $client = $this->authClient($user); + $data = $this->json($client, 'GET', '/api/invites'); + + $this->assertSame('used', $data[0]['status']); + $this->assertSame('invused2@test.dudi', $data[0]['used_by_email']); + $this->assertNull($data[0]['url']); + } + + // ── Register ────────────────────────────────────────────────────────────── + + public function testRegisterWithInvite(): void + { + $creator = $this->createUser('reginviter'); + + $invite = new Invite(); + $invite->setToken(bin2hex(random_bytes(32))) + ->setCreatedBy($creator->getId()) + ->setExpiresAt(new \DateTimeImmutable('+7 days')); + $this->em->persist($invite); + $this->em->flush(); + + $data = $this->json($this->client, 'POST', '/api/register', [ + 'email' => 'regnew@test.dudi', + 'password' => 'passwort99', + 'name' => 'Neuer User', + 'token' => $invite->getToken(), + ]); + + $this->assertTrue($data['ok']); + $this->assertSame('regnew@test.dudi', $data['email']); + + $newUser = static::getContainer()->get(\App\Repository\UserRepository::class)->findOneBy(['email' => 'regnew@test.dudi']); + $this->assertNotNull($newUser); + $this->assertTrue($newUser->isVerified()); + + $this->em->refresh($invite); + $this->assertSame($newUser->getId(), $invite->getUsedBy()); + $this->assertNotNull($invite->getUsedAt()); + } + + public function testRegisterInvalidToken(): void + { + $data = $this->json($this->client, 'POST', '/api/register', [ + 'email' => 'regbad@test.dudi', + 'password' => 'passwort99', + 'token' => 'ungueltig', + ]); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(400, $this->client->getResponse()->getStatusCode()); + } + + public function testRegisterDuplicateEmail(): void + { + $existing = $this->createUser('regdup'); + + $creator = $this->createUser('regdupinviter'); + $invite = new Invite(); + $invite->setToken(bin2hex(random_bytes(32))) + ->setCreatedBy($creator->getId()) + ->setExpiresAt(new \DateTimeImmutable('+7 days')); + $this->em->persist($invite); + $this->em->flush(); + + $data = $this->json($this->client, 'POST', '/api/register', [ + 'email' => 'regdup@test.dudi', + 'password' => 'passwort99', + 'token' => $invite->getToken(), + ]); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(409, $this->client->getResponse()->getStatusCode()); + } + + public function testRegisterPasswordTooShort(): void + { + $creator = $this->createUser('regshortinviter'); + $invite = new Invite(); + $invite->setToken(bin2hex(random_bytes(32))) + ->setCreatedBy($creator->getId()) + ->setExpiresAt(new \DateTimeImmutable('+7 days')); + $this->em->persist($invite); + $this->em->flush(); + + $data = $this->json($this->client, 'POST', '/api/register', [ + 'email' => 'regshort@test.dudi', + 'password' => 'kurz', + 'token' => $invite->getToken(), + ]); + + $this->assertArrayHasKey('error', $data); + $this->assertSame(400, $this->client->getResponse()->getStatusCode()); + } +} diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..47a5855 --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,13 @@ +bootEnv(dirname(__DIR__).'/.env'); +} + +if ($_SERVER['APP_DEBUG']) { + umask(0000); +}