client_spec.rb 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. require 'spec_helper'
  2. require './lib/sidekiq/cloudwatch/client'
  3. require './lib/sidekiq/cloudwatch/metric/base'
  4. require 'rack/utils'
  5. describe Sidekiq::Cloudwatch::Client do
  6. let(:metric_class) { Sidekiq::Cloudwatch::Metric::Base }
  7. let(:metric) { metric_class.new }
  8. subject { described_class.new(metric) }
  9. describe "#put" do
  10. let(:request_body) { Rack::Utils.parse_query(WebMock.requests.last.body) }
  11. before do
  12. VCR.use_cassette(:aws_cloudwatch_put_metric_data) { subject.put }
  13. end
  14. it "should send put_metric_data request to AWS" do
  15. expect(request_body["Action"]).to(
  16. eq("PutMetricData")
  17. )
  18. expect(request_body["Namespace"]).to(
  19. eq(described_class::DEFAULT_NAMESPACE)
  20. )
  21. expect(request_body["MetricData.member.1.MetricName"]).to(
  22. eq(described_class::DEFAULT_METRIC_NAME)
  23. )
  24. expect(request_body["MetricData.member.1.Dimensions.member.1.Name"]).to(
  25. eq(described_class::DEFAULT_DIMENSION_NAME)
  26. )
  27. expect(request_body["MetricData.member.1.Dimensions.member.1.Value"]).to(
  28. eq(described_class::DEFAULT_DIMENSION_VALUE)
  29. )
  30. expect(request_body["MetricData.member.1.Dimensions.member.1.Name"]).to(
  31. eq(described_class::DEFAULT_DIMENSION_NAME)
  32. )
  33. expect(request_body["MetricData.member.1.Timestamp"]).not_to be_empty
  34. expect(request_body["MetricData.member.1.Value"]).to(
  35. eq(metric_class::DEFAULT_VALUE)
  36. )
  37. expect(request_body["MetricData.member.1.Unit"]).to(
  38. eq(described_class::METRIC_UNITS[metric_class::DEFAULT_UNIT])
  39. )
  40. expect(request_body["MetricData.member.1.Dimensions.member.1.Name"]).to(
  41. eq(described_class::DEFAULT_DIMENSION_NAME)
  42. )
  43. end
  44. end
  45. end