Skip to content
This repository was archived by the owner on Aug 29, 2024. It is now read-only.

Commit a309604

Browse files
committed
Add serialization and unserialization tests; unserialize does not unserialize to the right type yet
1 parent c53f90e commit a309604

File tree

6 files changed

+94
-21
lines changed

6 files changed

+94
-21
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ repositories {
1414

1515
dependencies {
1616
implementation 'net.jimblackler.jsonschemafriend:core:0.11.2'
17+
implementation 'com.fasterxml.jackson.core:jackson-databind:2.0.1'
1718
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
1819
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
1920
}

src/main/java/org/idmef/Message.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package org.idmef;
22

3+
import com.fasterxml.jackson.core.type.TypeReference;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
35
import net.jimblackler.jsonschemafriend.*;
46

7+
import java.io.IOException;
58
import java.net.URL;
9+
import java.util.Map;
610

711
/**
812
* IDMEF Message implementation.
@@ -58,19 +62,23 @@ public void validate() throws IDMEFException {
5862
* @return the JSON bytes
5963
* @throws IDMEFException if the Message is not valid
6064
*/
61-
public byte[] serialize() throws IDMEFException {
65+
public byte[] serialize() throws IDMEFException, IOException {
6266
validate();
6367

64-
return null;
68+
ObjectMapper objectMapper = new ObjectMapper();
69+
70+
return objectMapper.writeValueAsBytes(this);
6571
}
6672

6773
/**
6874
* Deserialize JSON bytes to a Message
6975
*
70-
* @param b the JSON bytes
76+
* @param json the JSON bytes
7177
* @return a Message object with content filled from JSON
7278
*/
73-
public static Message unserialize(byte[] b) {
74-
return null;
79+
public static Map<String, Object> unserialize(byte[] json) throws IOException {
80+
ObjectMapper objectMapper = new ObjectMapper();
81+
82+
return objectMapper.readValue(json, new TypeReference<Map<String,Object>>(){});
7583
}
7684
}

src/test/java/TestSerialize.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import org.idmef.Message;
2+
import org.junit.jupiter.api.Test;
3+
4+
import static org.junit.jupiter.api.Assertions.fail;
5+
6+
public class TestSerialize {
7+
8+
@Test
9+
void testSerializeMessage1() {
10+
Message m = Util.message1();
11+
12+
try {
13+
byte[] b = m.serialize();
14+
} catch (Exception e) {
15+
fail(e.getMessage());
16+
}
17+
}
18+
}

src/test/java/TestUnserialize.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import org.idmef.Message;
2+
import org.junit.jupiter.api.Test;
3+
4+
import java.util.Map;
5+
6+
import static org.junit.jupiter.api.Assertions.fail;
7+
8+
public class TestUnserialize {
9+
10+
@Test
11+
void testUnserializeMessage1() {
12+
String s = Util.string1();
13+
14+
try {
15+
Map<String, Object> m = Message.unserialize(s.getBytes());
16+
} catch (Exception e) {
17+
fail(e.getMessage());
18+
}
19+
}
20+
}

src/test/java/TestValidate.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import org.idmef.Analyzer;
2-
import org.idmef.IDMEFException;
31
import org.idmef.Message;
42
import org.junit.jupiter.api.Test;
53

@@ -9,23 +7,13 @@ public class TestValidate {
97

108
@Test
119
void testValidateMessage1() {
12-
Message msg = new Message();
13-
msg.put("Version", "2.0.3");
14-
msg.put("ID", "afe884a3-d658-4a15-bd08-34abba526aca");
15-
msg.put("CreateTime", "2021-10-28T11:32:19.359177");
16-
Analyzer analyzer = new Analyzer();
17-
analyzer.put("IP", "127.0.0.1");
18-
analyzer.put("Name", "foobar");
19-
analyzer.put("Model", "generic");
20-
analyzer.put("Category", new String[]{"LOG"});
21-
analyzer.put("Data", new String[]{"Log"});
22-
analyzer.put("Method", new String[]{"Monitor"});
23-
msg.put("Analyzer", analyzer);
10+
Message m = Util.message1();
2411

2512
try {
26-
msg.validate();
27-
} catch (IDMEFException e) {
13+
m.validate();
14+
} catch (Exception e) {
2815
fail(e.getMessage());
2916
}
3017
}
18+
3119
}

src/test/java/Util.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import org.idmef.Analyzer;
2+
import org.idmef.Message;
3+
4+
public class Util {
5+
6+
static Message message1() {
7+
Message msg = new Message();
8+
msg.put("Version", "2.0.3");
9+
msg.put("ID", "afe884a3-d658-4a15-bd08-34abba526aca");
10+
msg.put("CreateTime", "2021-10-28T11:32:19.359177");
11+
Analyzer analyzer = new Analyzer();
12+
analyzer.put("IP", "127.0.0.1");
13+
analyzer.put("Name", "foobar");
14+
analyzer.put("Model", "generic");
15+
analyzer.put("Category", new String[]{"LOG"});
16+
analyzer.put("Data", new String[]{"Log"});
17+
analyzer.put("Method", new String[]{"Monitor"});
18+
msg.put("Analyzer", analyzer);
19+
20+
return msg;
21+
}
22+
23+
static String string1() {
24+
return "{\n" +
25+
"\"Version\":\"2.0.3\",\n" +
26+
"\"CreateTime\":\"2021-10-28T11:32:19.359177\",\n" +
27+
"\"ID\":\"afe884a3-d658-4a15-bd08-34abba526aca\",\n" +
28+
"\"Analyzer\":{\n" +
29+
"\"Category\":[\"LOG\"],\n" +
30+
"\"IP\":\"127.0.0.1\",\n" +
31+
"\"Model\":\"generic\",\n" +
32+
"\"Data\":[\"Log\"],\n" +
33+
"\"Method\":[\"Monitor\"],\n" +
34+
"\"Name\":\"foobar\"\n" +
35+
"}\n" +
36+
"}\n";
37+
}
38+
}

0 commit comments

Comments
 (0)