@Test public void setLineHashes_sets_lineCount_to_size_of_list_and_rawLineHashes_to_join_by_line_return() { FileSourceDto underTest = new FileSourceDto(); int expected = 1 + new Random().nextInt(96); List<String> lineHashes = IntStream.range(0, expected).mapToObj(String::valueOf).collect(Collectors.toList()); underTest.setLineHashes(lineHashes); assertThat(underTest.getLineCount()).isEqualTo(expected); assertThat(underTest.getRawLineHashes()).isEqualTo(Joiner.on('\n').join(lineHashes)); } }
@Test public void setLineHashes_empty_sets_lineCount_to_1_and_rawLineHashes_to_null() { FileSourceDto underTest = new FileSourceDto(); underTest.setLineHashes(Collections.emptyList()); assertThat(underTest.getLineCount()).isEqualTo(1); assertThat(underTest.getLineHashes()).isEmpty(); assertThat(underTest.getRawLineHashes()).isNull(); }
@Test public void new_FileSourceDto_as_lineCount_0_and_rawLineHashes_to_null() { FileSourceDto underTest = new FileSourceDto(); assertThat(underTest.getLineCount()).isZero(); assertThat(underTest.getLineHashes()).isEmpty(); assertThat(underTest.getRawLineHashes()).isNull(); }
@Test public void setLineHashes_null_sets_lineCount_to_0_and_rawLineHashes_to_null() { FileSourceDto underTest = new FileSourceDto(); underTest.setLineHashes(null); assertThat(underTest.getLineCount()).isZero(); assertThat(underTest.getLineHashes()).isEmpty(); assertThat(underTest.getRawLineHashes()).isNull(); }
@Test public void getSourceData_reads_Data_object_bigger_than_default_size_limit() { DbFileSources.Data build = createOver64MBDataStructure(); byte[] bytes = FileSourceDto.encodeSourceData(build); DbFileSources.Data data = new FileSourceDto().decodeSourceData(bytes); assertThat(data.getLinesCount()).isEqualTo(build.getLinesCount()); }
private static FileSourceDto newFileSourceDto(ComponentDto file) { return new FileSourceDto() .setFileUuid(file.uuid()) .setProjectUuid(file.projectUuid()) .setDataHash("0263047cd758c68c27683625f072f010") .setLineHashes(of("8d7b3d6b83c0a517eac07e1aac94b773")) .setCreatedAt(System.currentTimeMillis()) .setUpdatedAt(System.currentTimeMillis()) .setRevision("123456789") .setSrcHash("123456"); } }
@Test public void selectSourceByFileUuid_reads_source_without_line_hashes() { FileSourceDto fileSourceDto = new FileSourceDto() .setProjectUuid("Foo") .setFileUuid("Bar") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L); underTest.insert(dbSession, fileSourceDto); dbSession.commit(); FileSourceDto res = underTest.selectByFileUuid(dbSession, fileSourceDto.getFileUuid()); assertThat(res.getLineCount()).isEqualTo(0); assertThat(res.getLineHashes()).isEmpty(); }
@Test public void selectLineHashes_does_not_fail_when_lineshashes_is_null() { dbTester.prepareDbUnit(getClass(), "shared.xml"); underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setRevision("123456789")); dbSession.commit(); assertThat(underTest.selectLineHashes(dbSession, "FILE2_UUID")).isEmpty(); }
@Test public void selectLineHashesVersion_returns_without_significant_code_by_default() { underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setLineHashes(singletonList("hashes")) .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setRevision("123456789")); dbSession.commit(); assertThat(underTest.selectLineHashesVersion(dbSession, "FILE2_UUID")).isEqualTo(LineHashVersion.WITHOUT_SIGNIFICANT_CODE); }
@Test public void selectLineHashesVersion_succeeds() { underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setLineHashes(singletonList("hashes")) .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setLineHashesVersion(1) .setRevision("123456789")); dbSession.commit(); assertThat(underTest.selectLineHashesVersion(dbSession, "FILE2_UUID")).isEqualTo(LineHashVersion.WITH_SIGNIFICANT_CODE); }
@Test public void insert_does_not_fail_on_FileSourceDto_with_only_non_nullable_data() { FileSourceDto fileSourceDto = new FileSourceDto() .setProjectUuid("Foo") .setFileUuid("Bar") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L); underTest.insert(dbSession, fileSourceDto); dbSession.commit(); }
@Test public void getSourceData_throws_ISE_with_id_fileUuid_and_projectUuid_in_message_when_data_cant_be_read() { long id = 12L; String fileUuid = "file uuid"; String projectUuid = "project uuid"; FileSourceDto underTest = new FileSourceDto() .setBinaryData(new byte[] {1, 2, 3, 4, 5}) .setId(id) .setFileUuid(fileUuid) .setProjectUuid(projectUuid); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Fail to decompress and deserialize source data [id=" + id + ",fileUuid=" + fileUuid + ",projectUuid=" + projectUuid + "]"); underTest.getSourceData(); }
@Test public void return_empty_value_when_no_scm() throws Exception { userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE_UUID) .setSourceData(DbFileSources.Data.newBuilder().build())); dbSession.commit(); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY); request.execute().assertJson(getClass(), "return_empty_value_when_no_scm.json"); }
private void insertFileWithData(ComponentDto file, DbFileSources.Data fileData) { db.getDbClient().fileSourceDao().insert(db.getSession(), new FileSourceDto() .setProjectUuid(file.projectUuid()) .setFileUuid(file.uuid()) .setSourceData(fileData)); db.commit(); }
@Before public void injectFakeLines() throws IOException { FileSourceDto dto = new FileSourceDto(); dto.setFileUuid(FILE_UUID).setProjectUuid("PROJECT_UUID"); dto.setSourceData(FileSourceTesting.newFakeData(10).build()); dbTester.getDbClient().fileSourceDao().insert(dbTester.getSession(), dto); dbTester.commit(); }
private ComponentDto insertFileWithData(DbFileSources.Data fileData, ComponentDto project) { ComponentDto file = insertFile(project); db.getDbClient().fileSourceDao().insert(db.getSession(), new FileSourceDto() .setProjectUuid(project.projectUuid()) .setFileUuid(file.uuid()) .setSourceData(fileData)); db.commit(); return file; }
@Test public void show_scm() throws Exception { userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE_UUID) .setSourceData(DbFileSources.Data.newBuilder().addLines( newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 1)).build())); dbSession.commit(); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY); request.execute().assertJson(getClass(), "show_scm.json"); }
@Test public void show_scm_from_given_range_lines() throws Exception { userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE_UUID) .setSourceData(DbFileSources.Data.newBuilder() .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 1)) .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 2)) .addLines(newSourceLine("julien", "456-789-101", DateUtils.parseDateTime("2015-03-27T12:34:56+0000"), 3)) .addLines(newSourceLine("simon", "789-101-112", DateUtils.parseDateTime("2015-03-31T12:34:56+0000"), 4)) .build())); dbSession.commit(); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY).setParam("from", "2").setParam("to", "3"); request.execute().assertJson(getClass(), "show_scm_from_given_range_lines.json"); }
@Test public void accept_negative_value_in_from_parameter() throws Exception { userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE_UUID) .setSourceData(DbFileSources.Data.newBuilder() .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 1)) .addLines(newSourceLine("julien", "123-456-710", DateUtils.parseDateTime("2015-03-29T12:34:56+0000"), 2)) .addLines(newSourceLine("julien", "456-789-101", DateUtils.parseDateTime("2015-03-27T12:34:56+0000"), 3)) .addLines(newSourceLine("simon", "789-101-112", DateUtils.parseDateTime("2015-03-31T12:34:56+0000"), 4)) .build())); dbSession.commit(); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY).setParam("from", "-2").setParam("to", "3"); request.execute().assertJson(getClass(), "accept_negative_value_in_from_parameter.json"); }
@Test public void group_lines_by_commit() throws Exception { userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); // lines 1 and 2 are the same commit, but not 3 (different date) dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE_UUID) .setSourceData(DbFileSources.Data.newBuilder() .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 1)) .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 2)) .addLines(newSourceLine("julien", "456-789-101", DateUtils.parseDateTime("2015-03-27T12:34:56+0000"), 3)) .addLines(newSourceLine("simon", "789-101-112", DateUtils.parseDateTime("2015-03-31T12:34:56+0000"), 4)) .build())); dbSession.commit(); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY).setParam("commits_by_line", "false"); request.execute().assertJson(getClass(), "group_lines_by_commit.json"); }