1
2
3
4
5 package org.itracker.web.util;
6
7 import org.itracker.AbstractDependencyInjectionTest;
8 import org.itracker.ImportExportException;
9 import org.itracker.model.*;
10 import org.itracker.model.CustomField.Type;
11 import org.itracker.model.util.IssueUtilities;
12 import org.itracker.model.util.ProjectUtilities;
13 import org.junit.Ignore;
14 import org.junit.Test;
15
16 import java.io.IOException;
17 import java.io.InputStreamReader;
18 import java.io.Reader;
19 import java.io.StringReader;
20 import java.text.SimpleDateFormat;
21 import java.util.*;
22
23
24
25
26
27
28 public class ImportExportUtilitiesIT extends AbstractDependencyInjectionTest {
29
30 public static final long TEST_TIMESTAMP_EXPORT1 = 50000l;
31 public static final long TEST_TIMESTAMP_EXPORT2 = 8000000l;
32
33 private String flatXml(final String xml) {
34 return xml.replace("\n", "").replace("\r", "").replaceAll("> +<", "><").trim();
35 }
36
37 public void doTestImportIssues(final Reader xml,
38 final AbstractEntity[] expected) {
39 try {
40 final AbstractEntity[] actual = ImportExportUtilities.importIssues(xml);
41 final List<AbstractEntity> actualList = new Vector<AbstractEntity>(Arrays.asList(actual));
42 final List<AbstractEntity> expectedList = new Vector<AbstractEntity>(Arrays.asList(expected));
43 assertEquals(expected.length, actual.length);
44 for (final AbstractEntity aeExpected : expectedList) {
45 boolean found = false;
46 for (final AbstractEntity aeActual : actualList) {
47 if (aeExpected instanceof Issue && aeActual instanceof Issue) {
48 final Issue issueExpected = (Issue) aeExpected;
49 final Issue issueActual = (Issue) aeActual;
50 if (issueExpected.getId().equals(issueActual.getId())) {
51 found = true;
52 }
53 } else if (aeExpected instanceof Project && aeActual instanceof Project) {
54 final Project projectExpected = (Project) aeExpected;
55 final Project projectActual = (Project) aeActual;
56 if (projectExpected.getId().equals(projectActual.getId())) {
57 found = true;
58 }
59 } else if (aeExpected instanceof User && aeActual instanceof User) {
60 final User userExpected = (User) aeExpected;
61 final User userActual = (User) aeActual;
62 if (userExpected.getId().equals(userActual.getId())) {
63 found = true;
64 }
65 } else if (aeExpected instanceof SystemConfiguration && aeActual instanceof SystemConfiguration) {
66 @SuppressWarnings("unused")
67 final SystemConfiguration configExpected =
68 (SystemConfiguration) aeExpected;
69 @SuppressWarnings("unused")
70 final SystemConfiguration configActual =
71 (SystemConfiguration) aeActual;
72 found = true;
73 }
74 if (found) {
75 actualList.remove(aeActual);
76 break;
77 }
78 }
79 assertTrue(found);
80 }
81 } catch (final ImportExportException e) {
82 assertTrue(e.getMessage(), false);
83 }
84 }
85
86 @Test
87 public void testImportIssue() {
88 final List<Issue> issues = new Vector<Issue>();
89 final Project project = new Project("project");
90 project.setId(1);
91 final User creator = new User();
92 creator.setId(1);
93 final User owner = new User();
94 owner.setId(2);
95 final Date dateCreate = new Date();
96 final Date dateModify = new Date();
97 final Issue issue1 = new Issue();
98 issue1.setId(1);
99 issue1.setProject(project);
100 issue1.setDescription("issue description");
101 issue1.setCreator(creator);
102 issue1.setOwner(owner);
103 issue1.setCreateDate(dateCreate);
104 issue1.setLastModifiedDate(dateModify);
105 issues.add(issue1);
106
107 final Issue issue2 = new Issue();
108 issue2.setId(2);
109 issue2.setProject(project);
110 issue2.setDescription("issue description");
111 issue2.setCreator(creator);
112 issue2.setOwner(owner);
113 issue2.setCreateDate(dateCreate);
114 issue2.setLastModifiedDate(dateModify);
115 issues.add(issue2);
116
117 final SystemConfiguration systemConfiguration =
118 new SystemConfiguration();
119 final String xml = "<itracker>" +
120 "<configuration>" +
121 "<configuration-version><![CDATA[]]></configuration-version>" +
122 "<custom-fields>" +
123 "</custom-fields>" +
124 "<resolutions>" +
125 "</resolutions>" +
126 "<severities>" +
127 "</severities>" +
128 "<statuses>" +
129 "</statuses>" +
130 "</configuration>" +
131 "<users>" +
132 "<user id=\"user1\" systemid=\"1\">" +
133 "<login><![CDATA[]]></login>" +
134 "<first-name><![CDATA[]]></first-name>" +
135 "<last-name><![CDATA[]]></last-name>" +
136 "<email><![CDATA[]]></email>" +
137 "<user-status>0</user-status>" +
138 "<super-user>false</super-user>" +
139 "</user>" +
140 "<user id=\"user2\" systemid=\"2\">" +
141 "<login><![CDATA[]]></login>" +
142 "<first-name><![CDATA[]]></first-name>" +
143 "<last-name><![CDATA[]]></last-name>" +
144 "<email><![CDATA[]]></email>" +
145 "<user-status>0</user-status>" +
146 "<super-user>false</super-user>" +
147 "</user>" +
148 "</users>" +
149 "<projects>" +
150 "<project id=\"project1\" systemid=\"1\">" +
151 "<project-name><![CDATA[project]]></project-name>" +
152 "<project-description><![CDATA[]]></project-description>" +
153 "<project-status>" + ProjectUtilities.getStatusName(project.getStatus(), ImportExportUtilities.EXPORT_LOCALE) + "</project-status>" +
154 "<project-options>0</project-options>" +
155 "</project>" +
156 "</projects>" +
157 "<issues>" +
158 "<issue id=\"issue1\" systemid=\"1\">" +
159 "<issue-project><![CDATA[project1]]></issue-project>" +
160 "<issue-description><![CDATA[issue description]]></issue-description>" +
161 "<issue-severity>3</issue-severity>" +
162 "<issue-status>100</issue-status>" +
163 "<issue-resolution><![CDATA[]]></issue-resolution>" +
164 "<create-date>" + ImportExportTags.DATE_FORMATTER.format(dateCreate) + "</create-date>" +
165 "<last-modified>" + ImportExportTags.DATE_FORMATTER.format(dateModify) + "</last-modified>" +
166 "<creator>user1</creator>" +
167 "<owner>user2</owner>" +
168 "</issue>" +
169 "<issue id=\"issue2\" systemid=\"2\">" +
170 " <issue-project><![CDATA[project1]]></issue-project>" +
171 "<issue-description><![CDATA[issue description]]></issue-description>" +
172 "<issue-severity>3</issue-severity>" +
173 "<issue-status>100</issue-status>" +
174 "<issue-resolution><![CDATA[]]></issue-resolution>" +
175 "<create-date>" + ImportExportTags.DATE_FORMATTER.format(dateCreate) + "</create-date>" +
176 "<last-modified>" + ImportExportTags.DATE_FORMATTER.format(dateModify) + "</last-modified>" +
177 "<creator>user1</creator>" +
178 "<owner>user2</owner>" +
179 "</issue>" +
180 "</issues>" +
181 "</itracker>";
182 doTestImportIssues(new StringReader(xml),
183 new AbstractEntity[]{
184 systemConfiguration,
185 creator,
186 owner,
187 project,
188 issue1,
189 issue2
190 });
191
192
193 try {
194 ImportExportUtilities.importIssues(null);
195 fail("should throw ImportExportException");
196 } catch (final ImportExportException e) {
197
198 }
199
200 try {
201 ImportExportUtilities.importIssues(new StringReader(""));
202 fail("should throw ImportExportException");
203 } catch (final ImportExportException e) {
204
205 }
206
207 try {
208 ImportExportUtilities.importIssues(new StringReader("Test"));
209 fail("should throw ImportExportException");
210 } catch (final ImportExportException e) {
211
212 }
213 }
214
215
216
217 @Ignore
218 @Test
219 public void testExportIssues() {
220 final List<Issue> issues = new Vector<Issue>();
221 final Project project = new Project("project");
222 project.setId(1);
223 final User creator = new User();
224 creator.setId(1);
225 final User owner = new User();
226 owner.setId(2);
227 final User user = new User();
228 user.setId(3);
229 final User attachmentCreator = new User();
230 attachmentCreator.setId(4);
231 final Date dateCreate = new Date(TEST_TIMESTAMP_EXPORT1);
232 final Date dateModify = new Date(TEST_TIMESTAMP_EXPORT2);
233 Date created = null;
234 List<User> users = new ArrayList<User>();
235 users.add(creator);
236 project.setOwners(users);
237 try {
238 created = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2008-11-11 12:11:10");
239 } catch (Exception e) {
240
241 }
242 {
243 final Issue issue = new Issue();
244 issue.setId(1);
245 issue.setProject(project);
246 issue.setDescription("issue description");
247 issue.setCreator(creator);
248 issue.setOwner(owner);
249 issue.setCreateDate(dateCreate);
250 issue.setLastModifiedDate(dateModify);
251
252 IssueHistory issueHistory = new IssueHistory();
253 issueHistory.setUser(user);
254 issueHistory.setStatus(1);
255 issueHistory.setCreateDate(created);
256 issueHistory.setDescription("Test issue history entry.");
257 List<IssueHistory> histories = new ArrayList<IssueHistory>();
258 histories.add(issueHistory);
259 issue.setHistory(histories);
260
261 IssueAttachment attachment = new IssueAttachment();
262 attachment.setUser(attachmentCreator);
263 attachment.setFileName("proj1_issue801_attachment1");
264 attachment.setOriginalFileName("ITracker.jmx");
265 attachment.setSize(192521);
266 attachment.setType("text/plain");
267
268 List<IssueAttachment> attachments = new ArrayList<IssueAttachment>();
269 attachments.add(attachment);
270 issue.setAttachments(attachments);
271
272 issues.add(issue);
273 }
274 {
275 final Issue issue = new Issue();
276 issue.setId(2);
277 issue.setProject(project);
278 issue.setDescription("issue description");
279 issue.setCreator(creator);
280 issue.setOwner(owner);
281 issue.setCreateDate(dateCreate);
282 issue.setLastModifiedDate(dateModify);
283 issues.add(issue);
284
285 }
286 final SystemConfiguration systemConfiguration =
287 new SystemConfiguration();
288 try {
289 final String expected = readXmlString("org/itracker/services/util/testExportIssuesExpected.xml");
290 String xml = ImportExportUtilities.exportIssues(issues,
291 systemConfiguration);
292
293 assertEquals("xml", flatXml(expected),
294 flatXml(xml));
295 } catch (final ImportExportException ex) {
296 assertTrue(ex.getMessage(), false);
297 }
298
299 try {
300 ImportExportUtilities.exportIssues(null, systemConfiguration);
301 fail("should throw ImportExportException");
302 } catch (ImportExportException e) {
303
304 }
305
306 try {
307 ImportExportUtilities.exportIssues(new ArrayList<Issue>(), systemConfiguration);
308 fail("should throw ImportExportException");
309 } catch (ImportExportException e) {
310
311 }
312 }
313
314 @Test
315 public void testExportModel() {
316 try {
317 final User creator = new User();
318 creator.setId(1);
319 final User owner = new User();
320 owner.setId(2);
321 final Project project = new Project("project");
322 project.setId(1);
323 project.getOwners().add(creator);
324 project.getOwners().add(owner);
325 final Component component = new Component(project, "component");
326 project.getComponents().add(component);
327 final Issue issue = new Issue();
328 issue.setProject(project);
329 issue.setId(1);
330 issue.setDescription("issue description");
331 issue.setSeverity(1);
332 issue.setResolution("fixed");
333 issue.setTargetVersion(new Version(project, "1.1.1"));
334 final Date dateCreate = new Date();
335 issue.setCreateDate(dateCreate);
336 final Date dateModify = new Date();
337 issue.setLastModifiedDate(dateModify);
338 issue.setCreator(creator);
339 issue.setOwner(owner);
340 final IssueHistory issueHistory = new IssueHistory(issue, creator, "some description", IssueUtilities.STATUS_NEW);
341 issueHistory.setCreateDate(dateCreate);
342 issueHistory.setLastModifiedDate(dateModify);
343 issue.getHistory().add(issueHistory);
344 issue.getComponents().add(component);
345 final IssueAttachment attachment = new IssueAttachment(issue, "file.txt");
346 attachment.setUser(creator);
347 issue.getAttachments().add(attachment);
348 issue.getVersions().add(new Version(project, "1.1.1"));
349 issue.getVersions().add(new Version(project, "1.1.2"));
350 final String expected = "<issue id=\"issue1\" systemid=\"1\">" +
351 "<issue-project><![CDATA[project1]]></issue-project>" +
352 "<issue-description><![CDATA[issue description]]></issue-description>" +
353 "<issue-severity>1</issue-severity>" +
354 "<issue-status>null</issue-status>" +
355 "<issue-resolution><![CDATA[fixed]]></issue-resolution>" +
356 "<target-version-id>versionnull</target-version-id>" +
357 "<create-date>" + ImportExportTags.DATE_FORMATTER.format(dateCreate) + "</create-date>" +
358 "<last-modified>" + ImportExportTags.DATE_FORMATTER.format(dateModify) + "</last-modified>" +
359 "<creator>user1</creator>" +
360 "<owner>user2</owner>" +
361 "<issue-components>" +
362 "<component-id>componentnull</component-id>" +
363 "</issue-components>" +
364 "<issue-versions>" +
365 "<version-id>versionnull</version-id>" +
366 "<version-id>versionnull</version-id>" +
367 "</issue-versions>" +
368 "<issue-attachments>" +
369 "<issue-attachment> <issue-attachment-description><![CDATA[]]></issue-attachment-description>" +
370 "<issue-attachment-filename><![CDATA[]]></issue-attachment-filename>" +
371 "<issue-attachment-origfile><![CDATA[file.txt]]></issue-attachment-origfile>" +
372 "<issue-attachment-size><![CDATA[0]]></issue-attachment-size>" +
373 "<issue-attachment-type><![CDATA[null]]></issue-attachment-type>" +
374 "<issue-attachment-creator><![CDATA[user1]]></issue-attachment-creator>" +
375 "</issue-attachment>" +
376 "</issue-attachments>" +
377 "<issue-history>" +
378 "<history-entry creator-id=\"user1\" date=\"" + ImportExportTags.DATE_FORMATTER.format(dateCreate) + "\" status=\"100\"><![CDATA[some description]]></history-entry>" +
379 "</issue-history>" +
380 "</issue>";
381 assertEquals(flatXml(expected),
382 flatXml(ImportExportUtilities.exportModel(issue)));
383 } catch (final ImportExportException ex) {
384 assertTrue(ex.getMessage(), false);
385 }
386
387 try {
388 final Project project = new Project("project");
389 project.setId(1);
390 final Component component = new Component(project, "component");
391 component.setId(1);
392 project.getComponents().add(component);
393 final String expected = "<project id=\"project1\" systemid=\"1\">" +
394 "<project-name><![CDATA[project]]></project-name>" +
395 "<project-description><![CDATA[]]></project-description>" +
396 "<project-status>" + ProjectUtilities.getStatusName(project.getStatus(), ImportExportUtilities.EXPORT_LOCALE) + "</project-status>" +
397 "<project-options>0</project-options>" +
398 "<components>" +
399 "<component id=\"component1\" systemid=\"1\">" +
400 "<component-name><![CDATA[component]]></component-name>" +
401 "<component-description><![CDATA[]]></component-description>" +
402 "</component>" +
403 "</components>" +
404 "</project>";
405 assertEquals(flatXml(expected),
406 flatXml(ImportExportUtilities.exportModel(project)));
407 } catch (final ImportExportException ex) {
408 assertTrue(ex.getMessage(), false);
409 }
410
411 try {
412 final User user = new User();
413 user.setId(1);
414 user.setFirstName("firstName");
415 user.setLastName("lastName");
416 final String expected = "<user id=\"user1\" systemid=\"1\">" +
417 "<login><![CDATA[]]></login>" +
418 "<first-name><![CDATA[firstName]]></first-name>" +
419 "<last-name><![CDATA[lastName]]></last-name>" +
420 "<email><![CDATA[]]></email>" +
421 "<user-status>0</user-status>" +
422 "<super-user>false</super-user>" +
423 "</user>";
424 assertEquals(flatXml(expected),
425 flatXml(ImportExportUtilities.exportModel(user)));
426 } catch (final ImportExportException ex) {
427 assertTrue(ex.getMessage(), false);
428 }
429
430 try {
431 ImportExportUtilities.exportModel(null);
432 fail("should throw ImportExportException");
433 } catch (ImportExportException e) {
434 }
435
436 try {
437 ImportExportUtilities.exportModel(null);
438 fail("should throw ImportExportException");
439 } catch (ImportExportException e) {
440 assertEquals("The bean to export was null.", e.getMessage());
441 }
442
443 try {
444 ImportExportUtilities.exportModel(new Component());
445 fail("should throw ImportExportException");
446 } catch (ImportExportException e) {
447 assertEquals("This bean type can not be exported.", e.getMessage());
448 }
449 }
450
451
452
453
454 @Test
455 public void testGetConfigurationXML() {
456
457 String got = ImportExportUtilities.getConfigurationXML(null);
458 assertNotNull(got);
459 assertEquals("", got);
460
461 final SystemConfiguration config = new SystemConfiguration();
462 config.setId(1);
463 config.setVersion("1/1");
464 final CustomField customField1 = new CustomField();
465 customField1.setFieldType(Type.STRING);
466 customField1.setId(1);
467 config.getCustomFields().add(customField1);
468 final CustomField customField2 = new CustomField();
469 customField2.setFieldType(Type.LIST);
470 customField2.setId(2);
471 CustomFieldValue customFieldValue = new CustomFieldValue();
472 customFieldValue.setId(2);
473 customFieldValue.setValue("value2");
474 final CustomField customField3 = new CustomField();
475 customField3.setFieldType(Type.LIST);
476 customFieldValue.setCustomField(new CustomField());
477
478 customField2.getOptions().add(customFieldValue);
479 config.getCustomFields().add(customField2);
480
481
482 config.getResolutions().add(new Configuration(Configuration.Type.resolution, "resolution"));
483
484 config.getSeverities().add(new Configuration(Configuration.Type.severity, "severity"));
485
486 config.getStatuses().add(new Configuration(Configuration.Type.status, "status"));
487
488 final String expected = readXmlString("org/itracker/services/util/testGetConfigurationXMLExpected.xml");
489
490 String string = ImportExportUtilities.getConfigurationXML(config);
491 assertEquals("xml", flatXml(expected),
492 flatXml(string));
493 }
494
495 private String readXmlString(String filename) {
496 InputStreamReader is = new InputStreamReader(getClass().getClassLoader().getResourceAsStream(filename));
497 StringBuilder sb = new StringBuilder();
498 try {
499 while (is.ready()) {
500 sb.append((char) is.read());
501 }
502 } catch (IOException e) {
503 fail(e.getMessage());
504 }
505 return sb.toString();
506 }
507
508 @Test
509 public void testConstructor() {
510 ImportExportUtilities importExportUtilities = new ImportExportUtilities();
511
512 assertNotNull(importExportUtilities);
513
514 }
515
516 @Test
517
518 public void testGetIssueXML() {
519
520 String got = ImportExportUtilities.getIssueXML(null);
521 assertNotNull(got);
522 assertEquals("", got);
523
524
525 final User creator = new User();
526 creator.setId(1);
527 final User owner = new User();
528 owner.setId(2);
529 final Project project = new Project("project");
530 project.setId(1);
531 project.getOwners().add(creator);
532 project.getOwners().add(owner);
533 final Component component = new Component(project, "component");
534 project.getComponents().add(component);
535 final Issue issue = new Issue();
536 issue.setProject(project);
537 issue.setId(1);
538 issue.setDescription("issue description");
539 issue.setSeverity(1);
540 issue.setResolution("fixed");
541 issue.setTargetVersion(new Version(project, "1.1.1"));
542 final Date dateCreate = new Date();
543 issue.setCreateDate(dateCreate);
544 final Date dateModify = new Date();
545 issue.setLastModifiedDate(dateModify);
546 issue.setCreator(creator);
547 issue.setOwner(owner);
548 final IssueHistory issueHistory = new IssueHistory(issue, creator, "some description", IssueUtilities.STATUS_NEW);
549 issueHistory.setCreateDate(dateCreate);
550 issueHistory.setLastModifiedDate(dateModify);
551 issue.getHistory().add(issueHistory);
552 issue.getComponents().add(component);
553 final IssueAttachment attachment = new IssueAttachment(issue, "file.txt");
554 attachment.setUser(creator);
555 issue.getAttachments().add(attachment);
556 issue.getVersions().add(new Version(project, "1.1.1"));
557 issue.getVersions().add(new Version(project, "1.1.2"));
558 IssueField issueField = new IssueField();
559 issueField.setId(1);
560 issueField.setStringValue("issue Field");
561 CustomField customField = new CustomField();
562 customField.setId(2);
563
564 customField.setFieldType(Type.STRING);
565 issueField.setCustomField(customField);
566
567
568 issue.getFields().add(issueField);
569
570 final String expected = "<issue id=\"issue1\" systemid=\"1\">" +
571 "<issue-project><![CDATA[project1]]></issue-project>" +
572 "<issue-description><![CDATA[issue description]]></issue-description>" +
573 "<issue-severity>1</issue-severity>" +
574 "<issue-status>null</issue-status>" +
575 "<issue-resolution><![CDATA[fixed]]></issue-resolution>" +
576 "<target-version-id>versionnull</target-version-id>" +
577 "<create-date>" + ImportExportTags.DATE_FORMATTER.format(dateCreate) + "</create-date>" +
578 "<last-modified>" + ImportExportTags.DATE_FORMATTER.format(dateModify) + "</last-modified>" +
579 "<creator>user1</creator>" +
580 "<owner>user2</owner>" +
581 "<issue-components>" +
582 "<component-id>componentnull</component-id>" +
583 "</issue-components>" +
584 "<issue-versions>" +
585 "<version-id>versionnull</version-id>" +
586 "<version-id>versionnull</version-id>" +
587 "</issue-versions>" +
588 "<issue-fields><issue-field id=\"custom-field2\">" +
589 "<![CDATA[issue Field]]></issue-field></issue-fields>" +
590 "<issue-attachments>" +
591 "<issue-attachment> <issue-attachment-description><![CDATA[]]></issue-attachment-description>" +
592 "<issue-attachment-filename><![CDATA[]]></issue-attachment-filename>" +
593 "<issue-attachment-origfile><![CDATA[file.txt]]></issue-attachment-origfile>" +
594 "<issue-attachment-size><![CDATA[0]]></issue-attachment-size>" +
595 "<issue-attachment-type><![CDATA[null]]></issue-attachment-type>" +
596 "<issue-attachment-creator><![CDATA[user1]]></issue-attachment-creator>" +
597 "</issue-attachment>" +
598 "</issue-attachments>" +
599 "<issue-history>" +
600 "<history-entry creator-id=\"user1\" date=\"" + ImportExportTags.DATE_FORMATTER.format(dateCreate) + "\" status=\"100\"><![CDATA[some description]]></history-entry>" +
601 "</issue-history>" +
602 "</issue>";
603
604 assertEquals(flatXml(expected),
605 flatXml(ImportExportUtilities.getIssueXML(issue)));
606
607
608 }
609
610 @Test
611 public void testGetProjectXML() {
612
613 String got = ImportExportUtilities.getProjectXML(null);
614 assertNotNull(got);
615 assertEquals("", got);
616
617 final Project project = new Project("project");
618 project.setId(1);
619 final Component component = new Component(project, "component");
620 component.setId(1);
621 project.getComponents().add(component);
622
623 CustomField customField = new CustomField();
624 customField.setId(1);
625 project.getCustomFields().add(customField);
626 Version version = new Version(project, "1.1.1");
627 version.setId(1);
628 project.getVersions().add(version);
629
630
631 final String expected = "<project id=\"project1\" systemid=\"1\">" +
632 "<project-name><![CDATA[project]]></project-name>" +
633 "<project-description><![CDATA[]]></project-description>" +
634 "<project-status>" + ProjectUtilities.getStatusName(project.getStatus(), ImportExportUtilities.EXPORT_LOCALE) + "</project-status>" +
635 "<project-options>0</project-options>" +
636 "<project-custom-fields><project-custom-field>custom-field1</project-custom-field></project-custom-fields>" +
637 "<components>" +
638 "<component id=\"component1\" systemid=\"1\">" +
639 "<component-name><![CDATA[component]]></component-name>" +
640 "<component-description><![CDATA[]]></component-description>" +
641 "</component>" +
642 "</components>" +
643 "<versions><version id=\"version1\" systemid=\"1\"><version-number><![CDATA[1.1.1]]>" +
644 "</version-number><version-description><![CDATA[]]></version-description></version></versions>" +
645 "</project>";
646
647 assertEquals(flatXml(expected), flatXml(ImportExportUtilities.getProjectXML(project)));
648
649 }
650
651 @Test
652 public void testGetUserXML() {
653 String got = ImportExportUtilities.getUserXML(null);
654 assertNotNull(got);
655 assertEquals("", got);
656
657 final User user = new User();
658 user.setId(1);
659 user.setFirstName("firstName");
660 user.setLastName("lastName");
661 final String expected = "<user id=\"user1\" systemid=\"1\">" +
662 "<login><![CDATA[]]></login>" +
663 "<first-name><![CDATA[firstName]]></first-name>" +
664 "<last-name><![CDATA[lastName]]></last-name>" +
665 "<email><![CDATA[]]></email>" +
666 "<user-status>0</user-status>" +
667 "<super-user>false</super-user>" +
668 "</user>";
669 assertEquals(flatXml(expected),
670 flatXml(ImportExportUtilities.getUserXML(user)));
671
672 }
673
674
675
676
677
678
679
680 protected String[] getDataSetFiles() {
681 return new String[]{
682 "dataset/languagebean_dataset.xml"
683 };
684 }
685
686
687
688
689
690
691 protected String[] getConfigLocations() {
692 return new String[]{"application-context.xml"};
693 }
694 }