diff --git a/src/main/webapp/app/login/login.component.html b/src/main/webapp/app/login/login.component.html index fa3e0d99c7fd9e8b99364abb086a3e09c6c7ebb0..7ff9675a940e2a2b974c6eba1ac3c5a8d13e9f9a 100644 --- a/src/main/webapp/app/login/login.component.html +++ b/src/main/webapp/app/login/login.component.html @@ -21,10 +21,16 @@ <br /> </div> </div> --> - <!-- <div style="padding: 20px"></div> --> + <h1 jhiTranslate="login.title" data-cy="loginTitle">Sign in using your local account</h1> <div> - <div class="alert alert-danger" *ngIf="authenticationError" jhiTranslate="login.messages.error.authentication" data-cy="loginError"> + <div + class="alert alert-danger" + *ngIf="authenticationError" + id="failedLogin" + jhiTranslate="login.messages.error.authentication" + data-cy="loginError" + > <strong>Failed to sign in!</strong> Please check your credentials and try again. </div> <form class="form" role="form" (ngSubmit)="login()" [formGroup]="loginForm"> @@ -73,7 +79,14 @@ </div> </div> - <button [disabled]="!contentEditable" type="submit" class="btn btn-primary" jhiTranslate="login.form.button" data-cy="submit"> + <button + [disabled]="!contentEditable" + id="submit" + type="submit" + class="btn btn-primary" + jhiTranslate="login.form.button" + data-cy="submit" + > Sign in </button> </form> diff --git a/src/test/java/at/ac/uibk/gitsearch/web/rest/StatisticsResourceIT.java b/src/test/java/at/ac/uibk/gitsearch/web/rest/StatisticsResourceIT.java index e03ccc351ee49e42a70cd32f783559b5f31a8a56..85542a5c2a0a8bb75175b40f356b7a7b2937e241 100644 --- a/src/test/java/at/ac/uibk/gitsearch/web/rest/StatisticsResourceIT.java +++ b/src/test/java/at/ac/uibk/gitsearch/web/rest/StatisticsResourceIT.java @@ -348,10 +348,15 @@ public class StatisticsResourceIT { //After the following call a new statistics entity for the exerciseID 143 should have been created because there exists a resource with this id in elastic search from stefan podlipnig restStatisticsMockMvc.perform(get("/api/statistics/exercise/{id}", "143").with(csrf().asHeader())).andExpect(status().isOk()); + //wait for the statistics to be created + Thread.sleep(1000); assertEquals(statisticsService.findOneByExerciseID("143").get().getExerciseID(), "143"); //Do the same call again to see if the statisticsService understood that the entity already exists and it only needs to increase the views restStatisticsMockMvc.perform(get("/api/statistics/exercise/{id}", "143").with(csrf().asHeader())).andExpect(status().isOk()); + + //wait for the statistics to be created + Thread.sleep(1000); assertEquals(statisticsService.findOneByExerciseID("143").get().getViews(), 2); //Test the search for an id which does not exist diff --git a/src/test/javascript/e2e/account/account.spec.ts b/src/test/javascript/e2e/account/account.spec.ts index b3366b6128e20407a1897dbca46ce710d56d827f..16ab640309ce2915611a3d7aefa012fb65274a47 100644 --- a/src/test/javascript/e2e/account/account.spec.ts +++ b/src/test/javascript/e2e/account/account.spec.ts @@ -1,6 +1,6 @@ import { browser, element, by, ExpectedConditions as ec } from 'protractor'; -import { NavBarPage, SignInPage, PasswordPage, SettingsPage } from '../page-objects/jhi-page-objects'; +import { NavBarPage, SignInPage } from '../page-objects/jhi-page-objects'; const expect = chai.expect; @@ -9,8 +9,6 @@ describe('account', () => { let signInPage: SignInPage; const username = process.env.E2E_USERNAME ?? 'admin'; const password = process.env.E2E_PASSWORD ?? 'search@admin'; - let passwordPage: PasswordPage; - let settingsPage: SettingsPage; before(async () => { await browser.get('/'); @@ -19,17 +17,19 @@ describe('account', () => { }); it('should fail to login with bad password', async () => { + browser.get('/login'); await browser.sleep(2000); - signInPage = await navBarPage.getSignInPage(); + signInPage = navBarPage.getSignInPage(); await signInPage.autoSignInUsing(username, 'foo'); const expect2 = 'login.messages.error.authentication'; - const value2 = await element(by.css('.alert-danger')).getAttribute('jhiTranslate'); + const value2 = await element(by.id('failedLogin')).getAttribute('jhiTranslate'); expect(value2).to.eq(expect2); }); it('should login successfully with admin account', async () => { - await browser.get('/'); - signInPage = await navBarPage.getSignInPage(); + browser.get('/login'); + await browser.sleep(2000); + signInPage = navBarPage.getSignInPage(); await signInPage.autoSignInUsing(username, password); const expect2 = 'home.logged.message'; await browser.wait(ec.visibilityOf(element(by.id('home-logged-message')))); @@ -37,78 +37,12 @@ describe('account', () => { expect(value2).to.eq(expect2); }); - it('should be able to update settings', async () => { - await navBarPage.clickOnAccountMenu(); - settingsPage = await navBarPage.getSettingsPage(); - - const expect1 = 'settings.title'; - const value1 = await settingsPage.getTitle(); - expect(value1).to.eq(expect1); - await settingsPage.save(); - const expect2 = 'settings.messages.success'; - const alert = element(by.id('success')); - const value2 = await alert.getAttribute('jhiTranslate'); - expect(value2).to.eq(expect2); - }); - - it('should fail to update password when using incorrect current password', async () => { - passwordPage = await navBarPage.getPasswordPage(); - expect(await passwordPage.getTitle()).to.eq('password.title'); - - await passwordPage.setCurrentPassword('wrong_current_password'); - await passwordPage.setPassword('new_password'); - await passwordPage.setConfirmPassword('new_password'); - await passwordPage.save(); - await browser.sleep(1000); - - const expect2 = 'password.messages.error'; - const alert = element(by.css('.alert-danger')); - const value2 = await alert.getAttribute('jhiTranslate'); - expect(value2).to.eq(expect2); - }); - - it('should be able to update password', async () => { - passwordPage = await navBarPage.getPasswordPage(); - - expect(await passwordPage.getTitle()).to.eq('password.title'); - await passwordPage.setCurrentPassword(password); - await passwordPage.setPassword('newpassword'); - await passwordPage.setConfirmPassword('newpassword'); - await passwordPage.save(); - await browser.sleep(1000); - - const successMsg = 'password.messages.success'; - const alert = element(by.css('.alert-success')); - const alertValue = await alert.getAttribute('jhiTranslate'); - expect(alertValue).to.eq(successMsg); - await navBarPage.autoSignOut(); - - signInPage = await navBarPage.getSignInPage(); - await signInPage.autoSignInUsing(username, 'newpassword'); - - // change back to default - await navBarPage.clickOnPasswordMenu(); - expect(await passwordPage.getTitle()).to.eq('password.title'); - await passwordPage.setCurrentPassword('newpassword'); - await passwordPage.setPassword(password); - await passwordPage.setConfirmPassword(password); - await passwordPage.save(); - await browser.sleep(1000); - - // wait for success message - const alertValue2 = await alert.getAttribute('jhiTranslate'); - expect(alertValue2).to.eq(successMsg); - }); - it('should navigate to 404 not found error page on non existing route and show user own navbar if valid authentication exists', async () => { // don't sign out and refresh page with non existing route await browser.get('/this-is-link-to-non-existing-page'); // should navigate to 404 not found page const url = await browser.getCurrentUrl(); expect(url).to.endWith('404'); - - // as user is admin then should show admin menu to user - await navBarPage.clickOnAdminMenu(); }); after(async () => { diff --git a/src/test/javascript/e2e/admin/administration.spec.ts b/src/test/javascript/e2e/admin/administration.spec.ts index 8f861233e958c6084425e2f097448b58535858af..632ecef9e477d62ceb4902661c358fbc897e82d7 100644 --- a/src/test/javascript/e2e/admin/administration.spec.ts +++ b/src/test/javascript/e2e/admin/administration.spec.ts @@ -10,11 +10,11 @@ describe('administration', () => { const username = process.env.E2E_USERNAME ?? 'admin'; const password = process.env.E2E_PASSWORD || 'search@admin'; before(async () => { - await browser.get('/'); + browser.get('/login'); await browser.sleep(2000); navBarPage = new NavBarPage(true); - signInPage = await navBarPage.getSignInPage(); + signInPage = navBarPage.getSignInPage(); await signInPage.autoSignInUsing(username, password); await browser.wait(ec.visibilityOf(navBarPage.adminMenu), 5000); }); diff --git a/src/test/javascript/e2e/entities/likes/likes.spec.ts b/src/test/javascript/e2e/entities/likes/likes.spec.ts index deec05313e54819df3bb9524834ff457cdfe025c..64642b6b8eba74c51c3ced6c7930474688cc912a 100644 --- a/src/test/javascript/e2e/entities/likes/likes.spec.ts +++ b/src/test/javascript/e2e/entities/likes/likes.spec.ts @@ -14,10 +14,10 @@ describe('Likes e2e test', () => { const password = process.env.E2E_PASSWORD ?? 'search@admin'; before(async () => { - await browser.get('/'); + browser.get('/login'); await browser.sleep(2000); navBarPage = new NavBarPage(); - signInPage = await navBarPage.getSignInPage(); + signInPage = navBarPage.getSignInPage(); await signInPage.autoSignInUsing(username, password); await browser.wait(ec.visibilityOf(navBarPage.entityMenu), 5000); await browser.sleep(1000); diff --git a/src/test/javascript/e2e/entities/saved-searches/saved-searches.spec.ts b/src/test/javascript/e2e/entities/saved-searches/saved-searches.spec.ts index 4e7f7d177b3cad3b264934864fc7ad0c66675f2c..b6565b0a6e6806d9cb6d494b14484137279447eb 100644 --- a/src/test/javascript/e2e/entities/saved-searches/saved-searches.spec.ts +++ b/src/test/javascript/e2e/entities/saved-searches/saved-searches.spec.ts @@ -14,17 +14,14 @@ describe('SavedSearches e2e test', () => { let signInPage: SignInPage; let savedSearchesComponentsPage: SavedSearchesComponentsPage; let savedSearchesUpdatePage: SavedSearchesUpdatePage; - /* let savedSearchesDeleteDialog: SavedSearchesDeleteDialog; */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars const username = process.env.E2E_USERNAME ?? 'admin'; - // eslint-disable-next-line @typescript-eslint/no-unused-vars const password = process.env.E2E_PASSWORD ?? 'search@admin'; before(async () => { - await browser.get('/'); + browser.get('/login'); await browser.sleep(2000); navBarPage = new NavBarPage(); - signInPage = await navBarPage.getSignInPage(); + signInPage = navBarPage.getSignInPage(); await signInPage.autoSignInUsing(username, password); await browser.wait(ec.visibilityOf(navBarPage.entityMenu), 5000); // await navBarPage.clickOnEntityMenu(); diff --git a/src/test/javascript/e2e/entities/statistics/statistics.spec.ts b/src/test/javascript/e2e/entities/statistics/statistics.spec.ts index 521bf636ae1a3b555041af41697c0bc0756d1beb..cb7f579d44dab9ab7b7a24d9eca9fafb19d34338 100644 --- a/src/test/javascript/e2e/entities/statistics/statistics.spec.ts +++ b/src/test/javascript/e2e/entities/statistics/statistics.spec.ts @@ -14,10 +14,10 @@ describe('Statistics e2e test', () => { const password = process.env.E2E_PASSWORD ?? 'search@admin'; before(async () => { - await browser.get('/'); + browser.get('/login'); await browser.sleep(2000); navBarPage = new NavBarPage(); - signInPage = await navBarPage.getSignInPage(); + signInPage = navBarPage.getSignInPage(); await signInPage.autoSignInUsing(username, password); await browser.wait(ec.visibilityOf(navBarPage.entityMenu), 5000); }); diff --git a/src/test/javascript/e2e/entities/user-watch-list/user-watch-list.spec.ts b/src/test/javascript/e2e/entities/user-watch-list/user-watch-list.spec.ts index c20eb23b27579561204276300ee4a5ef1e07a37a..0e442573d573e94d0cdc83c98a03d3b3b7d0405a 100644 --- a/src/test/javascript/e2e/entities/user-watch-list/user-watch-list.spec.ts +++ b/src/test/javascript/e2e/entities/user-watch-list/user-watch-list.spec.ts @@ -18,10 +18,10 @@ describe('UserWatchList e2e test', () => { const password = process.env.E2E_PASSWORD ?? 'search@admin'; before(async () => { - await browser.get('/'); + browser.get('/login'); await browser.sleep(2000); navBarPage = new NavBarPage(); - signInPage = await navBarPage.getSignInPage(); + signInPage = navBarPage.getSignInPage(); await signInPage.autoSignInUsing(username, password); await browser.wait(ec.visibilityOf(navBarPage.entityMenu), 5000); }); diff --git a/src/test/javascript/e2e/entities/watch-list-entry/watch-list-entry.spec.ts b/src/test/javascript/e2e/entities/watch-list-entry/watch-list-entry.spec.ts index 1edf13c0a0a9d751372add2e336d56b8324c5590..7ca5f677be78fdfa584a8accfb1d15ecd8e6791b 100644 --- a/src/test/javascript/e2e/entities/watch-list-entry/watch-list-entry.spec.ts +++ b/src/test/javascript/e2e/entities/watch-list-entry/watch-list-entry.spec.ts @@ -18,10 +18,10 @@ describe('WatchListEntry e2e test', () => { const password = process.env.E2E_PASSWORD ?? 'search@admin'; before(async () => { - await browser.get('/'); - await browser.sleep(3000); + browser.get('/login'); + await browser.sleep(2000); navBarPage = new NavBarPage(); - signInPage = await navBarPage.getSignInPage(); + signInPage = navBarPage.getSignInPage(); await signInPage.autoSignInUsing(username, password); await browser.wait(ec.visibilityOf(navBarPage.entityMenu), 5000); }); diff --git a/src/test/javascript/e2e/page-objects/jhi-page-objects.ts b/src/test/javascript/e2e/page-objects/jhi-page-objects.ts index afde63ebf51bd32a2f5730e4ced70a44bcf0b791..e4e3ddc372430603b0e92322bbfe220a06a6c1b7 100644 --- a/src/test/javascript/e2e/page-objects/jhi-page-objects.ts +++ b/src/test/javascript/e2e/page-objects/jhi-page-objects.ts @@ -76,39 +76,15 @@ export class NavBarPage { await element(by.css('[routerLink="admin/' + entityName + '"]')).click(); } - async getSignInPage(): Promise<SignInPage> { - await this.clickOnAccountMenu(); - await this.acceptDatapolicy(); + getSignInPage(): SignInPage { return new SignInPage(); } - async getPasswordPage(): Promise<PasswordPage> { - await this.clickOnAccountMenu(); - await this.clickOnPasswordMenu(); - return new PasswordPage(); - } - - async getSettingsPage(): Promise<SettingsPage> { - await this.clickOnAccountMenu(); - await this.clickOnSettingsMenu(); - return new SettingsPage(); - } - async goToEntity(entityName: string): Promise<void> { await this.clickOnEntityMenu(); await this.clickOnEntity(entityName); } - async goToSignInPage(): Promise<void> { - await this.clickOnAccountMenu(); - await this.clickOnSignIn(); - } - - async goToPasswordMenu(): Promise<void> { - await this.clickOnAccountMenu(); - await this.clickOnPasswordMenu(); - } - async autoSignOut(): Promise<void> { await this.clickOnAccountMenu(); await this.clickOnSignOut(); @@ -118,7 +94,8 @@ export class NavBarPage { export class SignInPage { username = element(by.id('username')); password = element(by.id('password')); - loginButton = element(by.id('submit_without_gitlab')); + loginButton = element(by.id('submit')); + privacyCheckbox = element(by.id('datapolicy2')); async setUserName(username: string): Promise<void> { await this.clearUserName(); @@ -153,105 +130,7 @@ export class SignInPage { } async login(): Promise<void> { + await this.privacyCheckbox.click(); await this.loginButton.click(); } } - -export class PasswordPage { - currentPassword = element(by.id('currentPassword')); - password = element(by.id('newPassword')); - confirmPassword = element(by.id('confirmPassword')); - saveButton = element(by.css('button[type=submit]')); - title = element.all(by.css('h2')).first(); - - async setCurrentPassword(password: string): Promise<void> { - await this.currentPassword.clear(); - await this.currentPassword.sendKeys(password); - } - - async setPassword(password: string): Promise<void> { - await this.password.clear(); - await this.password.sendKeys(password); - } - - async getPassword(): Promise<string> { - return this.password.getAttribute('value'); - } - - async clearPassword(): Promise<void> { - await this.password.clear(); - } - - async setConfirmPassword(confirmPassword: string): Promise<void> { - await this.confirmPassword.clear(); - await this.confirmPassword.sendKeys(confirmPassword); - } - - async getConfirmPassword(): Promise<string> { - return this.confirmPassword.getAttribute('value'); - } - - async clearConfirmPassword(): Promise<void> { - await this.confirmPassword.clear(); - } - - async getTitle(): Promise<string> { - return this.title.getAttribute('jhiTranslate'); - } - - async save(): Promise<void> { - await this.saveButton.click(); - } -} - -export class SettingsPage { - firstName = element(by.id('firstName')); - lastName = element(by.id('lastName')); - email = element(by.id('email')); - saveButton = element(by.id('saveSettings')); - title = element(by.id('title')); - - async setFirstName(firstName: string): Promise<void> { - await this.firstName.sendKeys(firstName); - } - - async getFirstName(): Promise<string> { - return this.firstName.getAttribute('value'); - } - - async clearFirstName(): Promise<void> { - await this.firstName.clear(); - } - - async setLastName(lastName: string): Promise<void> { - await this.lastName.sendKeys(lastName); - } - - async getLastName(): Promise<string> { - return this.lastName.getAttribute('value'); - } - - async clearLastName(): Promise<void> { - await this.lastName.clear(); - } - - async setEmail(email: string): Promise<void> { - await this.email.sendKeys(email); - } - - async getEmail(): Promise<string> { - return this.email.getAttribute('value'); - } - - async clearEmail(): Promise<void> { - await this.email.clear(); - } - - async getTitle(): Promise<string> { - return this.title.getAttribute('jhiTranslate'); - } - - async save(): Promise<void> { - await this.saveButton.click(); - } -} diff --git a/src/test/javascript/e2e/search/search.spec.ts b/src/test/javascript/e2e/search/search.spec.ts index 3df78aee659bc1d5ae4df0326083fb5483338671..b2d1ff9e9b34e282005857e51c749cb8c855cede 100644 --- a/src/test/javascript/e2e/search/search.spec.ts +++ b/src/test/javascript/e2e/search/search.spec.ts @@ -1,7 +1,7 @@ import { browser, element, by, ExpectedConditions as ec } from 'protractor'; // eslint-disable-next-line @typescript-eslint/no-unused-vars -import { NavBarPage, SignInPage, PasswordPage, SettingsPage } from '../page-objects/jhi-page-objects'; +import { NavBarPage, SignInPage } from '../page-objects/jhi-page-objects'; const expect = chai.expect; @@ -12,12 +12,13 @@ describe('search', () => { const password = process.env.E2E_PASSWORD || 'search@admin'; before(async () => { - await browser.get('/'); + browser.get('/login'); + await browser.sleep(2000); navBarPage = new NavBarPage(true); }); it('should display search page', async () => { - signInPage = await navBarPage.getSignInPage(); + signInPage = navBarPage.getSignInPage(); await signInPage.autoSignInUsing(username, password); const expect2 = 'home.logged.message';