require "./spec_helper" describe SalesBackend do it "can render status" do get "/" String.from_json(Global.response.not_nil!.body).should eq "OK" end it "can compare addresses" do address_str1 = Address.from_json %( { "name": "String", "address1": "String", "address2": "{type: String, nilable: true}", "postcode": "00001", "city": "String", "country": 2 } ) address_str2 = Address.from_json %( { "name": "String", "address1": "String", "address2": "{type: String, nilable: true}", "postcode": "00002", "city": "String", "country": 2 } ) address_str3 = Address.from_json %( { "name": "String", "address1": "String", "address2": "{type: String, nilable: true}", "postcode": "00003", "city": "String", "country": 2 } ) (address_str1<=>address_str1).should eq( 0) (address_str3<=>address_str2).should eq(1) (address_str1<=>address_str2).should eq(-1) end it "can add a user able to log in and out" do Dir.mkdir_p Statics.data_path + "user" usr = User.new("dummy@domain.com") usr.password_hash = "mywordismypassword" post "/user", nil, usr.to_json Global.response.not_nil!.status_code.should eq(200) String.from_json(Global.response.not_nil!.body).should eq "OK" post "/user", nil, usr.to_json Global.response.not_nil!.status_code.should eq(500) post "/login", nil, usr.to_json Global.response.not_nil!.status_code.should eq(200) uuid = UUID.from_json(Global.response.not_nil!.body).not_nil! headers = HTTP::Headers.new headers["user"] = usr.email.to_s headers["api_token"] = uuid.to_s get "/user/", headers Global.response.not_nil!.status_code.should eq(200) get "/user/address", headers Global.response.not_nil!.status_code.should eq(200) Global.response.not_nil!.body.should eq("null") new_address_str = %([ { "name": "String", "address1": "String", "address2": "{type: String, nilable: true}", "postcode": "00000", "city": "String", "country": 2 } ]) post "/user/address", headers, new_address_str Global.response.not_nil!.status_code.should eq(200) get "/user/address", headers Global.response.not_nil!.status_code.should eq(200) address_state = Array(Address).from_json(Global.response.not_nil!.body) expected_address_state = Array(Address).from_json(new_address_str) (address_state.to_json == expected_address_state.to_json).should be_true delete "/user/address", headers, new_address_str Global.response.not_nil!.status_code.should eq(200) get "/user/address", headers Global.response.not_nil!.status_code.should eq(200) address_state = Array(Address).from_json(Global.response.not_nil!.body) address_state.size.should eq(0) get "/user/tokens", headers Global.response.not_nil!.status_code.should eq(200) usr.tokens = Array(UUID).new usr.tokens.not_nil!.push uuid post "/logout", nil, usr.to_json Global.response.not_nil!.status_code.should eq(200) get "/user/", headers Global.response.not_nil!.status_code.should eq(403) get "/user/address", headers Global.response.not_nil!.status_code.should eq(403) get "/user/tokens", headers Global.response.not_nil!.status_code.should eq(403) end end