From: Felix Dörre Date: Tue, 28 Jun 2016 13:55:27 +0000 (+0200) Subject: add: fill the new columns and test the adjusted api-call X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=60ebf68ed0f78b0353903ff7845c4c611a82e62d add: fill the new columns and test the adjusted api-call fixes #52 Change-Id: Id05d2ec156f4fb09d11da91eb83967b0b143808f --- diff --git a/src/org/cacert/gigi/api/CATSImport.java b/src/org/cacert/gigi/api/CATSImport.java index c5745d68..49960cd4 100644 --- a/src/org/cacert/gigi/api/CATSImport.java +++ b/src/org/cacert/gigi/api/CATSImport.java @@ -33,6 +33,12 @@ public class CATSImport extends APIPoint { resp.sendError(500, "Error, requires mid, variant and date"); return; } + String language = req.getParameter("language"); + String version = req.getParameter("version"); + if (language == null || version == null) { + resp.sendError(500, "Error, requires also language and version"); + return; + } int id; try { id = Integer.parseInt(target); @@ -48,6 +54,6 @@ public class CATSImport extends APIPoint { System.out.println("CATS: " + target + ": " + testType); User targetUser = (User) o; System.out.println(targetUser.getId()); - CATS.enterResult(targetUser, testType, new Date(Long.parseLong(date))); + CATS.enterResult(targetUser, testType, new Date(Long.parseLong(date)), language, version); } } diff --git a/src/org/cacert/gigi/dbObjects/CATS.java b/src/org/cacert/gigi/dbObjects/CATS.java index 18d5f792..700d76ee 100644 --- a/src/org/cacert/gigi/dbObjects/CATS.java +++ b/src/org/cacert/gigi/dbObjects/CATS.java @@ -42,11 +42,13 @@ public class CATS { return i; } - public static void enterResult(User user, String testType, Date passDate) { - try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `cats_passed` SET `user_id`=?, `variant_id`=?, `pass_date`=?")) { + public static void enterResult(User user, String testType, Date passDate, String language, String version) { + try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `cats_passed` SET `user_id`=?, `variant_id`=?, `pass_date`=?, `language`=?, `version`=?")) { ps.setInt(1, user.getId()); ps.setInt(2, getID(testType)); ps.setTimestamp(3, new Timestamp(passDate.getTime())); + ps.setString(4, language); + ps.setString(5, version); ps.execute(); } } diff --git a/tests/org/cacert/gigi/api/ImportCATSResult.java b/tests/org/cacert/gigi/api/ImportCATSResult.java index ae2a588f..4a90500d 100644 --- a/tests/org/cacert/gigi/api/ImportCATSResult.java +++ b/tests/org/cacert/gigi/api/ImportCATSResult.java @@ -79,15 +79,35 @@ public class ImportCATSResult extends ClientTest { } + @Test + public void testImportCATSFailures() throws GigiApiException, IOException, GeneralSecurityException, InterruptedException { + assertEquals(1, u.getTrainings().length); + assertNotEquals(200, executeImportQuery("").getResponseCode()); + assertNotEquals(200, executeImportQuery("mid=" + u.getId()).getResponseCode()); + assertNotEquals(200, executeImportQuery("mid=" + u.getId() + "&variant=Test+Training").getResponseCode()); + assertNotEquals(200, executeImportQuery("mid=" + u.getId() + "&variant=Test+Training&date=" + System.currentTimeMillis()).getResponseCode()); + assertNotEquals(200, executeImportQuery("mid=" + u.getId() + "&variant=Test+Training&date=" + System.currentTimeMillis() + "&language=en").getResponseCode()); + assertNotEquals(200, executeImportQuery("mid=" + u.getId() + "&variant=Test+Training&date=" + System.currentTimeMillis() + "&version=1.0").getResponseCode()); + assertEquals(1, u.getTrainings().length); + apiImport(u, "Test Training"); + assertEquals(2, u.getTrainings().length); + + } + private void apiImport(User target, String test) throws IOException, MalformedURLException, NoSuchAlgorithmException, KeyManagementException, UnsupportedEncodingException, GeneralSecurityException { + HttpURLConnection connection = executeImportQuery("mid=" + target.getId() + "&variant=" + URLEncoder.encode(test, "UTF-8") + "&date=" + System.currentTimeMillis() + "&language=en&version=1.0"); + if (connection.getResponseCode() != 200) { + throw new Error(connection.getResponseMessage()); + } + } + + private HttpURLConnection executeImportQuery(String query) throws IOException, MalformedURLException, NoSuchAlgorithmException, KeyManagementException, UnsupportedEncodingException, Error { HttpURLConnection connection = (HttpURLConnection) new URL("https://" + getServerName().replaceFirst("^www.", "api.") + CATSImport.PATH).openConnection(); authenticateClientCert(pk, ce, connection); connection.setDoOutput(true); OutputStream os = connection.getOutputStream(); - os.write(("mid=" + target.getId() + "&variant=" + URLEncoder.encode(test, "UTF-8") + "&date=" + System.currentTimeMillis()).getBytes("UTF-8")); - if (connection.getResponseCode() != 200) { - throw new Error(connection.getResponseMessage()); - } + os.write(query.getBytes("UTF-8")); + return connection; } private String apiLookup(Certificate target) throws IOException, MalformedURLException, NoSuchAlgorithmException, KeyManagementException, UnsupportedEncodingException, GeneralSecurityException {