Tweak test script no issue #
[arvados.git] / src / test / java / org / arvados / client / logic / collection / ManifestDecoderTest.java
1 /*
2  * Copyright (C) The Arvados Authors. All rights reserved.
3  *
4  * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0
5  *
6  */
7
8 package org.arvados.client.logic.collection;
9
10 import org.arvados.client.exception.ArvadosClientException;
11 import org.junit.Assert;
12 import org.junit.Test;
13
14 import java.util.List;
15
16 import static junit.framework.TestCase.fail;
17
18 public class ManifestDecoderTest {
19
20     private ManifestDecoder manifestDecoder = new ManifestDecoder();
21
22     private static final String ONE_LINE_MANIFEST_TEXT = ". " +
23             "eff999f3b5158331eb44a9a93e3b36e1+67108864+Aad3839bea88bce22cbfe71cf4943de7dab3ea52a@5826180f " +
24             "db141bfd11f7da60dce9e5ee85a988b8+34038725+Ae8f48913fed782cbe463e0499ab37697ee06a2f8@5826180f " +
25             "0:101147589:rna.SRR948778.bam" +
26             "\\n";
27
28     private static final String MULTIPLE_LINES_MANIFEST_TEXT  = ". " +
29             "930625b054ce894ac40596c3f5a0d947+33 " +
30             "0:0:a 0:0:b 0:33:output.txt\n" +
31             "./c d41d8cd98f00b204e9800998ecf8427e+0 0:0:d";
32
33     private static final String MANIFEST_TEXT_WITH_INVALID_FIRST_PATH_COMPONENT = "a" + ONE_LINE_MANIFEST_TEXT;
34
35
36     @Test
37     public void allLocatorsAndFileTokensAreExtractedFromSimpleManifest() {
38
39         List<ManifestStream> actual = manifestDecoder.decode(ONE_LINE_MANIFEST_TEXT);
40
41         // one manifest stream
42         Assert.assertEquals(1, actual.size());
43
44         ManifestStream manifest = actual.get(0);
45         // two locators
46         Assert.assertEquals(2, manifest.getKeepLocators().size());
47         // one file token
48         Assert.assertEquals(1, manifest.getFileTokens().size());
49
50     }
51
52     @Test
53     public void allLocatorsAndFileTokensAreExtractedFromComplexManifest() {
54
55         List<ManifestStream> actual = manifestDecoder.decode(MULTIPLE_LINES_MANIFEST_TEXT);
56
57         // two manifest streams
58         Assert.assertEquals(2, actual.size());
59
60         // first stream - 1 locator and 3 file tokens
61         ManifestStream firstManifestStream = actual.get(0);
62         Assert.assertEquals(1, firstManifestStream.getKeepLocators().size());
63         Assert.assertEquals(3, firstManifestStream.getFileTokens().size());
64
65         // second stream - 1 locator and 1 file token
66         ManifestStream secondManifestStream = actual.get(1);
67         Assert.assertEquals(1, secondManifestStream.getKeepLocators().size());
68         Assert.assertEquals(1, secondManifestStream.getFileTokens().size());
69     }
70
71     @Test
72     public void manifestTextWithInvalidStreamNameThrowsException() {
73
74         try {
75             List<ManifestStream> actual = manifestDecoder.decode(MANIFEST_TEXT_WITH_INVALID_FIRST_PATH_COMPONENT);
76             fail();
77         } catch (ArvadosClientException e) {
78             Assert.assertEquals("Invalid first path component (expecting \".\")", e.getMessage());
79         }
80
81     }
82
83     @Test
84     public void emptyManifestTextThrowsException() {
85         String emptyManifestText = null;
86
87         try {
88             List<ManifestStream> actual = manifestDecoder.decode(emptyManifestText);
89             fail();
90         } catch (ArvadosClientException e) {
91             Assert.assertEquals("Manifest text cannot be empty.", e.getMessage());
92         }
93
94         emptyManifestText = "";
95         try {
96             List<ManifestStream> actual = manifestDecoder.decode(emptyManifestText);
97             fail();
98         } catch (ArvadosClientException e) {
99             Assert.assertEquals("Manifest text cannot be empty.", e.getMessage());
100         }
101
102     }
103
104
105
106
107
108 }