Module: ALGOSEC_SDK::AreFlowsEqual

Defined in:
lib/algosec-sdk/helpers/flow_comparisons.rb

Overview

A module to determine if a local flow definition is equal to a flow defined on the server

Class Method Summary collapse

Class Method Details

.are_apps_equal_in_flow(application_names, server_flow_apps) ⇒ Object



25
26
27
28
29
30
31
32
# File 'lib/algosec-sdk/helpers/flow_comparisons.rb', line 25

def self.are_apps_equal_in_flow(application_names, server_flow_apps)
  return application_names == [] if server_flow_apps == [ANY_NETWORK_APPLICATION]
  flow_application_names = server_flow_apps.map do |network_application|
    network_application['name']
  end

  Set.new(application_names) == Set.new(flow_application_names)
end

.are_dest_equal_in_flow(dest_object_names, server_flow_dests) ⇒ Object



15
16
17
18
# File 'lib/algosec-sdk/helpers/flow_comparisons.rb', line 15

def self.are_dest_equal_in_flow(dest_object_names, server_flow_dests)
  flow_dest_object_names = Set.new(server_flow_dests.map { |dest| dest['name'] })
  Set.new(dest_object_names) == Set.new(flow_dest_object_names)
end

.are_services_equal_in_flow(service_names, server_flow_services) ⇒ Object



20
21
22
23
# File 'lib/algosec-sdk/helpers/flow_comparisons.rb', line 20

def self.are_services_equal_in_flow(service_names, server_flow_services)
  network_flow_service_names = Set.new(server_flow_services.map { |service| service['name'] })
  Set.new(service_names) == Set.new(network_flow_service_names)
end

.are_sources_equal_in_flow(source_object_names, server_flow_sources) ⇒ Object



10
11
12
13
# File 'lib/algosec-sdk/helpers/flow_comparisons.rb', line 10

def self.are_sources_equal_in_flow(source_object_names, server_flow_sources)
  flow_source_object_names = Set.new(server_flow_sources.map { |source| source['name'] })
  Set.new(source_object_names) == Set.new(flow_source_object_names)
end

.are_users_equal_in_flow(network_users, server_flow_users) ⇒ Object



34
35
36
37
38
# File 'lib/algosec-sdk/helpers/flow_comparisons.rb', line 34

def self.are_users_equal_in_flow(network_users, server_flow_users)
  return network_users == [] if server_flow_users == [ANY_OBJECT]
  flow_users = server_flow_users.map { |user| user['name'] }
  Set.new(network_users) == Set.new(flow_users)
end

.flows_equal?(new_flow, flow_from_server) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
43
44
45
46
47
48
# File 'lib/algosec-sdk/helpers/flow_comparisons.rb', line 40

def self.flows_equal?(new_flow, flow_from_server)
  [
    are_sources_equal_in_flow(new_flow['sources'], flow_from_server['sources']),
    are_dest_equal_in_flow(new_flow['destinations'], flow_from_server['destinations']),
    are_services_equal_in_flow(new_flow['services'], flow_from_server['services']),
    are_apps_equal_in_flow(new_flow.fetch('applications', []), flow_from_server.fetch('networkApplications', [])),
    are_users_equal_in_flow(new_flow.fetch('users', []), flow_from_server.fetch('networkUsers', []))
  ].all?
end