From b0529cab5597a1b34cec0ea845ceb1ad749e0c0a Mon Sep 17 00:00:00 2001 From: thuva4 Date: Mon, 30 Oct 2017 20:43:36 +0530 Subject: add simple e2e tests for PodsCotroller Change-Id: I9baa04ff062f36569c1e143014239931de64cf32 Signed-off-by: thuva4 --- .../tests/UI/e2e/podsControllerSpec.js | 188 +++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 utils/test/testapi/opnfv_testapi/tests/UI/e2e/podsControllerSpec.js (limited to 'utils/test/testapi/opnfv_testapi/tests/UI/e2e') diff --git a/utils/test/testapi/opnfv_testapi/tests/UI/e2e/podsControllerSpec.js b/utils/test/testapi/opnfv_testapi/tests/UI/e2e/podsControllerSpec.js new file mode 100644 index 000000000..66a57f2f2 --- /dev/null +++ b/utils/test/testapi/opnfv_testapi/tests/UI/e2e/podsControllerSpec.js @@ -0,0 +1,188 @@ +'use strict'; + +var mock = require('protractor-http-mock'); +var baseURL = "http://localhost:8000" +describe('testing the Pods page for anonymous user', function () { + + beforeEach(function(){ + mock([{ + request: { + path: '/api/v1/pods', + method: 'GET' + }, + response: { + data: { + pods: [{role: "community-ci", name: "test", owner: "testUser", details: "DemoDetails", mode: "metal", _id: "59f02f099a07c84bfc5c7aed", creation_date: "2017-10-25 11:58:25.926168"}] + } + } + }]); + }); + + it( 'should navigate to pods link ', function() { + browser.get(baseURL); + var podslink = element(by.linkText('Pods')).click(); + var EC = browser.ExpectedConditions; + browser.wait(EC.urlContains(baseURL+ '/#/pods'), 10000); + }); + + it('create button is not visible for anonymous user', function () { + browser.get(baseURL+'#/pods'); + var buttonCreate = element(by.buttonText('Create')); + expect(buttonCreate.isDisplayed()).toBeFalsy(); + }); + + it('filter button is visible for anonymous user', function () { + var buttonFilter = element(by.buttonText('Filter')); + expect(buttonFilter.isDisplayed()).toBe(true) + }); + + it('clear button is visible for anonymous user', function () { + var buttonClear = element(by.buttonText('Clear')); + expect(buttonClear.isDisplayed()).toBe(true) + }); + + it('Show results when click filter button', function () { + var buttonFilter = element(by.buttonText('Filter')); + buttonFilter.click(); + var pod = element(by.css('.show-pod')); + expect(pod.isPresent()).toBe(true); + }); + + it('Show results when click clear button', function () { + browser.get(baseURL+'#/pods'); + var buttonClear = element(by.buttonText('Clear')); + buttonClear.click(); + var pod = element(by.css('.show-pod')); + expect(pod.isPresent()).toBe(true); + }); + + it('If details is not shown then show details when click the link',function() { + expect(element(by.css('.show-pod.hidden')).isPresent()).toBe(true); + var podslink = element(by.linkText('test')).click(); + expect(element(by.css('.show-pod.hidden')).isPresent()).toBe(false); + }); + + it('If details is shown then hide details when click the link',function() { + expect(element(by.css('.show-pod.hidden')).isPresent()).toBe(false); + var podslink = element(by.linkText('test')).click(); + expect(element(by.css('.show-pod.hidden')).isPresent()).toBe(true); + }); + + it('If backend is not responding then show error when click filter button', function () { + browser.get(baseURL + '/#/pods'); + mock.teardown(); + var buttonFilter = element(by.buttonText('Filter')); + buttonFilter.click().then(function(){ + expect(element(by.css('.alert.alert-danger.ng-binding.ng-scope')).isDisplayed()).toBe(true); + }); + }); + +}); + +describe('testing the Pods page for authorized user', function () { + + beforeEach(function(){ + mock([ + { + request: { + path: '/api/v1/pods', + method: 'POST' + }, + response: { + data: { + href: baseURL+"/api/v1/pods/test" + } + } + }, + { + request: { + path: '/api/v1/pods', + method: 'POST', + data: { + name: 'test1', + details : 'DemoDetails', + role : 'community-ci', + mode : 'metal' + } + }, + response: { + status : 403 + } + }, + { + request: { + path: '/api/v1/profile', + method: 'GET' + }, + response: { + data: { + "fullname": "Test User", "_id": "79f82eey9a00c84bfhc7aed", "user": "testUser", "groups": ["opnfv-testapi-users"], "email": "testuser@test.com" + } + } + } + ]); + }); + + it('create button is visible for authorized user', function () { + browser.get(baseURL + '/#/pods'); + var buttonCreate = element(by.buttonText('Create')); + expect(buttonCreate.isDisplayed()).toBe(true); + }); + + it('Do not show error if input is acceptable', function () { + var name = element(by.model('ctrl.name')); + var details = element(by.model('ctrl.details')); + name.sendKeys('test'); + details.sendKeys('DemoDetails'); + var buttonCreate = element(by.buttonText('Create')); + buttonCreate.click().then(function(){ + expect(element(by.css('.alert.alert-danger.ng-binding.ng-scope')).isDisplayed()).toBe(false); + }); + }); + + it('Show error when user click the create button with a empty name', function () { + browser.get(baseURL+ '/#/pods'); + var details = element(by.model('ctrl.details')); + details.sendKeys('DemoDetails'); + var buttonCreate = element(by.buttonText('Create')); + buttonCreate.click(); + expect(element(by.cssContainingText(".alert","Name is missing.")).isDisplayed()).toBe(true); + }); + + it('Show error when user click the create button with an already existing name', function () { + browser.get(baseURL+ '/#/pods'); + var name = element(by.model('ctrl.name')); + var details = element(by.model('ctrl.details')); + name.sendKeys('test1'); + details.sendKeys('DemoDetails'); + var buttonCreate = element(by.buttonText('Create')); + buttonCreate.click(); + expect(element(by.cssContainingText(".alert","Error creating the new pod from server: Pod's name already exists")).isDisplayed()).toBe(true); + }); + + it('If backend is not responding then show error when user click the create button',function(){ + mock.teardown(); + mock([ + { + request: { + path: '/api/v1/profile', + method: 'GET' + }, + response: { + data: { + "fullname": "Test User", "_id": "79f82eey9a00c84bfhc7aed", "user": "testUser", "groups": ["opnfv-testapi-users"], "email": "testuser@test.com" + } + } + } + ]); + browser.get(baseURL+ '/#/pods'); + var name = element(by.model('ctrl.name')); + var details = element(by.model('ctrl.details')); + name.sendKeys('test'); + details.sendKeys('DemoDetails'); + var buttonCreate = element(by.buttonText('Create')); + buttonCreate.click().then(function(){ + expect(element(by.css('.alert.alert-danger.ng-binding.ng-scope')).isDisplayed()).toBe(true); + }); + }) +}); \ No newline at end of file -- cgit 1.2.3-korg