spec/outputs/charrington_spec.rb in logstash-output-charrington-0.3.13 vs spec/outputs/charrington_spec.rb in logstash-output-charrington-0.3.14
- old
+ new
@@ -25,10 +25,12 @@
}
CONFIG
end
it 'creates a table and inserts a record' do
+ drop_table('tracks')
+ create_tracks_table
drop_table('schemaless')
run_pipeline
expect(query('SELECT * FROM schemaless')).to match_array([{id: "1", app_name: "Web App", event: "schemaless", inserted_at: a_kind_of(String), :meta_type => "XML", :published_at => "2019-07-29 20:09:18"}])
expect(query('SELECT COUNT(1) FROM schemaless').first[:count]).to eq("1")
end
@@ -88,10 +90,12 @@
}
CONFIG
end
it 'creates a table and inserts the first record and alters the table for the second record' do
+ drop_table('tracks')
+ create_tracks_table
drop_table('metadata')
run_pipeline
expect(query('SELECT * FROM metadata')).to match_array([
{app_name: 'Web App', event: 'metadata', id: '1', inserted_at: a_kind_of(String), meta_file_name: nil, meta_type: 'XML'},
{app_name: 'Web App', event: 'metadata', id: '2', inserted_at: a_kind_of(String), meta_file_name: 'virus.pdf', meta_type: 'XML'}
@@ -121,10 +125,12 @@
}
CONFIG
end
it 'can insert into an existing table' do
+ drop_table('tracks')
+ create_tracks_table
# setup pre-existing data
drop_table('existing')
create_table('CREATE TABLE existing (id SERIAL PRIMARY KEY, inserted_at TIMESTAMP DEFAULT NOW(), app_name VARCHAR(255))')
insert("INSERT INTO existing (app_name) VALUES ('Not Agent')")
expect(query('SELECT * FROM existing')).to match_array([{id: "1", inserted_at: a_kind_of(String), app_name: "Not Agent"}])
@@ -162,10 +168,12 @@
}
CONFIG
end
it 'creates a table and inserts the first record and alters the table for the second record' do
+ drop_table('tracks')
+ create_tracks_table('dea_test')
create("CREATE SCHEMA IF NOT EXISTS #{schema}")
drop_table("#{schema}.from_agent")
run_pipeline
expect(query("SELECT * FROM #{schema}.from_agent")).to match_array([
{app_name: 'Web App', event: 'From Agent', id: '1', inserted_at: a_kind_of(String), meta_file_name: nil, meta_type: 'XML'},
@@ -208,11 +216,11 @@
describe 'a new payload with one event transformed to be redshift shape' do
let(:config) do
<<-CONFIG
input {
generator {
- message => '{"app_name": "Web App", "event": "schemaless", "meta": { "type": "XML" }, "published_at": "2019-07-29T20:09:18Z" }'
+ message => '{"app_name": "Web App", "event": "schemaless", "meta": { "type": "XML" }, "published_at": "2019-07-29T20:09:18Z", "user_id": "123", "user_uid": "456" }'
codec => 'json'
count => 1
}
}
@@ -226,15 +234,20 @@
}
CONFIG
end
it 'creates a table and inserts a record with data the shape of redshift' do
+ drop_table('tracks')
+ create_tracks_table
drop_table('schemaless')
run_pipeline
expect(query('SELECT * FROM schemaless')).to match_array([
- {:anonymous_id=>"", :app_name=>"Web App", :event=>"schemaless", :event_text=>"schemaless", :id=>a_kind_of(String), :original_timestamp=>a_kind_of(String), :received_at=>a_kind_of(String), :sent_at=>"2019-07-29 20:09:18", :timestamp=>a_kind_of(String), :type=>"XML", :uuid_ts=>a_kind_of(String)}
+ {:anonymous_id=>"", :app_name=>"Web App", :event=>"schemaless", :event_text=>"schemaless", :id=>a_kind_of(String), :original_timestamp=>a_kind_of(String), :received_at=>a_kind_of(String), :sent_at=>"2019-07-29 20:09:18", :timestamp=>a_kind_of(String), :type=>"XML", :user_id=>"123", :user_uid=>"456", :uuid_ts=>a_kind_of(String)}
])
expect(query('SELECT COUNT(1) FROM schemaless').first[:count]).to eq("1")
+ expect(query("SELECT * FROM tracks")).to match_array([
+ {:id=>a_kind_of(String), :anonymous_id=>"", :app_name=>"Web App", :context_campaign_content=>nil, :context_campaign_medium=>nil, :context_campaign_name=>nil, :context_campaign_source=>nil, :context_ip=>nil, :context_library_name=>nil, :context_library_version=>nil, :context_page_path=>nil, :context_page_referrer=>nil, :context_page_search=>nil, :context_page_title=>nil, :context_page_url=>nil, :context_user_agent=>nil, :event=>"schemaless", :event_text=>"schemaless", :original_timestamp=>nil, :received_at=>nil, :segment_dedupe_id=>nil, :sent_at=>a_kind_of(String), :timestamp=>nil, :user_id=>"123", :user_uid=>"456", :uuid=>nil, :uuid_ts=>a_kind_of(String)}
+ ])
end
end
end