aboutsummaryrefslogtreecommitdiff
path: root/jgvariant-ostree/src/test/java/eu/mulk/jgvariant/ostree/OstreeDecoderTest.java
blob: 05da7ede96918e1ac5ec73c3e812b1e95b732448 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package eu.mulk.jgvariant.ostree;

import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import com.adelean.inject.resources.junit.jupiter.GivenBinaryResource;
import com.adelean.inject.resources.junit.jupiter.TestWithResources;
import eu.mulk.jgvariant.core.Signature;
import eu.mulk.jgvariant.core.Variant;
import java.nio.ByteBuffer;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

@TestWithResources
class OstreeDecoderTest {

  @GivenBinaryResource("/ostree/summary")
  byte[] summaryBytes;

  @GivenBinaryResource(
      "/ostree/objects/3d/3b3329dca38871f29aeda1bf5854d76c707fa269759a899d0985c91815fe6f.commit")
  byte[] commitBytes;

  @GivenBinaryResource(
      "/ostree/objects/14/c9b958ac59df4979095a3485b4da5a045fe8737ffdba8cfbfff24988b238f7.dirtree")
  byte[] dirTreeBytes;

  @GivenBinaryResource(
      "/ostree/objects/48/cc6a2ecdab284b9d1e5b0e875c905866ff32f65ee1e857df0e691285d6f14c.dirmeta")
  byte[] dirMetaBytes;

  @GivenBinaryResource("/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/superblock")
  byte[] deltaSuperblockBytes;

  @GivenBinaryResource("/ostree/deltas/Mc/iDXVydLGaHpQCRyFFC0bLYU_9Bap+4G07jB1RRDVI/0")
  byte[] deltaPartPayloadBytes;

  @Test
  void testTrivial() {
    assertTrue(true);
  }

  @Test
  void testSummaryDecoder() {
    var decoder = Summary.decoder();
    var summary = decoder.decode(ByteBuffer.wrap(summaryBytes));
    assertAll(
        () ->
            assertEquals(
                List.of(
                    new Summary.Entry(
                        "mulkos/1.x/amd64",
                        new Summary.Entry.Value(
                            214,
                            Checksum.ofHex(
                                "66ff167ff35ce87daac817447a9490a262ee75f095f017716a6eb1a9d9eb3350"),
                            new Metadata(
                                Map.of(
                                    "ostree.commit.timestamp",
                                    new Variant(Signature.parse("t"), 1640537170L)))))),
                summary.entries()));
    // FIXME: check metadata field
    System.out.println(summary);
  }

  @Test
  void testCommitDecoder() {
    var decoder = Commit.decoder();
    var commit = decoder.decode(ByteBuffer.wrap(commitBytes));
    System.out.println(commit);
  }

  @Test
  void testDirTreeDecoder() {
    var decoder = DirTree.decoder();
    var dirTree = decoder.decode(ByteBuffer.wrap(dirTreeBytes));
    System.out.println(dirTree);
  }

  @Test
  void testDirMetaDecoder() {
    var decoder = DirMeta.decoder();
    var dirMeta = decoder.decode(ByteBuffer.wrap(dirMetaBytes));
    System.out.println(dirMeta);
  }

  @Test
  void testSuperblockDecoder() {
    var decoder = DeltaSuperblock.decoder();
    var deltaSuperblock = decoder.decode(ByteBuffer.wrap(deltaSuperblockBytes));
    System.out.println(deltaSuperblock);
  }

  @Disabled("invalid: compression byte not taken into account")
  @Test
  void testPartPayloadDecoder() {
    var decoder = DeltaPartPayload.decoder();
    var deltaPartPayload = decoder.decode(ByteBuffer.wrap(deltaPartPayloadBytes));
    System.out.println(deltaPartPayload);
  }
}