@@ -13,14 +13,8 @@ def validate(record)
1313 return
1414 end
1515
16- if contains_invalid_route_options? ( record . routes )
17- record . errors . add ( :routes , message : 'contains invalid route options' )
18- return
19- end
20-
21- return unless contains_invalid_lb_algo? ( record . routes )
22-
23- record . errors . add ( :routes , message : 'contains an invalid loadbalancing-algorithm option' )
16+ contains_invalid_route_options? ( record )
17+ contains_invalid_lb_algo? ( record )
2418 nil
2519 end
2620
@@ -32,23 +26,34 @@ def contains_non_route_hash_values?(routes)
3226 routes . any? { |r | !( r . is_a? ( Hash ) && r [ :route ] . present? ) }
3327 end
3428
35- def contains_invalid_route_options? ( routes )
29+ def contains_invalid_route_options? ( record )
30+ routes = record . routes
3631 routes . any? do |r |
3732 next unless r [ :options ]
3833
3934 return true unless r [ :options ] . is_a? ( Hash )
4035
4136 return false if r [ :options ] . empty?
4237
43- return r [ :options ] . keys . all? { |key | RouteOptionsMessage ::VALID_MANIFEST_ROUTE_OPTIONS . exclude? ( key ) }
38+ r [ :options ] . each_key do |key |
39+ RouteOptionsMessage ::VALID_MANIFEST_ROUTE_OPTIONS . exclude? ( key ) &&
40+ record . errors . add ( :base ,
41+ message : "Route '#{ r [ :route ] } ' contains invalid route option '#{ key } '. \
42+ Valid keys: '#{ RouteOptionsMessage ::VALID_MANIFEST_ROUTE_OPTIONS . join ( ', ' ) } '")
43+ end
4444 end
4545 end
4646
47- def contains_invalid_lb_algo? ( routes )
48- routes . any? do |r |
47+ def contains_invalid_lb_algo? ( record )
48+ routes = record . routes
49+ routes . each do |r |
4950 next unless r [ :options ] && r [ :options ] [ :'loadbalancing-algorithm' ]
5051
51- return true if r [ :options ] [ :'loadbalancing-algorithm' ] && RouteOptionsMessage ::VALID_LOADBALANCING_ALGORITHMS . exclude? ( r [ :options ] [ :'loadbalancing-algorithm' ] )
52+ lb_algo = r [ :options ] [ :'loadbalancing-algorithm' ]
53+ RouteOptionsMessage ::VALID_LOADBALANCING_ALGORITHMS . exclude? ( lb_algo ) &&
54+ record . errors . add ( :base ,
55+ message : "Route '#{ r [ :route ] } ' contains invalid load-balancing algorithm '#{ lb_algo } '. \
56+ Valid algorithms: '#{ RouteOptionsMessage ::VALID_LOADBALANCING_ALGORITHMS . join ( ', ' ) } '")
5257 end
5358 end
5459 end
0 commit comments