diff --git a/cypress/e2e/tests/migration/applicationinventory/analysis/analysis_default_mode.test.ts b/cypress/e2e/tests/migration/applicationinventory/analysis/analysis_default_mode.test.ts new file mode 100644 index 000000000..ee72dd37e --- /dev/null +++ b/cypress/e2e/tests/migration/applicationinventory/analysis/analysis_default_mode.test.ts @@ -0,0 +1,478 @@ +/* +Copyright © 2021 the Konveyor Contributors (https://konveyor.io/) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/// + +import { + login, + getRandomApplicationData, + getRandomAnalysisData, + writeMavenSettingsFile, + resetURL, +} from "../../../../../utils/utils"; +import * as data from "../../../../../utils/data_utils"; +import { Analysis } from "../../../../models/migration/applicationinventory/analysis"; +import { AnalysisStatuses, CredentialType, UserCredentials } from "../../../../types/constants"; +//import { CredentialsSourceControlUsername } from "../../../../models/administration/credentials/credentialsSourceControlUsername"; +import { CredentialsMaven } from "../../../../models/administration/credentials/credentialsMaven"; +import { MavenConfiguration } from "../../../../models/administration/repositories/maven"; +//let source_credential: CredentialsSourceControlUsername; +let maven_credential: CredentialsMaven; +const mavenConfiguration = new MavenConfiguration(); +let application: Analysis; + +describe(["@tier1"], "Binary Analysis", () => { + before("Login", function () { + login(); + + // Clears artifact repository + mavenConfiguration.clearRepository(); + + //Create source and maven credentials required for analysis + // source_credential = new CredentialsSourceControlUsername( + // data.getRandomCredentialsData( + // CredentialType.sourceControl, + // UserCredentials.usernamePassword, + // true + // ) + // ); + // source_credential.create(); + + maven_credential = new CredentialsMaven( + data.getRandomCredentialsData(CredentialType.maven, "None", true) + ); + maven_credential.create(); + }); + + beforeEach("Load data", function () { + cy.fixture("application").then(function (appData) { + this.appData = appData; + }); + cy.fixture("analysis").then(function (analysisData) { + this.analysisData = analysisData; + }); + + cy.intercept("GET", "/hub/application*").as("getApplication"); + }); + + it("Binary Analysis", function () { + // For binary analysis application must have group,artifcat and version. + application = new Analysis( + getRandomApplicationData("tackletestApp_binary", { + binaryData: this.appData["tackle-testapp-binary"], + }), + getRandomAnalysisData(this.analysisData["binary_analysis_on_tackletestapp"]) + ); + application.create(); + cy.wait("@getApplication"); + cy.wait(2000); + // Both source and maven credentials required for binary. + //application.manageCredentials(source_credential.name, maven_credential.name); + application.analyze(); + application.verifyAnalysisStatus(AnalysisStatuses.completed); + application.verifyEffort(this.analysisData["binary_analysis_on_tackletestapp"]["effort"]); + }); + + afterEach("Persist session", function () { + resetURL(); + }); + + after("Perform test data clean up", function () { + // application.delete(); + // source_credential.delete(); + // maven_credential.delete(); + + // writeMavenSettingsFile(data.getRandomWord(5), data.getRandomWord(5)); + }); +}); + + +/* +Copyright © 2021 the Konveyor Contributors (https://konveyor.io/) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/// + +import { + deleteByList, +} from "../../../../../utils/utils"; +import { + SEC, +} from "../../../../types/constants"; +import { CredentialsSourceControlUsername } from "../../../../models/administration/credentials/credentialsSourceControlUsername"; +import { CredentialsSourceControlKey } from "../../../../models/administration/credentials/credentialsSourceControlKey"; +import { Application } from "../../../../models/migration/applicationinventory/application"; +import { AppIssue } from "../../../../types/types"; +let applicationsList: Array = []; + +describe(["@tier1"], "Source Analysis", () => { + before("Login", function () { + login(); + + // Create Maven credentials + maven_credential = new CredentialsMaven( + data.getRandomCredentialsData(CredentialType.maven, null, true) + ); + maven_credential.create(); + }); + + beforeEach("Load data", function () { + cy.fixture("application").then(function (appData) { + this.appData = appData; + }); + cy.fixture("analysis").then(function (analysisData) { + this.analysisData = analysisData; + }); + + // Interceptors + cy.intercept("POST", "/hub/application*").as("postApplication"); + cy.intercept("GET", "/hub/application*").as("getApplication"); + Application.open(true); + }); + + it("Source + dependencies analysis on tackletest app", function () { + // Source code analysis require both source and maven credentials + const application = new Analysis( + getRandomApplicationData("tackleTestApp_Source+dependencies", { + sourceData: this.appData["tackle-testapp-git"], + }), + getRandomAnalysisData(this.analysisData["source+dep_analysis_on_tackletestapp"]) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + application.verifyEffort( + this.analysisData["source+dep_analysis_on_tackletestapp"]["effort"] + ); + }); + + it("Source + dependencies analysis on daytrader app", function () { + // Automate bug https://issues.redhat.com/browse/TACKLE-721 + const application = new Analysis( + getRandomApplicationData("dayTraderApp_Source+dependencies", { + sourceData: this.appData["daytrader-app"], + }), + getRandomAnalysisData(this.analysisData["source+dep_analysis_on_daytrader-app"]) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + }); + + it("Analysis on daytrader app with maven credentials", function () { + // Automate bug https://issues.redhat.com/browse/TACKLE-751 + const application = new Analysis( + getRandomApplicationData("dayTraderApp_MavenCreds", { + sourceData: this.appData["daytrader-app"], + }), + getRandomAnalysisData(this.analysisData["source+dep_analysis_on_daytrader-app"]) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.manageCredentials(null, maven_credential.name); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + }); + + it("Source Analysis on tackle testapp", function () { + // For tackle test app source credentials are required. + const application = new Analysis( + getRandomApplicationData("tackleTestApp_Source", { + sourceData: this.appData["tackle-testapp-git"], + }), + getRandomAnalysisData(this.analysisData["analysis_for_enableTagging"]) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + }); + + it("Analysis on tackle test app with ssh credentials", function () { + // Automate bug https://issues.redhat.com/browse/TACKLE-707 + const scCredsKey = new CredentialsSourceControlKey( + data.getRandomCredentialsData( + CredentialType.sourceControl, + UserCredentials.sourcePrivateKey + ) + ); + scCredsKey.create(); + const application = new Analysis( + getRandomApplicationData("tackleTestApp_sshCreds", { + sourceData: this.appData["tackle-testapp-ssh"], + }), + getRandomAnalysisData(this.analysisData["analysis_for_enableTagging"]) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.manageCredentials(scCredsKey.name, null); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + }); + + it("Analysis for known Open Source libraries on tackleTest app", function () { + // Source code analysis require both source and maven credentials + const application = new Analysis( + getRandomApplicationData("tackleTestApp_Source+knownLibraries", { + sourceData: this.appData["tackle-testapp-git"], + }), + getRandomAnalysisData(this.analysisData["analysis_for_openSourceLibraries"]) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + }); + + it("Automated tagging using Source Analysis on tackle testapp", function () { + // Automates Polarion MTA-208 + const application = new Analysis( + getRandomApplicationData("tackleTestApp_Source_autoTagging", { + sourceData: this.appData["tackle-testapp-git"], + }), + getRandomAnalysisData(this.analysisData["analysis_for_enableTagging"]) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + application.applicationDetailsTab("Tags"); + application.tagAndCategoryExists( + this.analysisData["analysis_for_enableTagging"]["techTags"] + ); + application.closeApplicationDetails(); + }); + + it("Bug MTA-3418: Disable Automated tagging using Source Analysis on tackle testapp", function () { + // Automates Polarion MTA-307 + const application = new Analysis( + getRandomApplicationData("bookserverApp_Disable_autoTagging", { + sourceData: this.appData["bookserver-app"], + }), + getRandomAnalysisData(this.analysisData["analysis_for_disableTagging"]) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + application.verifyEffort(this.analysisData["analysis_for_disableTagging"]["effort"]); + application.applicationDetailsTab("Tags"); + cy.get("h2", { timeout: 5 * SEC }).should("contain", "No tags available"); + }); + + it("Analysis for Konveyor example1 application", function () { + // Automates https://github.com/konveyor/example-applications/tree/main/example-1 + const application = new Analysis( + getRandomApplicationData("Example 1", { + sourceData: this.appData["konveyor-exampleapp"], + }), + getRandomAnalysisData(this.analysisData["analysis_on_example-1-app"]) + ); + cy.wait(2 * SEC); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + // Polarion TC 406 + application.verifyEffort(this.analysisData["analysis_on_example-1-app"]["effort"]); + }); + + it("Bug MTA-2916: JWS6 target Source + deps analysis on tackletest app", function () { + // Source code analysis require both source and maven credentials + const application = new Analysis( + getRandomApplicationData("tackleTestApp_Source+dependencies_jws6", { + sourceData: this.appData["tackle-testapp-git"], + }), + getRandomAnalysisData(this.analysisData["jws6_source+dep_analysis_on_tackletestapp"]) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + application.verifyEffort( + this.analysisData["jws6_source+dep_analysis_on_tackletestapp"]["effort"] + ); + }); + + it("Bug MTA-2916: Openjdk17 Source + dependencies analysis on tackletest app", function () { + const application = new Analysis( + getRandomApplicationData("tackleTestApp_Source+dependencies_openjdk17", { + sourceData: this.appData["tackle-testapp-git"], + }), + getRandomAnalysisData( + this.analysisData["openJDK17_source+dep_analysis_on_tackletestapp"] + ) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + application.verifyEffort( + this.analysisData["openJDK17_source+dep_analysis_on_tackletestapp"]["effort"] + ); + }); + + it("Bug MTA-2916: OpenJDK21 Source + dependencies analysis on daytrader app", function () { + const application = new Analysis( + getRandomApplicationData("dayTraderApp_Source+dependencies_openjdk21", { + sourceData: this.appData["daytrader-app"], + }), + getRandomAnalysisData(this.analysisData["openJDK21_source+dep_analysis_on_dayTrader"]) + ); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + application.verifyEffort( + this.analysisData["openJDK21_source+dep_analysis_on_dayTrader"]["effort"] + ); + }); + + // Automates customer bug MTA-1785 + it("JDK<11 Source + dependencies analysis on tackle app public", function () { + const application = new Analysis( + getRandomApplicationData("tackle testapp public jdk 9", { + sourceData: this.appData["tackle-testapp-public-jdk9"], + }), + getRandomAnalysisData(this.analysisData["jdk9_source_dep_analysis_on_tackletestapp"]) + ); + Application.open(); + application.create(); + application.manageCredentials(null, maven_credential.name); + applicationsList.push(application); + cy.wait("@getApplication"); + cy.wait(2 * SEC); + application.analyze(); + application.verifyAnalysisStatus(AnalysisStatuses.completed); + }); + + // Automates bug MTA-3422 + it("4 targets source analysis on tackle app public", function () { + const application = new Analysis( + getRandomApplicationData("tackle-public-4-targets", { + sourceData: this.appData["tackle-testapp-public"], + }), + getRandomAnalysisData(this.analysisData["tackle-testapp-public-4-targets"]) + ); + cy.wait(2 * SEC); + Application.open(); + application.create(); + applicationsList.push(application); + cy.wait(5 * SEC); + application.analyze(); + application.verifyAnalysisStatus("Completed"); + application.verifyEffort(this.analysisData["tackle-testapp-public-4-targets"]["effort"]); + }); + + // Automates customer bug MTA-2973 + it("Bug MTA-3163: Source analysis on tackle app public with custom rule", function () { + const applicationList = [ + new Analysis( + getRandomApplicationData("tackle-public-customRule", { + sourceData: this.appData["tackle-testapp-public"], + }), + getRandomAnalysisData(this.analysisData["tackle-testapp-public-customRule"]) + ), + ]; + + // Analysis application with maven credential + cy.wait(2 * SEC); + Application.open(); + applicationList[0].create(); + applicationList[0].manageCredentials(null, maven_credential.name); + applicationsList.push(applicationList[0]); + cy.wait(5 * SEC); + applicationList[0].analyze(); + applicationList[0].verifyAnalysisStatus("Completed"); + applicationList[0].validateIssues( + this.analysisData["tackle-testapp-public-customRule"]["issues"] + ); + this.analysisData["tackle-testapp-public-customRule"]["issues"].forEach( + (currentIssue: AppIssue) => { + applicationList[0].validateAffected(currentIssue); + } + ); + + // Analysis application without maven credential + cy.wait(2 * SEC); + Application.open(); + applicationList[1].create(); + applicationsList.push(applicationList[0]); + cy.wait(5 * SEC); + applicationList[1].analyze(); + applicationList[1].verifyAnalysisStatus("Completed"); + applicationList[1].validateIssues( + this.analysisData["tackle-testapp-public-customRule"]["issues"] + ); + this.analysisData["tackle-testapp-public-customRule"]["issues"].forEach( + (currentIssue: AppIssue) => { + applicationList[1].validateAffected(currentIssue); + } + ); + }); + + after("Perform test data clean up", function () { + deleteByList(applicationsList); + writeMavenSettingsFile(data.getRandomWord(5), data.getRandomWord(5)); + }); +}); diff --git a/cypress/e2e/tests/migration/applicationinventory/applications/language_discovery.test.ts b/cypress/e2e/tests/migration/applicationinventory/applications/language_discovery.test.ts index ffb323eb8..46b8e84af 100644 --- a/cypress/e2e/tests/migration/applicationinventory/applications/language_discovery.test.ts +++ b/cypress/e2e/tests/migration/applicationinventory/applications/language_discovery.test.ts @@ -33,6 +33,33 @@ describe(["@tier2"], "Test if application language is discovered and tagged corr login(); }); +<<<<<<< HEAD + beforeEach("Load Data", function () { + cy.fixture("application").then(function (appData) { + this.appData = appData; + }); + }); + + it("Application written in java with maven tooling and quarkus framework", function () { + // Automates Polarion MTA-586 + + const sectionsTags = { + Language: ["Java"], + Tooling: ["Maven"], + Framework: ["Quarkus"], + }; + const application = new Application( + getRandomApplicationData("Java_language_maven_tooling_quarkus_framework", { + sourceData: this.appData["Java_language_maven_tooling_quarkus_framework"], + }) + ); + application.create(); + applicationList.push(application); + cy.wait(2 * SEC); + sidedrawerTab("Java_language_maven_tooling_quarkus_framework", "Tags"); + cy.contains("No tags available", { timeout: 60 * SEC }).should("not.exist"); + assertTagsInSection(sectionsTags); +======= languageDiscoveryData.forEach((data) => { it(`test ${data.name.split("-").join(" ")}`, function () { // Automates TCs 582, 583, 584, 585, 585, 586, 587 @@ -55,6 +82,30 @@ describe(["@tier2"], "Test if application language is discovered and tagged corr }); }); + afterEach("Persist session", function () { + Application.open(true); +>>>>>>> 770d99d305e231bb9c4c5952e54bbbe6f6b3bc03 + }); + + it("Application written in java and typescript with Maven and NodeJS tooling ", function () { + // Automates Polarion MTA-582 + const sectionsTags = { + Language: ["Java", "TypeScript"], + Tooling: ["Maven", "NodeJs", "Node.js"], + }; + const application = new Application( + getRandomApplicationData("Java_TS_language_maven_nodeJS_tooling", { + sourceData: this.appData["Java_TS_language_maven_nodeJS_tooling"], + }) + ); + application.create(); + applicationList.push(application); + cy.wait(2 * SEC); + sidedrawerTab("Java_TS_language_maven_nodeJS_tooling", "Tags"); + cy.contains("No tags available", { timeout: 60 * SEC }).should("not.exist"); + assertTagsInSection(sectionsTags); + }); + afterEach("Persist session", function () { Application.open(true); }); diff --git a/cypress/fixtures/application.json b/cypress/fixtures/application.json index e04fed79d..a40440723 100644 --- a/cypress/fixtures/application.json +++ b/cypress/fixtures/application.json @@ -64,6 +64,17 @@ "sourceRepo": "https://github.com/konveyor/tackle-testapp-public", "branch": "feature/test-java9-removed-packagek" }, +<<<<<<< HEAD + "Java_language_maven_tooling_quarkus_framework": { + "repoType": "Git", + "sourceRepo": "https://github.com/quarkusio/quarkus-super-heroes" + }, + "Java_TS_language_maven_nodeJS_tooling": { + "repoType": "Git", + "sourceRepo": "https://github.com/pkaul/maven-typescript-example" + }, +======= +>>>>>>> 770d99d305e231bb9c4c5952e54bbbe6f6b3bc03 "java-example-app": { "repoType": "Git", "sourceRepo": "https://github.com/ibraginsky/book-server"