Best Vcr_ruby code snippet using Header.proceed
file.rb
Source:file.rb
...28 rescue DataError, QcMetric::InvalidValue => e29 invalid(e.message)30 raise ActiveRecord::Rollback31 end32 qc_report.proceed_decision! if @valid33 @valid34 end35 def valid? # rubocop:todo Metrics/MethodLength36 return invalid("#{filename} was not a csv file") unless is_a_csv?37 unless is_a_report?38 return(39 invalid(40 # rubocop:todo Layout/LineLength41 "#{filename} does not appear to be a qc report file. Make sure the #{FILE_VERSION_KEY} line has not been removed."42 # rubocop:enable Layout/LineLength43 )44 )45 end46 unless qc_report47 return(48 invalid(49 "Couldn't find the report #{report_identifier}. Check that the report identifier has not been modified."50 )51 )52 end53 true54 end55 # The report to which the file corresponds56 def qc_report57 @qc_report ||= QcReport.find_by(report_identifier: report_identifier)58 end59 # A hash of the header section60 def headers61 @headers || parse_headers62 end63 # The report identifier in the header section64 def report_identifier65 headers[REPORT_ID_KEY]66 end67 private68 def start_line69 return @start_line unless @start_line.nil?70 parse_headers71 @start_line72 end73 # In Ruby 2.6 the CSV parser loads in multiple lines at a time, and so takes74 # the IO past the header row when we initially read in the file. Here we75 # rewind the file and seek to the correct line with several gets.76 def body_csv77 return @body_csv unless @body_csv.nil?78 header_line = start_line79 @file.rewind80 header_line.times { @file.gets }81 @body_csv = CSV.new(@file, headers: :first_row, header_converters: [:symbol])82 end83 def each_group_of_decisions84 while (group = fetch_group) && group.present?85 yield group86 end87 end88 def fetch_group89 {}.tap do |asset_collection|90 GROUP_SIZE.times do91 line = body_csv.gets92 break if line.nil?93 asset_id = line[:asset_id].strip.to_i94 asset_collection[asset_id] = process_line(line)95 end96 end97 end98 def process_group(group) # rubocop:todo Metrics/AbcSize99 asset_ids = group.keys100 assets = qc_report.qc_metrics.with_asset_ids(asset_ids)101 if asset_ids.count != assets.length102 raise DataError, "Could not find assets #{(asset_ids - assets.map(&:id)).to_sentence}"103 end104 assets.each do |metric|105 metric.human_proceed = group[metric.asset_id][:proceed]106 metric.manual_qc_decision = group[metric.asset_id][:qc_decision] if @set_decision107 metric.save!108 end109 end110 def process_line(line)111 qc_decision = (line[:qc_decision] || '').strip112 proceed = (line[:proceed] || '').strip113 { qc_decision: qc_decision, proceed: proceed }114 end115 def invalid(message)116 errors << message117 @valid = false118 end119 # We do a bit of rough-and-ready processing before passing things over to FasterCSV120 # as it should be a bit faster to capture the most common problems (ie. uploading an xls)121 # The FasterCSV read-mes even indicate that its pretty poor at handling invalid CSVs.122 def is_a_csv?123 File.extname(filename).delete('.') == ACCEPTED_EXTENSTION || mime_type == ACCEPTED_MIMETYPE124 end125 def is_a_report?126 headers[FILE_VERSION_KEY].present?127 end...
message.rb
Source:message.rb
...7 val.gsub!(' ', '_') if val && val.start_with?('=?')8 default( :subject, val )9 header[:subject].default10 end11 def proceed(args = {})# result_type = 'html', configuration = nil12 decoded = _proceed(args[:configuration] || ActionMailerX509.default_configuration)13 proceed_part(decoded, args[:result_type] || 'html')14 end15 def method_missing(name, *args, &block)16 elems = name.to_s.split('_as_')17 if elems.size == 218 result = self.send(elems.first.to_sym, *args)19 if result.is_a? String20 convert(result, elems.last)21 elsif result.respond_to? :to_a22 result.to_a.map {|item| convert(item.to_s, elems.last)}23 else24 convert(result.to_s, elems.last)25 end26 end27 end28 def content29 parts.empty? ? to_part : body.encoded30 end31 def get_states32 {33 crypted: (body.to_s =~ /application\/(x-)?pkcs[0-9]+-mime/).present? || is_crypted?,34 signed: (body.to_s =~ /application\/(x-)?pkcs[0-9]+-signature/).present?35 }36 end37 protected38 # Returns true if the message is a multipart/alternative39 def alternative?(part)40 part.sub_type.downcase == 'alternative'41 end42 def split_on_parts(obj)43 obj.body.split!(obj.boundary) if obj.parts.blank? && obj.boundary.present?44 end45 def _proceed(configuration = nil)46 config = ActionMailerX509.get_configuration(configuration)47 if (signed = is_signed?) || is_crypted?48 raise Exception.new('Configuration is nil') unless config49 result = if signed50 config.get_signer.verify(patched_encoded)51 else52 config.get_crypter.decode(body.to_s)53 end54 if result && (mail = Mail.new(result)).valid?55 mail._proceed(configuration)56 end || result57 end || self58 end59 def proceed_part(part, result_type = 'html')60 #todo: not checked61 self.attachments += part.attachments if part != self && part.attachments.present?62 if part.multipart?63 if alternative?(part)64 variants = part.parts.each_with_object({}) {|p, res| res.update(p.sub_type => p)}65 @new_part = variants[result_type] || variants['html'] || variants['plain'] || part.first66 end67 _decode_body(result_type, @new_part || part)68 else69 part.decoded unless part.attachment?70 #unless part.attachment?71 # part.decoded72 #else73 # #content_type = part.header['Content-Type']74 # #content_disposition = part.header['Content-Disposition']75 # #content_encoding = part.header['Content-Transfer-Encoding']76 # #77 # #self.attachments[content_type.filename] = {mime_type: "#{content_type.main_type}/#{content_type.sub_type}",78 # # #encoding: 'SpecialEncoding',79 # # content: part.decoded }80 # nil81 #end82 end.to_s83 end84 # we need manually split body on parts and decode each part separate85 def _decode_body(result_type, obj = self)86 split_on_parts(obj)87 if obj.parts.present?88 proceed_parts = obj.parts.map {|part| proceed_part(part, result_type).force_encoding('utf-8')}89 proceed_parts.join(break_line(result_type))90 else91 obj.decoded92 end93 end94 def break_line(content_type)95 content_type == 'html' ? '<br>' : "\r\n"96 end97 def convert(text, encoding)98 text.force_encoding(encoding.dasherize)99 end100 def to_part101 part = Mail::Part.new((text = body.encoded))102 part.header[:content_type] = 'text/html' if text.index(/<\w+>/)103 part.header['Content-Transfer-Encoding'] = '8bit'...
woowoo_token_validation.rb
Source:woowoo_token_validation.rb
...20 :status_code=> JwtTokenValidationHelper::TOKEN_STATUS_CODE::INVALID,21 :status_text => JwtTokenValidationHelper::TOKEN_STATUS_TEXT::UNABLE_TO_VALIDATE22 }23 end24 # no need to proceed because unverfied token did not pass pre-checks --> access denied25 if !proceed_with_validation(payload, header)26 return {27 :status_code=> JwtTokenValidationHelper::TOKEN_STATUS_CODE::INVALID,28 :status_text => JwtTokenValidationHelper::TOKEN_STATUS_TEXT::UNABLE_TO_VALIDATE29 }30 end31 JwtTokenValidationHelper.validate(token, JWKS_ENDPOINT, ISS, header['kid'])32 end33 # ------------------------------------------------------------------------------------------------------------------34 def self.proceed_with_validation(payload, header)35 proceed = true36 if !payload || !header37 proceed = false38 end39 if header && header['alg'] != JwtTokenValidationHelper::ALG40 proceed = false41 end42 if payload && payload['iss'] != ISS43 proceed = false44 end45 if payload && payload['client_id'] != CLIENT_ID46 proceed = false47 end48 proceed49 end50 # ------------------------------------------------------------------------------------------------------------------51 end52end...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!