Skip to content

Commit f15bb32

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into fix/issue-342
2 parents daa40ea + 01a11b0 commit f15bb32

48 files changed

Lines changed: 1368 additions & 228 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package de.cognicrypt.codegenerator.generator.test;
2+
3+
import static org.junit.Assert.assertNotNull;
4+
import static org.junit.Assert.assertNull;
5+
import static org.junit.Assert.assertTrue;
6+
7+
import org.eclipse.core.resources.IResource;
8+
import org.eclipse.jdt.core.ICompilationUnit;
9+
import org.eclipse.jdt.core.IJavaProject;
10+
import org.eclipse.jdt.core.IPackageFragment;
11+
import org.junit.Test;
12+
13+
import de.cognicrypt.codegenerator.generator.CodeGenerator;
14+
import de.cognicrypt.codegenerator.generator.CrySLBasedCodeGenerator;
15+
import de.cognicrypt.codegenerator.testutilities.TestUtils;
16+
import de.cognicrypt.codegenerator.wizard.CrySLConfiguration;
17+
import de.cognicrypt.utils.DeveloperProject;
18+
19+
public class CodeGenLocationSelectionTest {
20+
// /**
21+
// * Scenario: user doesn't select a specific class or package.
22+
// * Expected behavior: CC generates its own package with the necessary classes
23+
// * @throws Exception
24+
// */
25+
@Test
26+
public void noSpecificSelection() throws Exception {
27+
// task
28+
String template = "secretkeyencryption";
29+
// create Java project without any package or class
30+
IJavaProject generatedProject = TestUtils.createJavaProject("TestProject_SYMENC");
31+
// setup for code generation
32+
CodeGenerator codeGenerator = new CrySLBasedCodeGenerator(generatedProject.getResource());
33+
DeveloperProject developerProject = codeGenerator.getDeveloperProject();
34+
CrySLConfiguration chosenConfig = TestUtils.createCrySLConfiguration(template, generatedProject.getResource(),
35+
codeGenerator, developerProject);
36+
// run code generation
37+
boolean encCheck = codeGenerator.generateCodeTemplates(chosenConfig, "");
38+
39+
assertTrue(encCheck); // check if code generation is successful
40+
assertTrue(TestUtils.packageExists(generatedProject, Constants.PackageNameAsName)); // check if package is
41+
// created
42+
ICompilationUnit encClass = TestUtils.getICompilationUnit(developerProject, Constants.PackageNameAsName,
43+
"SecureEncryptor.java");
44+
assertNotNull(encClass); // check if SecureEncryptor.java is created
45+
ICompilationUnit outputClass = TestUtils.getICompilationUnit(developerProject, Constants.PackageNameAsName,
46+
"Output.java");
47+
assertNotNull(outputClass); // check if Output.java is created
48+
}
49+
50+
/**
51+
* Scenario: user selects just a package. Expected behavior: CC doesn't
52+
* generates its own package just the necessary classes in the user selected
53+
* package
54+
*
55+
* @throws Exception
56+
*/
57+
@Test
58+
public void packageSelection() throws Exception {
59+
// task
60+
String template = "secretkeyencryption";
61+
62+
// package name
63+
String packageName = "de.test.test";
64+
65+
// create Java project with package
66+
IJavaProject generatedProject = TestUtils.createJavaProject("TestProject_SYMENC");
67+
IPackageFragment generatedPackage = TestUtils.generatePackageInJavaProject(generatedProject, packageName);
68+
69+
// setup for code generation
70+
CodeGenerator codeGenerator = new CrySLBasedCodeGenerator(generatedPackage.getResource());
71+
DeveloperProject developerProject = codeGenerator.getDeveloperProject();
72+
CrySLConfiguration chosenConfig = TestUtils.createCrySLConfiguration(template, generatedPackage.getResource(),
73+
codeGenerator, developerProject);
74+
75+
// run code generation
76+
boolean encCheck = codeGenerator.generateCodeTemplates(chosenConfig, "");
77+
78+
assertTrue(encCheck); // check if code generation is successful
79+
assertTrue(TestUtils.packageExists(generatedProject, Constants.PackageNameAsName)); // check if package is
80+
// created
81+
82+
ICompilationUnit encClass = TestUtils.getICompilationUnit(developerProject, Constants.PackageNameAsName,
83+
"SecureEncryptor.java");
84+
assertNotNull(encClass); // check if SecureEncryptor.java is created
85+
86+
ICompilationUnit outputClass = TestUtils.getICompilationUnit(developerProject, Constants.PackageNameAsName,
87+
"Output.java");
88+
assertNotNull(outputClass); // check if Output.java is created
89+
}
90+
91+
/**
92+
* Case three: user selects one of his own classes.
93+
*
94+
* @throws Exception
95+
*/
96+
@Test
97+
public void ownClassSelection() throws Exception {
98+
// task
99+
String template = "secretkeyencryption";
100+
101+
// create java project with a test class
102+
IJavaProject generatedProject = TestUtils.createJavaProject(Constants.PROJECT_NAME);
103+
IResource targetFile = TestUtils.generateJavaClassInJavaProject(generatedProject, Constants.PACKAGE_NAME,
104+
Constants.CLASS_NAME);
105+
// setup for code generation
106+
CodeGenerator codeGenerator = new CrySLBasedCodeGenerator(targetFile);
107+
DeveloperProject developerProject = codeGenerator.getDeveloperProject();
108+
CrySLConfiguration chosenConfig = TestUtils.createCrySLConfiguration(template, targetFile, codeGenerator,
109+
developerProject);
110+
// run code generation
111+
boolean encCheck = codeGenerator.generateCodeTemplates(chosenConfig, "");
112+
113+
assertTrue(encCheck); // check if code generation is successful
114+
assertTrue(TestUtils.packageExists(generatedProject, Constants.PackageNameAsName)); // check if package is
115+
// created
116+
117+
ICompilationUnit encClass = TestUtils.getICompilationUnit(developerProject, Constants.PackageNameAsName,
118+
"SecureEncryptor.java");
119+
assertNotNull(encClass); // check if SecureEncryptor.java is created
120+
ICompilationUnit outputClass = TestUtils.getICompilationUnit(developerProject, Constants.PackageNameAsName,
121+
"Output.java");
122+
assertNull(outputClass); // check if Output.java is not created
123+
}
124+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package de.cognicrypt.codegenerator.generator.test;
2+
3+
import static org.junit.Assert.assertNotNull;
4+
import static org.junit.Assert.assertTrue;
5+
6+
import org.eclipse.jdt.core.ICompilationUnit;
7+
import org.eclipse.jdt.core.IJavaProject;
8+
import org.eclipse.jdt.core.IPackageFragment;
9+
import org.junit.Test;
10+
11+
import de.cognicrypt.codegenerator.generator.CodeGenerator;
12+
import de.cognicrypt.codegenerator.generator.CrySLBasedCodeGenerator;
13+
import de.cognicrypt.codegenerator.testutilities.TestUtils;
14+
import de.cognicrypt.codegenerator.wizard.CrySLConfiguration;
15+
import de.cognicrypt.utils.DeveloperProject;
16+
17+
public class CodeGenOthersTest {
18+
19+
// /**
20+
// * Scenario: user doesn't select a specific class or package.
21+
// * Expected behavior: CC generates its own package with the necessary classes
22+
// * @throws Exception
23+
// */
24+
@Test
25+
public void noSpecificSelection() throws Exception {
26+
//task
27+
String template = "secretkeyencryption";
28+
// create Java project without any package or class
29+
IJavaProject generatedProject = TestUtils.createJavaProject("TestProject_SYMENC");
30+
// setup for code generation
31+
CodeGenerator codeGenerator = new CrySLBasedCodeGenerator(generatedProject.getResource());
32+
DeveloperProject developerProject = codeGenerator.getDeveloperProject();
33+
CrySLConfiguration chosenConfig = TestUtils.createCrySLConfiguration(template, generatedProject.getResource(),
34+
codeGenerator, developerProject);
35+
// run code generation
36+
boolean encCheck = codeGenerator.generateCodeTemplates(chosenConfig, "");
37+
38+
assertTrue(encCheck); // check if code generation is successful
39+
assertTrue(TestUtils.packageExists(generatedProject, Constants.PackageNameAsName)); // check if package is
40+
// created
41+
ICompilationUnit encClass = TestUtils.getICompilationUnit(developerProject, Constants.PackageNameAsName,
42+
"SecureEncryptor.java");
43+
assertNotNull(encClass); // check if SecureEncryptor.java is created
44+
ICompilationUnit outputClass = TestUtils.getICompilationUnit(developerProject, Constants.PackageNameAsName,
45+
"Output.java");
46+
assertNotNull(outputClass); // check if Output.java is created
47+
}
48+
49+
50+
/**
51+
* Scenario: user selects just a package.
52+
* Expected behavior: CC doesn't generates its own package just the necessary classes in the user selected package
53+
* @throws Exception
54+
*/
55+
@Test
56+
public void packageSelection() throws Exception {
57+
// task
58+
String template = "secretkeyencryption";
59+
60+
// package name
61+
String packageName = "de.test.test";
62+
63+
// create Java project with package
64+
IJavaProject generatedProject = TestUtils.createJavaProject("TestProject_SYMENC");
65+
IPackageFragment generatedPackage = TestUtils.generatePackageInJavaProject(generatedProject, packageName);
66+
67+
// setup for code generation
68+
CodeGenerator codeGenerator = new CrySLBasedCodeGenerator(generatedPackage.getResource());
69+
DeveloperProject developerProject = codeGenerator.getDeveloperProject();
70+
CrySLConfiguration chosenConfig = TestUtils.createCrySLConfiguration(template, generatedPackage.getResource(),
71+
codeGenerator, developerProject);
72+
73+
// run code generation
74+
boolean encCheck = codeGenerator.generateCodeTemplates(chosenConfig, "");
75+
76+
assertTrue(encCheck); // check if code generation is successful
77+
assertTrue(TestUtils.packageExists(generatedProject, Constants.PackageNameAsName)); // check if package is created
78+
79+
ICompilationUnit encClass = TestUtils.getICompilationUnit(developerProject, Constants.PackageNameAsName,
80+
"SecureEncryptor.java");
81+
assertNotNull(encClass); // check if SecureEncryptor.java is created
82+
83+
ICompilationUnit outputClass = TestUtils.getICompilationUnit(developerProject, Constants.PackageNameAsName,
84+
"Output.java");
85+
assertNotNull(outputClass); // check if Output.java is created
86+
}
87+
88+
// /**
89+
// * Case three: user selects one of his own classes.
90+
// * @throws Exception
91+
// */
92+
// @Test
93+
// public void ownClassSelection() throws Exception{
94+
//
95+
// }
96+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package de.cognicrypt.codegenerator.generator.test;
2+
3+
public class Constants {
4+
public static final String PROJECT_NAME = "TestProject";
5+
public static final String PACKAGE_NAME = "testPackage";
6+
public static final String CLASS_NAME = "Test";
7+
public static final String JAVA_CLASS_NAME = "Test.java";
8+
public static final String PackageNameAsName = "de.cognicrypt.crypto";
9+
}

plugins/de.cognicrypt.codegenerator.tests/src/de/cognicrypt/codegenerator/generator/test/CrySLCodeGenTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
public class CrySLCodeGenTest {
3333

3434
@Test
35-
public void generateSymEnc() throws IOException {
35+
public void generateSymEnc() {
3636
String template = "secretkeyencryption";
3737
try {
3838
IResource targetFile = TestUtils.generateJavaClassInJavaProject(TestUtils.createJavaProject("TestProject_SYMENC"), "testPackage", "Test");
@@ -60,6 +60,9 @@ public void generateSymEnc() throws IOException {
6060
catch (CoreException e) {
6161
Activator.getDefault().logError(e, "Failed to create test project or to retrieve compilation unit.");
6262
}
63+
catch (IOException e) {
64+
Activator.getDefault().logError(e, "Reading of at least one CrySL rule failed.");
65+
}
6366

6467
}
6568

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package de.cognicrypt.codegenerator.generator.test;
2+
3+
import static org.junit.Assert.assertTrue;
4+
5+
import java.io.IOException;
6+
import java.util.logging.Logger;
7+
8+
import org.eclipse.core.resources.IResource;
9+
import org.eclipse.core.runtime.CoreException;
10+
import org.eclipse.jdt.core.ICompilationUnit;
11+
import org.eclipse.jdt.core.IJavaProject;
12+
import org.junit.After;
13+
import org.junit.Before;
14+
import org.junit.Test;
15+
16+
import de.cognicrypt.codegenerator.generator.CodeGenerator;
17+
import de.cognicrypt.codegenerator.generator.CrySLBasedCodeGenerator;
18+
import de.cognicrypt.codegenerator.tasks.Task;
19+
import de.cognicrypt.codegenerator.testutilities.TestUtils;
20+
import de.cognicrypt.codegenerator.generator.test.Constants;
21+
import de.cognicrypt.codegenerator.wizard.Configuration;
22+
import de.cognicrypt.utils.DeveloperProject;
23+
24+
/**
25+
* @author Shahrzad Asghari
26+
*/
27+
public class DigitalSignaturesCodeGenTest {
28+
private Logger log = Logger.getLogger(DigitalSignaturesCodeGenTest.class.getName());
29+
private IJavaProject testJavaProject;
30+
private CodeGenerator generatorDigSignature;
31+
private Task digSignatureTask;
32+
private Configuration configDigSignature;
33+
private DeveloperProject developerProject;
34+
private IResource targetFile;
35+
36+
@After
37+
public void tearDown() throws CoreException {
38+
TestUtils.deleteProject(this.testJavaProject.getProject());
39+
}
40+
41+
@Before
42+
public void setUp() throws Exception {
43+
this.testJavaProject = TestUtils.createJavaProject(Constants.PROJECT_NAME);
44+
targetFile = TestUtils.generateJavaClassInJavaProject(this.testJavaProject, Constants.PACKAGE_NAME,
45+
Constants.CLASS_NAME);
46+
this.digSignatureTask = TestUtils.getTask("DigitalSignatures");
47+
this.generatorDigSignature = new CrySLBasedCodeGenerator(targetFile);
48+
this.developerProject = this.generatorDigSignature.getDeveloperProject();
49+
}
50+
51+
@Test
52+
public void testCodeGenerationDigSignatures() throws CoreException, IOException {
53+
final ICompilationUnit testClassUnit = TestUtils.getICompilationUnit(this.developerProject,
54+
Constants.PACKAGE_NAME, Constants.JAVA_CLASS_NAME);
55+
TestUtils.openJavaFileInWorkspace(this.developerProject, Constants.PACKAGE_NAME, testClassUnit);
56+
57+
this.configDigSignature = TestUtils.createCrySLConfiguration("digitalsignatures", testClassUnit.getResource(),
58+
generatorDigSignature, this.developerProject);
59+
final boolean encCheck = this.generatorDigSignature.generateCodeTemplates(this.configDigSignature,
60+
this.digSignatureTask.getAdditionalResources());
61+
assertTrue(encCheck);
62+
}
63+
}

0 commit comments

Comments
 (0)