3 Commits

Author SHA1 Message Date
ksan 0aa633a483 added update check
CI/CD / Backend Unit Tests (push) Successful in 2m29s
CI/CD / Deploy (push) Successful in 2m16s
2026-06-11 14:22:08 +02:00
ksan 8404bcafd0 removed test that was not needed
CI/CD / Backend Unit Tests (push) Successful in 2m14s
CI/CD / Deploy (push) Successful in 2m10s
2026-06-11 14:01:16 +02:00
ksan e3529f892c final touches
CI/CD / Deploy (push) Has been cancelled
CI/CD / Backend Unit Tests (push) Has been cancelled
2026-06-11 13:54:10 +02:00
5 changed files with 33 additions and 19 deletions
+1
View File
@@ -91,3 +91,4 @@ frontend/expo-env.d.ts
CLAUDE.md
ksan.dev.keystore
@@ -2,7 +2,6 @@ package dev.ksan.etfoglasiserver.config;
import dev.ksan.etfoglasiserver.service.JWTService;
import dev.ksan.etfoglasiserver.service.MyUserDetailsService;
import dev.ksan.etfoglasiserver.service.UserService;
import io.jsonwebtoken.JwtException;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
@@ -25,7 +25,7 @@ public class EntryController {
return service.getEntryById(entryId);
}
//ignore this for now
// TODO only for testing
@PostMapping("/entries")
public void addEntry(@RequestBody EntryDTO entry) {
service.addEntry(entry);
@@ -62,13 +62,14 @@ public class EntryController {
}
@PutMapping("/entries")
public void updateEntry(@RequestBody EntryDTO entry) {
service.updateEntry(entry);
}
// @PutMapping("/entries")
// public void updateEntry(@RequestBody EntryDTO entry) {
// service.updateEntry(entry);
// }
@DeleteMapping("/entries/{entryId}")
public void deleteEntry(@PathVariable String entryId) {
service.deleteEntry(entryId);
}
// @DeleteMapping("/entries/{entryId}")
// public void deleteEntry(@PathVariable String entryId) {
// service.deleteEntry(entryId);
// }
//
}
@@ -139,14 +139,15 @@ class EntryControllerTest {
}
@Test
@WithMockUser
void deleteEntry_authenticated_returns200() throws Exception {
doNothing().when(entryService).deleteEntry("entry-1");
mvc.perform(delete("/api/entries/entry-1"))
.andExpect(status().isOk());
}
//we removed this from controller so test is pointless
// @Test
// @WithMockUser
// void deleteEntry_authenticated_returns200() throws Exception {
// doNothing().when(entryService).deleteEntry("entry-1");
//
// mvc.perform(delete("/api/entries/entry-1"))
// .andExpect(status().isOk());
// }
@Test
void deleteEntry_unauthenticated_returns401or403() throws Exception {
+13 -1
View File
@@ -1,5 +1,5 @@
import "../globals.css";
import { useEffect } from 'react';
import { useEffect, useState } from 'react';
import { Stack } from 'expo-router';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import {
@@ -11,6 +11,8 @@ import {
} from '@react-native-firebase/messaging';
import { registerDeviceToken, listenForTokenRefresh, displayLocalNotification } from '@/services/notifications';
import { AuthProvider, useAuth } from "@/context/AuthContext";
import { useUpdatecheck } from '@/hooks/useUpdatecheck';
import { UpdatePrompt } from '@/components/UpdatePrompt';
import Toast from 'react-native-toast-message';
// Registered at module scope so it's installed as soon as this entry file
@@ -60,12 +62,22 @@ function NotificationSetup() {
return null;
}
function UpdateCheck() {
const { updateInfo } = useUpdatecheck();
const [dismissed, setDismissed] = useState(false);
if (!updateInfo || dismissed) return null;
return <UpdatePrompt updateInfo={updateInfo} onDismiss={() => setDismissed(true)} />;
}
export default function RootLayout() {
return (
<AuthProvider>
<SafeAreaProvider>
<NotificationSetup />
<Stack screenOptions={{ headerShown: false }} />
<UpdateCheck />
<Toast />
</SafeAreaProvider>
</AuthProvider>