tests/testthat/test-authenticated-s3HTTP.R

context("Authenticated s3HTTP tests")
requireNamespace("httr")

test_that("Simple GET bucket call to s3HTTP returns status code 200", {
r <- s3HTTP(verb = "GET", 
            bucket = 'hpk',
            region = "us-east-1",
            key = Sys.getenv("TRAVIS_AWS_ACCESS_KEY_ID"), 
            secret = Sys.getenv("TRAVIS_AWS_SECRET_ACCESS_KEY"),
            parse_response = FALSE)
  expect_equal(httr::status_code(r), 200L)
  
  r2 <- s3HTTP(verb = "GET", 
               bucket = 'hpk', 
               key = Sys.getenv("TRAVIS_AWS_ACCESS_KEY_ID"), 
               secret = Sys.getenv("TRAVIS_AWS_SECRET_ACCESS_KEY"))
  
})

test_that("GET bucket call to s3HTTP using query parameters", {
r2 <- s3HTTP(verb = "GET", 
            bucket = 'hpk', 
            query = list("max-keys" = "2", prefix="index"),
            key = Sys.getenv("TRAVIS_AWS_ACCESS_KEY_ID"), 
            secret = Sys.getenv("TRAVIS_AWS_SECRET_ACCESS_KEY"),
            parse_response = FALSE)
expect_equal(httr::status_code(r2), 200L)
})



test_that("Simple GET object call to s3HTTP returns code 200", {
  r <- s3HTTP(verb = "GET", 
              bucket = 'hpk',
              path = "/robots.txt",
              region = "us-east-1",
              key = Sys.getenv("TRAVIS_AWS_ACCESS_KEY_ID"), 
              secret = Sys.getenv("TRAVIS_AWS_SECRET_ACCESS_KEY"),
              parse_response = FALSE)
  expect_equal(httr::status_code(r), 200L)
  
  ## Should be response object even if we don't ask for parsing, since we cannot assume how to parse robots.txt
  r <- s3HTTP(verb = "GET", 
              bucket = 'hpk',
              path = "/robots.txt",
              region = "us-east-1",
              key = Sys.getenv("TRAVIS_AWS_ACCESS_KEY_ID"), 
              secret = Sys.getenv("TRAVIS_AWS_SECRET_ACCESS_KEY"))
  expect_equal(httr::status_code(r), 200L)
  

})


test_that("PUT works", {
  tmp <- tempfile(fileext = ".txt")
  writeLines(c("cloudyr", "test"), tmp)
  
  p <- s3HTTP(verb = "PUT",
    path = paste0("/", basename(tmp)),
    bucket = 'hpk', 
    headers = list(`Content-Length` = file.size(tmp)), 
    request_body = tmp,
    key = Sys.getenv("TRAVIS_AWS_ACCESS_KEY_ID"), 
    secret = Sys.getenv("TRAVIS_AWS_SECRET_ACCESS_KEY"),
    parse_response = FALSE
  )
  expect_equal(httr::status_code(p), 200L)
  
  p <- s3HTTP(verb = "DELETE",
              path = paste0("/", basename(tmp)),
              bucket = 'hpk', 
              key = Sys.getenv("TRAVIS_AWS_ACCESS_KEY_ID"), 
              secret = Sys.getenv("TRAVIS_AWS_SECRET_ACCESS_KEY"),
              parse_response = FALSE
  )
#  expect_equal(httr::status_code(p), 200L)
  
## Currently doesn't return a response object even when asked not to parse  
  expect_true(p) 
  unlink(tmp)  
  
  
})
cloudyr/aws.s3 documentation built on May 29, 2020, 7:18 p.m.