155 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { browser, element, by, $, $$ } from 'protractor';
 | |
| import { ManageTriggerViewObject } from '../../js/directives/ui/manage-trigger/manage-trigger.view-object';
 | |
| import { appHost } from '../protractor.conf';
 | |
| 
 | |
| 
 | |
| describe("Trigger Creation", () => {
 | |
|   const username = 'devtable';
 | |
|   const password = 'password';
 | |
|   var manageTriggerView: ManageTriggerViewObject = new ManageTriggerViewObject();
 | |
| 
 | |
|   beforeAll((done) => {
 | |
|     browser.waitForAngularEnabled(false);
 | |
| 
 | |
|     // Sign in
 | |
|     browser.get(appHost);
 | |
|     $$('a[href="/signin/"]').get(1).click();
 | |
|     $('#signin-username').sendKeys(username);
 | |
|     $('#signin-password').sendKeys(password);
 | |
|     element(by.partialButtonText('Sign in')).click();
 | |
|     browser.sleep(4000).then(() => done());
 | |
|   });
 | |
| 
 | |
|   afterAll(() => {
 | |
|     browser.waitForAngularEnabled(true);
 | |
|     // TODO(alecmerdler): Delete all created triggers
 | |
|   });
 | |
| 
 | |
|   describe("for custom git", () => {
 | |
| 
 | |
|     beforeAll(() => {
 | |
|       // Navigate to trigger setup
 | |
|       browser.get(`${appHost}/repository/devtable/simple?tab=builds`)
 | |
|     });
 | |
| 
 | |
|     it("can select custom git repository push as a trigger option", (done) => {
 | |
|       element(by.buttonText('Create Build Trigger')).click();
 | |
|       element(by.linkText('Custom Git Repository Push')).click();
 | |
|       browser.sleep(1000);
 | |
|       done();
 | |
|     });
 | |
| 
 | |
|     it("shows custom git repository section first", () => {
 | |
|       expect(manageTriggerView.sections['customrepo'].isDisplayed()).toBe(true);
 | |
|     });
 | |
| 
 | |
|     it("does not accept invalid custom git repository URL's", () => {
 | |
|       manageTriggerView.continue()
 | |
|         .then(() => fail('Should not accept empty input for repository URL'))
 | |
|         .catch(() => manageTriggerView.enterRepositoryURL('git@some'))
 | |
|         .then(() => manageTriggerView.continue())
 | |
|         .then(() => fail('Should not accept invalid input for repository URL'))
 | |
|         .catch(() => null);
 | |
|     });
 | |
| 
 | |
|     it("proceeds to Dockerfile location section when given valid URL", () => {
 | |
|       manageTriggerView.enterRepositoryURL('git@somegit.com:someuser/somerepo.git');
 | |
|       manageTriggerView.continue()
 | |
|         .then(() => {
 | |
|           expect(manageTriggerView.sections['dockerfilelocation'].isDisplayed()).toBe(true);
 | |
|         })
 | |
|         .catch(reason => fail(reason));
 | |
|     });
 | |
| 
 | |
|     it("does not accept Dockerfile location that does not end with a filename", () => {
 | |
|       manageTriggerView.enterDockerfileLocation('/')
 | |
|         .then(() => manageTriggerView.continue())
 | |
|         .then(() => fail('Should not accept Dockerfile location that does not end with a filename'))
 | |
|         .catch(() => null);
 | |
|     });
 | |
| 
 | |
|     it("does not provide Dockerfile location suggestions", () => {
 | |
|       manageTriggerView.getDockerfileSuggestions()
 | |
|         .then((results) => {
 | |
|           expect(results.length).toEqual(0);
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     it("proceeds to Docker context location section when given a valid Dockerfile location", () => {
 | |
|       manageTriggerView.enterDockerfileLocation('/Dockerfile')
 | |
|         .then(() => manageTriggerView.continue())
 | |
|         .then(() => {
 | |
|           expect(manageTriggerView.sections['contextlocation'].isDisplayed()).toBe(true);
 | |
|         })
 | |
|         .catch(reason => fail(reason));
 | |
|     });
 | |
| 
 | |
|     it("does not accept invalid Docker context", () => {
 | |
|       manageTriggerView.enterDockerContext('')
 | |
|         .then(() => manageTriggerView.continue())
 | |
|         .then(() => fail('Should not acccept invalid Docker context location'))
 | |
|         .catch(() => null);
 | |
|     });
 | |
| 
 | |
|     it("provides suggestions for Docker context based on Dockerfile location", () => {
 | |
|       manageTriggerView.getDockerContextSuggestions()
 | |
|         .then((results) => {
 | |
|           expect(results).toContain('/');
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     it("proceeds to robot selection section when given valid Docker context", () => {
 | |
|       manageTriggerView.enterDockerContext('/')
 | |
|         .then(() => manageTriggerView.continue())
 | |
|         .then(() => {
 | |
|           expect(manageTriggerView.sections['robot'].isDisplayed()).toBe(true);
 | |
|         })
 | |
|         .catch(reason => fail(reason));
 | |
|     });
 | |
| 
 | |
|     it("allows selection of optional robot account", () => {
 | |
|       manageTriggerView.selectRobotAccount(0)
 | |
|         .catch(reason => fail(reason));
 | |
|     });
 | |
| 
 | |
|     it("proceeds to verification section", () => {
 | |
|       manageTriggerView.continue()
 | |
|         .then(() => {
 | |
|           expect(manageTriggerView.sections['verification'].isDisplayed()).toBe(true);
 | |
|         })
 | |
|         .catch(reason => fail(reason));
 | |
|     });
 | |
| 
 | |
|     it("displays success message after creating the trigger", () => {
 | |
|       manageTriggerView.continue()
 | |
|         .then(() => {
 | |
|           browser.sleep(2000);
 | |
|           expect($('h3').getText()).toEqual('Trigger has been successfully activated');
 | |
|         })
 | |
|         .catch(reason => fail(reason));
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe("for githost", () => {
 | |
| 
 | |
|     beforeAll(() => {
 | |
|       // Navigate to trigger setup
 | |
|       browser.get(`${appHost}/repository/devtable/simple?tab=builds`);
 | |
|     });
 | |
| 
 | |
|     it("can select GitHub repository push as a trigger option", () => {
 | |
|       element(by.partialButtonText('Create Build Trigger')).click();
 | |
|       element(by.linkText('GitHub Repository Push')).click();
 | |
|     });
 | |
| 
 | |
|     it("redirects to GitHub login page for granting authentication", () => {
 | |
|       expect(browser.getCurrentUrl()).toContain('github.com');
 | |
| 
 | |
|       // TODO: Which credentials do we use to login to GitHub?
 | |
|     });
 | |
| 
 | |
|     xit("shows namespace select section first", () => {
 | |
|       expect(manageTriggerView.sections['namespace'].isDisplayed()).toBe(true);
 | |
|     });
 | |
|   });
 | |
| });
 |