Merge branch 'staging' of github.com:FarmBot/Farmbot-Web-App into hotfix_july_4

pull/1260/head
Rick Carlino 2019-07-04 15:17:39 -05:00
commit ed26a3ecb9
4 changed files with 50 additions and 51 deletions

View File

@ -97,7 +97,6 @@ class NervesHub
# It's really hard to debug malformed tags; Catch them here:
if tags.detect { |x| !x.include?(COLON) }
report_problem(error: BAD_TAG, serial_number: serial_number, tags: tags)
return
end
if current_nerves_hub_device

View File

@ -9,8 +9,6 @@ import { stopIE } from "./util/stop_ie";
import { attachAppToDom } from "./routes";
import I from "i18next";
console.log("Caching fix, attempt I");
stopIE();
console.log(shortRevision());

View File

@ -1,59 +1,77 @@
require 'spec_helper'
require "spec_helper"
describe Api::DeviceCertsController do
include Devise::Test::ControllerHelpers
describe '#create' do
describe "#create" do
let(:user) { FactoryBot.create(:user) }
let(:device) { user.device }
TAGS = ["FOO:BAR", "BAR:BAZ"]
SERIAL = "456"
it 'creates a cert' do
def user_tags_ser(tags = TAGS)
# So many locals: ========================================================
ser = "456"
tags = ["FOO:BAR", "BAR:BAZ"]
conn = double("Create a cert", :ca_file= => nil,
:cert_store => nil,
ser = SERIAL
conn = double("Create a cert", :ca_file= => nil,
:cert_store => nil,
:cert_store= => nil,
:use_ssl => nil,
:use_ssl= => nil,
:cert= => nil,
:key= => nil)
post_data = {identifier: 456}
resp1 = double("get response", code: "200",
body: {data:{}}.to_json)
resp2 = double("put response", code: "201",
body: {data: post_data }.to_json)
resp3 = double("post response", code: "200",
body: { data: {
"cert" => "???"
} }.to_json)
url = NervesHub.device_path(ser)
put_args = [NervesHub.device_path(ser),
{"tags": tags}.to_json,
:use_ssl => nil,
:use_ssl= => nil,
:cert= => nil,
:key= => nil)
post_data = { identifier: 456 }
resp1 = double("get response", code: "200",
body: { data: {} }.to_json)
resp2 = double("put response", code: "201",
body: { data: post_data }.to_json)
resp3 = double("post response", code: "200",
body: { data: {
"cert" => "???",
} }.to_json)
url = NervesHub.device_path(ser)
put_args = [NervesHub.device_path(ser),
{ "tags": tags }.to_json,
NervesHub::HEADERS]
post_data = a_string_including("\"identifier\":456")
post_args = ["/orgs/farmbot/products/farmbot/devices/456/certificates/sign",
post_data,
{"Content-Type"=>"application/json"}]
{ "Content-Type" => "application/json" }]
# Setup wiring ===========================================================
NervesHub.set_conn(conn)
expect(NervesHub.conn).to(receive(:get)
.with(url)
.and_return(resp1))
.with(url)
.and_return(resp1))
expect(NervesHub.conn).to(receive(:put)
.with(*put_args)
.and_return(resp2))
.with(*put_args)
.and_return(resp2))
expect(NervesHub.conn).to(receive(:post)
.with(*post_args)
.and_return(resp3))
.with(*post_args)
.and_return(resp3))
return [user, tags, ser]
end
# Actual tests: ========================================================
it "creates a cert" do
user, tags, ser = user_tags_ser
sign_in user
payl = { tags: tags, serial_number: ser }
run_jobs_now do
post :create, body: payl.to_json, params: {format: :json}
post :create, body: payl.to_json, params: { format: :json }
end
expect(response.status).to eq(200)
expect(json).to be_kind_of(Hash)
expect(json.fetch(:id)).to eq(device.id)
end
it "catches malformed tags" do
user, tags, ser = user_tags_ser(["one_bad_one"])
sign_in user
payl = { tags: tags, serial_number: ser }
report = { error: NervesHub::BAD_TAG, serial_number: SERIAL, tags: tags }
expect(NervesHub).to(receive(:report_problem).with(**report))
run_jobs_now do
post :create, body: payl.to_json, params: { format: :json }
end
expect(response.status).to eq(200)
expect(json).to be_kind_of(Hash)

View File

@ -106,20 +106,4 @@ describe NervesHub do
expect(File.read(NervesHub::NERVES_HUB_CA_HACK)).to eq(pem)
end
end
it "detects malformed tags" do
tags = ["wrong", "also_wrong", "ok:tag"].shuffle
serial_number = "0xCAFEF00D"
expected = { error: NervesHub::BAD_TAG,
serial_number: serial_number,
tags: tags }
resp = StubResp.new("200", {
"data" => { hello: :world, identifier: "?" },
}.to_json)
do_it =
receive(:get).with("/orgs/farmbot/products/farmbot/devices/#{serial_number}").and_return(resp)
expect(NervesHub.conn).to do_it
expect(NervesHub).to receive(:report_problem).with(expected)
NervesHub.maybe_create_or_update(serial_number, tags)
end
end