external-auth.spec.ts 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { isExcludedBySharding, startWith } from './helpers/config'
  2. import { createProject } from './helpers/project'
  3. describe('SAML', function () {
  4. if (isExcludedBySharding('PRO_CUSTOM_1')) return
  5. const samlURL = Cypress.env('SAML_URL') || 'http://saml'
  6. startWith({
  7. pro: true,
  8. vars: {
  9. EXTERNAL_AUTH: 'saml',
  10. OVERLEAF_SAML_ENTRYPOINT: `${samlURL}/simplesaml/saml2/idp/SSOService.php`,
  11. OVERLEAF_SAML_CALLBACK_URL: `${Cypress.config().baseUrl}/saml/callback`,
  12. OVERLEAF_SAML_ISSUER: 'sharelatex-test-saml',
  13. OVERLEAF_SAML_IDENTITY_SERVICE_NAME: 'SAML Test Server',
  14. OVERLEAF_SAML_EMAIL_FIELD: 'email',
  15. OVERLEAF_SAML_FIRST_NAME_FIELD: 'givenName',
  16. OVERLEAF_SAML_LAST_NAME_FIELD: 'sn',
  17. OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN: 'true',
  18. OVERLEAF_SAML_CERT:
  19. 'MIIDXTCCAkWgAwIBAgIJAOvOeQ4xFTzsMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNVBAYTAkdCMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTYxMTE1MTQxMjU5WhcNMjYxMTE1MTQxMjU5WjBFMQswCQYDVQQGEwJHQjETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCT6MBe5G9VoLU8MfztOEbUhnwLp17ak8eFUqxqeXkkqtWB0b/cmIBU3xoQoO3dIF8PBzfqehqfYVhrNt/TFgcmDfmJnPJRL1RJWMW3VmiP5odJ3LwlkKbZpkeT3wZ8HEJIR1+zbpxiBNkbd2GbdR1iumcsHzMYX1A2CBj+ZMV5VijC+K4P0e9c05VsDEUtLmfeAasJAiumQoVVgAe/BpiXjICGGewa6EPFI7mKkifIRKOGxdRESwZZjxP30bI31oDN0cgKqIgSJtJ9nfCn9jgBMBkQHu42WMuaWD4jrGd7+vYdX+oIfArs9aKgAH5kUGhGdew2R9SpBefrhbNxG8QIDAQABo1AwTjAdBgNVHQ4EFgQU+aSojSyyLChP/IpZcafvSdhj7KkwHwYDVR0jBBgwFoAU+aSojSyyLChP/IpZcafvSdhj7KkwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEABl3+OOVLBWMKs6PjA8lPuloWDNzSr3v76oUcHqAb+cfbucjXrOVsS9RJ0X9yxvCQyfM9FfY43DbspnN3izYhdvbJD8kKLNf0LA5st+ZxLfy0ACyL2iyAwICaqndqxAjQYplFAHmpUiu1DiHckyBPekokDJd+ze95urHMOsaGS5RWPoKJVE0bkaAeZCmEu0NNpXRSBiuxXSTeSAJfv6kyE/rkdhzUKyUl/cGQFrsVYfAFQVA+W6CKOh74ErSEzSHQQYndl7nD33snD/YqdU1ROxV6aJzLKCg+sdj+wRXSP2u/UHnM4jW9TGJfhO42jzL6WVuEvr9q4l7zWzUQKKKhtQ==',
  20. },
  21. })
  22. it('login', function () {
  23. cy.visit('/')
  24. cy.findByText('Log in with SAML Test Server').click()
  25. cy.origin(samlURL, () => {
  26. cy.get('input[name="username"]').type('sally')
  27. cy.get('input[name="password"]').type('sally123')
  28. cy.get('button[type="submit"]').click()
  29. })
  30. cy.log('wait for login to finish')
  31. cy.url().should('contain', '/project')
  32. createProject('via SAML')
  33. })
  34. })
  35. describe('LDAP', function () {
  36. if (isExcludedBySharding('PRO_CUSTOM_1')) return
  37. startWith({
  38. pro: true,
  39. vars: {
  40. EXTERNAL_AUTH: 'ldap',
  41. OVERLEAF_LDAP_URL: 'ldap://ldap:389',
  42. OVERLEAF_LDAP_SEARCH_BASE: 'ou=people,dc=planetexpress,dc=com',
  43. OVERLEAF_LDAP_SEARCH_FILTER: '(uid={{username}})',
  44. OVERLEAF_LDAP_BIND_DN: 'cn=admin,dc=planetexpress,dc=com',
  45. OVERLEAF_LDAP_BIND_CREDENTIALS: 'GoodNewsEveryone',
  46. OVERLEAF_LDAP_EMAIL_ATT: 'mail',
  47. OVERLEAF_LDAP_NAME_ATT: 'cn',
  48. OVERLEAF_LDAP_LAST_NAME_ATT: 'sn',
  49. OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN: 'true',
  50. },
  51. })
  52. it('login', function () {
  53. cy.visit('/')
  54. cy.findByText('Log in LDAP')
  55. cy.get('input[name="login"]').type('fry')
  56. cy.get('input[name="password"]').type('fry')
  57. cy.get('button[type="submit"]').click()
  58. cy.log('wait for login to finish')
  59. cy.url().should('contain', '/project')
  60. createProject('via LDAP')
  61. })
  62. })