Arthur Poulet
f350c56e9c
All checks were successful
continuous-integration/drone/push Build is passing
150 lines
4.3 KiB
Ruby
150 lines
4.3 KiB
Ruby
require_relative "./base"
|
|
|
|
class Pex2SystemTest < LifePexTest
|
|
def setup
|
|
@fixture ||= FixtureReader.new # should be in startup
|
|
@fixture.apply! "user_base"
|
|
end
|
|
|
|
def cleanup
|
|
@fixture.cleanup!
|
|
end
|
|
|
|
private def login_as(username = "test", password = "test")
|
|
api_post '/api/user/v1/login', { username: username, password: password }
|
|
end
|
|
|
|
def test_pex_life_cycle
|
|
login_as
|
|
assert last_response.ok?
|
|
|
|
api_get "/api/pex/v2/pexs"
|
|
assert last_response.ok?
|
|
assert_empty api_reponse_body
|
|
|
|
pex_input = { name: "pex1", category: "cat1", amount: 1.23 }
|
|
api_post "/api/pex/v2/pexs", pex_input
|
|
assert last_response.ok?, "A new pex should have been added"
|
|
assert_message_exist
|
|
assert_hash_include pex_input, api_reponse_body["pex"]
|
|
assert_entity_owned api_reponse_body["pex"]
|
|
pex_id = api_reponse_body.dig "pex", "id"
|
|
|
|
api_get "/api/pex/v2/pexs"
|
|
assert last_response.ok?
|
|
assert_equal 1, api_reponse_body.size, "A new pex should exist"
|
|
|
|
api_get "/api/pex/v2/pexs/#{pex_id}"
|
|
assert last_response.ok?
|
|
assert_hash_include pex_input, api_reponse_body["pex"]
|
|
assert_entity_owned api_reponse_body["pex"]
|
|
|
|
api_get "/api/pex/v2/pexs/#{pex_id}/more"
|
|
assert last_response.ok?
|
|
assert_hash_include pex_input, api_reponse_body["pex"]
|
|
assert_entity_owned api_reponse_body["pex"]
|
|
end
|
|
|
|
def test_pex_errors
|
|
api_post "/api/pex/v2/pexs", { name: 'pex1', amount: 1.23 }
|
|
assert_client_error 401 # not connect
|
|
|
|
login_as
|
|
assert last_response.ok?
|
|
|
|
api_post "/api/pex/v2/pexs", { }
|
|
assert_client_error 400 # missing name
|
|
|
|
api_post "/api/pex/v2/pexs", { amount: 1.23 }
|
|
assert_client_error 400 # missing name
|
|
|
|
api_post "/api/pex/v2/pexs", { name: 'pex1' }
|
|
assert_client_error 400 # missing amount
|
|
|
|
api_post "/api/pex/v2/pexs", { name: 'pex1', amount: 1.23 }
|
|
api_post "/api/pex/v2/pexs", { name: 'pex1', amount: 1.23 }
|
|
assert_client_error # duplicate
|
|
end
|
|
|
|
def test_security
|
|
login_as "test"
|
|
assert last_response.ok?
|
|
|
|
api_post "/api/pex/v2/pexs", { name: 'pex1', amount: 1.23, category: "cat1" }
|
|
assert last_response.ok?
|
|
pex_id = api_reponse_body.dig "pex", "id"
|
|
|
|
login_as "testbis"
|
|
assert last_response.ok?
|
|
|
|
api_get "/api/pex/v2/pexs"
|
|
api_get "/api/pex/v2/pexs"
|
|
assert last_response.ok?
|
|
assert_empty api_reponse_body
|
|
|
|
api_get "/api/pex/v2/pexs/#{pex_id}"
|
|
assert_client_error
|
|
api_get "/api/pex/v2/pexs/#{pex_id}/more"
|
|
assert_client_error
|
|
api_put "/api/pex/v2/pexs/#{pex_id}", {}
|
|
assert_client_error
|
|
api_delete "/api/pex/v2/pexs/#{pex_id}"
|
|
assert_client_error
|
|
api_post "/api/pex/v2/pexs/#{pex_id}/recap", {}
|
|
assert_client_error
|
|
end
|
|
|
|
def test_pex_validation_and_counts
|
|
login_as
|
|
assert last_response.ok?
|
|
|
|
api_post "/api/pex/v2/pexs", { name: 'pex1', amount: 1.23, category: "cat1" }
|
|
assert last_response.ok?
|
|
pex_id = api_reponse_body.dig "pex", "id"
|
|
|
|
api_post "/api/pex/v2/pexs/#{pex_id}/recap", {}
|
|
assert last_response.ok?
|
|
assert_empty api_reponse_body["user_pexs"]
|
|
end
|
|
|
|
def test_pex_update
|
|
login_as
|
|
assert last_response.ok?
|
|
|
|
api_post "/api/pex/v2/pexs", { name: 'pex1', amount: 1.23, category: "cat1" }
|
|
assert last_response.ok?
|
|
pex_id = api_reponse_body.dig "pex", "id"
|
|
|
|
api_put "/api/pex/v2/pexs/#{pex_id}", { name: 'pex2', amount: 1.25 }
|
|
assert last_response.ok?
|
|
assert_equal pex_id, api_reponse_body.dig("pex", "id")
|
|
assert_equal "pex2", api_reponse_body.dig("pex", "name")
|
|
assert_equal 1.25, api_reponse_body.dig("pex", "amount")
|
|
assert_equal "cat1", api_reponse_body.dig("pex", "category")
|
|
end
|
|
|
|
def test_pex_delete
|
|
login_as
|
|
assert last_response.ok?
|
|
|
|
api_get "/api/pex/v2/pexs"
|
|
assert last_response.ok?
|
|
assert_equal 0, api_reponse_body.size, "No pex exist yet"
|
|
|
|
api_post "/api/pex/v2/pexs", { name: 'pex1', amount: 1.23, category: "cat1" }
|
|
assert last_response.ok?
|
|
pex_id = api_reponse_body.dig "pex", "id"
|
|
|
|
api_get "/api/pex/v2/pexs"
|
|
assert last_response.ok?
|
|
assert_equal 1, api_reponse_body.size, "A pex should exists now"
|
|
|
|
api_delete "/api/pex/v2/pexs/#{pex_id}"
|
|
assert last_response.ok?
|
|
|
|
api_get "/api/pex/v2/pexs"
|
|
assert last_response.ok?
|
|
assert_equal 0, api_reponse_body.size, "Pex should be removed"
|
|
end
|
|
end
|