Class: AlignLogin
- Inherits:
-
AutomationFramework::Utilities
- Object
- AutomationFramework::Utilities
- AlignLogin
- Includes:
- Capybara::DSL
- Defined in:
- lib/oct_td_factory/helpers/align_login.rb
Instance Attribute Summary collapse
-
#token ⇒ Object
Returns the value of attribute token.
Instance Method Summary collapse
-
#get_logged_in_bearer_token ⇒ Object
def app @app ||= AutomationFramework::Application.instance end.
- #login(user, app_url = url) ⇒ Object
- #login_headless(user) ⇒ Object
- #logout ⇒ Object
- #password(user = 'TOPICS') ⇒ Object
- #re_enter_username?(user) ⇒ Boolean
- #set_headless_browser(screen_width = (ENV['SCREEN_WIDTH'] || '1600'), screen_height = (ENV['SCREEN_HEIGHT'] || '1200')) ⇒ Object
- #set_token(user) ⇒ Object
- #url(app = 'TOPICS') ⇒ Object
- #user_token(user) ⇒ Object
- #username(user) ⇒ Object
Instance Attribute Details
#token ⇒ Object
Returns the value of attribute token.
4 5 6 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 4 def token @token end |
Instance Method Details
#get_logged_in_bearer_token ⇒ Object
def app
@app ||= AutomationFramework::Application.instance
end
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 11 def get_logged_in_bearer_token = Capybara.current_session.driver.browser.manage.('align')[:value] align_sig = Capybara.current_session.driver.browser.manage.('align.sig')[:value] url = URI("#{ENV.fetch('TOPICS_URL')}/auth/token") http = Net::HTTP.new(url.host, url.port) http.use_ssl = (url.scheme == 'https') http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request['Cookie'] = "align=#{}; align.sig=#{align_sig}" response = http.request(request) JSON.parse(response.body)['accessToken'] end |
#login(user, app_url = url) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 25 def login(user, app_url = url) logout visit(app_url) find('#usernameField').set(username(user)) find('button[id=nextButton]').click has_css?('#usernameField') has_css?('#passwordField', wait: 1) find('#passwordField').set(password) find('#signInButton').click has_css?('.user-name', wait: 5) set_token(user) end |
#login_headless(user) ⇒ Object
38 39 40 41 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 38 def login_headless(user) set_headless_browser login(user) end |
#logout ⇒ Object
43 44 45 46 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 43 def logout visit("#{url}/logout") Capybara.current_session.driver.browser.manage. end |
#password(user = 'TOPICS') ⇒ Object
48 49 50 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 48 def password(user = 'TOPICS') ENV.fetch(user.upcase + '_PASSWORD') end |
#re_enter_username?(user) ⇒ Boolean
52 53 54 55 56 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 52 def re_enter_username?(user) return if page.find('input[id=usernameField]').value == username(user) fill_in 'usernameField', with: username(user) end |
#set_headless_browser(screen_width = (ENV['SCREEN_WIDTH'] || '1600'), screen_height = (ENV['SCREEN_HEIGHT'] || '1200')) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 58 def set_headless_browser(screen_width = (ENV['SCREEN_WIDTH'] || '1600'), screen_height = (ENV['SCREEN_HEIGHT'] || '1200')) Capybara.register_driver :selenium_chrome_headless do |app| o = Selenium::WebDriver::Chrome::Options .new(args: ['--headless', '--disable-gpu', '--no-sandbox', '--disable-dev-shm-usage', '--incognito', '--disable-notifications', "--window-size=#{screen_width},#{screen_height}"]) Capybara::Selenium::Driver.new(app, browser: :chrome, options: o) end Capybara.current_driver = :selenium_chrome_headless end |
#set_token(user) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 70 def set_token(user) if token.is_a?(Hash) token[user] = get_logged_in_bearer_token else self.token = { user => get_logged_in_bearer_token } end end |
#url(app = 'TOPICS') ⇒ Object
89 90 91 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 89 def url(app = 'TOPICS') ENV.fetch(app.upcase + '_URL') end |
#user_token(user) ⇒ Object
78 79 80 81 82 83 84 85 86 87 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 78 def user_token(user) if token.nil? || token.key?(user) == false login_headless(user) elsif JWT.decode(token[user], nil, false)[0]['exp'] > (Time.now + 60).to_i token[user] = token[user] else login_headless(user) end token[user] end |
#username(user) ⇒ Object
93 94 95 |
# File 'lib/oct_td_factory/helpers/align_login.rb', line 93 def username(user) ENV.fetch(user.upcase + '_USERNAME') end |