Skip to content

Commit 7098a14

Browse files
author
Ben Caldwell
committed
refactor: use shared xero credentials context in all relevant specs for secure ENV-based config
1 parent 9e36a9a commit 7098a14

9 files changed

Lines changed: 46 additions & 42 deletions

File tree

spec/spec_helper.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
require "bundler/setup"
22
require "xpm_ruby"
33
require "vcr"
4+
require "dotenv/load"
45

56
RSpec.configure do |config|
67
# Enable flags like --only-failures and --next-failure
@@ -12,6 +13,23 @@
1213
config.expect_with(:rspec) do |c|
1314
c.syntax = :expect
1415
end
16+
17+
# Shared example group for Xero credentials
18+
config.shared_context_metadata_behavior = :apply_to_host_groups
19+
20+
RSpec.shared_context "xero credentials" do
21+
let(:xero_tenant_id) do
22+
ENV.fetch("XERO_TENANT_ID") do
23+
raise "XERO_TENANT_ID environment variable is required. Please add it to your .env file"
24+
end
25+
end
26+
27+
let(:access_token) do
28+
ENV.fetch("XERO_ACCESS_TOKEN") do
29+
raise "XERO_ACCESS_TOKEN environment variable is required. Please add it to your .env file"
30+
end
31+
end
32+
end
1533
end
1634

1735
VCR.configure do |config|

spec/xpm_ruby/category_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ module XpmRuby
55
subject(:service) { described_class }
66

77
describe ".list" do
8+
include_context "xero credentials"
9+
810
let(:xero_tenant_id) { "XERO_TENANT_ID" }
911
let(:access_token) { "access_token" }
1012

spec/xpm_ruby/client_spec.rb

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
module XpmRuby
44
RSpec.describe(Client) do
55
describe ".add" do
6-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
7-
let(:access_token) { "token" }
6+
include_context "xero credentials"
87

98
let(:client) { { "Name" => "Acmer Pty Ltd" } }
109

@@ -22,8 +21,7 @@ module XpmRuby
2221
end
2322

2423
describe ".update" do
25-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
26-
let(:access_token) { "access_token" }
24+
include_context "xero credentials"
2725

2826
let(:client) { { "ID" => 25655881, "Name" => "Acmer Pty Ltd" } }
2927

@@ -41,8 +39,8 @@ module XpmRuby
4139
end
4240

4341
describe ".get" do
44-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
45-
let(:access_token) { "access_token" }
42+
include_context "xero credentials"
43+
4644
let(:client_id) { "32014284" }
4745

4846
it "gets client information" do
@@ -60,7 +58,8 @@ module XpmRuby
6058
end
6159

6260
describe ".list" do
63-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
61+
include_context "xero credentials"
62+
6463
let(:access_token) { "token" }
6564

6665
context "when not modified since" do
@@ -132,8 +131,8 @@ module XpmRuby
132131
Client.search(access_token: access_token, xero_tenant_id: xero_tenant_id, query: query, detailed: detailed)
133132
end
134133

135-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
136-
let(:access_token) { "token" }
134+
include_context "xero credentials"
135+
137136
let(:query) { "acme" }
138137

139138
context "when detailed false" do

spec/xpm_ruby/connection_spec.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
module XpmRuby
44
RSpec.describe(Connection) do
5-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
6-
let(:access_token) { "access_token" }
5+
include_context "xero credentials"
76

87
describe "#get" do
98
context "with a valid tenant id and access token" do

spec/xpm_ruby/contact_spec.rb

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
module XpmRuby
44
RSpec.describe(Contact) do
55
describe ".add" do
6-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
7-
let(:access_token) { "token" }
6+
include_context "xero credentials"
87

98
let(:contact) do
109
{
@@ -27,8 +26,7 @@ module XpmRuby
2726
end
2827

2928
describe ".update" do
30-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
31-
let(:access_token) { "token" }
29+
include_context "xero credentials"
3230

3331
context "without Client ID" do
3432
let(:contact) do
@@ -75,8 +73,7 @@ module XpmRuby
7573
end
7674

7775
describe ".delete" do
78-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
79-
let(:access_token) { "token" }
76+
include_context "xero credentials"
8077
let(:contact_id) { "14574323" }
8178

8279
context "without Client ID" do

spec/xpm_ruby/job_spec.rb

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
module XpmRuby
44
RSpec.describe(Job) do
55
describe ".current" do
6-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
7-
let(:access_token) { "token" }
6+
include_context "xero credentials"
87

98
around(:each) do |example|
109
VCR.use_cassette("xpm_ruby/job/current") do
@@ -29,8 +28,7 @@ module XpmRuby
2928
end
3029

3130
describe ".add" do
32-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
33-
let(:access_token) { "token" }
31+
include_context "xero credentials"
3432
let(:job) { { "Name" => "Joe Bloggs", "Description" => "New Job", "ClientID" => "24097642", "StartDate" => "20091023", "DueDate" => "20091023" } }
3533

3634
around(:each) do |example|
@@ -51,8 +49,7 @@ module XpmRuby
5149
end
5250

5351
describe ".update" do
54-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
55-
let(:access_token) { "token" }
52+
include_context "xero credentials"
5653
let(:job) { { "ID" => "J000031", "Name" => "Joe Bloggs", "Description" => "Update Job", "ClientID" => "24097642", "StartDate" => "20091023", "DueDate" => "20091023" } }
5754

5855
around(:each) do |example|
@@ -74,8 +71,7 @@ module XpmRuby
7471
end
7572

7673
describe ".get" do
77-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
78-
let(:access_token) { "token" }
74+
include_context "xero credentials"
7975
let(:job_id) { "J000014" }
8076

8177
around(:each) do |example|
@@ -97,8 +93,7 @@ module XpmRuby
9793
end
9894

9995
describe ".state" do
100-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
101-
let(:access_token) { "token" }
96+
include_context "xero credentials"
10297

10398
context "when the job state is successful" do
10499
let(:job) { { "ID" => "J000031", "State" => "COMPLETED" } }
@@ -123,8 +118,7 @@ module XpmRuby
123118
end
124119

125120
describe ".delete" do
126-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
127-
let(:access_token) { "token" }
121+
include_context "xero credentials"
128122

129123
context "with a valid job id" do
130124
let(:job) { { "ID" => "J000031" } }
@@ -150,8 +144,7 @@ module XpmRuby
150144
end
151145

152146
describe ".assign" do
153-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
154-
let(:access_token) { "token" }
147+
include_context "xero credentials"
155148

156149
context "add and remove staff" do
157150
context "with a valid job id and staff id" do
@@ -253,8 +246,7 @@ module XpmRuby
253246
end
254247

255248
describe ".applytemplate" do
256-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
257-
let(:access_token) { "token" }
249+
include_context "xero credentials"
258250

259251
context "with valid job and template" do
260252
let(:job) { { "ID" => "J000032", "TemplateID" => 1254078, "TaskMode" => "AddNew" } }

spec/xpm_ruby/staff_spec.rb

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
module XpmRuby
44
RSpec.describe(Staff) do
55
describe ".list" do
6-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
6+
include_context "xero credentials"
77

88
context "when access token expired" do
99
let(:access_token) { "expired" }
@@ -62,8 +62,7 @@ module XpmRuby
6262
end
6363

6464
describe ".add" do
65-
let(:xero_tenant_id) { "xero_tenant_id" }
66-
let(:access_token) { "access_token" }
65+
include_context "xero credentials"
6766
let(:staff) { { "Name" => "Joe Bloggs", "Address" => "In your head", "Phone" => "123456789", "Email" => "joebloggs@foo.com", "PayrollCode" => "PC123" } }
6867

6968
around(:each) do |example|
@@ -84,8 +83,7 @@ module XpmRuby
8483
end
8584

8685
describe ".update" do
87-
let(:xero_tenant_id) { "xero_tenant_id" }
88-
let(:access_token) { "access_token" }
86+
include_context "xero credentials"
8987
let(:staff) { { "ID" => "1044994", "Name" => "Joe Bloggs", "Address" => "Updated Address", "Phone" => "87654321", "Email" => "bloggsjoe@foo.com", "PayrollCode" => "PC456" } }
9088

9189
around(:each) do |example|
@@ -107,8 +105,7 @@ module XpmRuby
107105
end
108106

109107
describe ".delete" do
110-
let(:xero_tenant_id) { "xero_tenant_id" }
111-
let(:access_token) { "access_token" }
108+
include_context "xero credentials"
112109

113110
around(:each) do |example|
114111
VCR.use_cassette("xpm_ruby/staff/delete") do

spec/xpm_ruby/template_spec.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ module XpmRuby
55
subject(:service) { described_class }
66

77
describe ".list" do
8-
let(:xero_tenant_id) { "XERO_TENANT_ID" }
9-
let(:access_token) { "XERO_ACCESS_TOKEN" }
8+
include_context "xero credentials"
109

1110
around(:each) do |example|
1211
VCR.use_cassette("xpm_ruby/template/list") do

xpm_ruby.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ Gem::Specification.new do |spec|
3535
spec.add_development_dependency("byebug", "~> 11")
3636
spec.add_development_dependency("pry-byebug", "~> 3")
3737
spec.add_development_dependency("vcr")
38+
spec.add_development_dependency("dotenv")
3839

3940
spec.add_runtime_dependency("faraday")
4041
spec.add_runtime_dependency("faraday-encoding")

0 commit comments

Comments
 (0)