Skip to content
This repository was archived by the owner on Jun 24, 2024. It is now read-only.
14 changes: 14 additions & 0 deletions app/controllers/stafftools/groupings_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,20 @@ class GroupingsController < StafftoolsController

def show; end

def destroy
org = @grouping.organization

GroupAssignment.where(grouping: @grouping).destroy_all

if @grouping.destroy
flash[:success] = "Grouping was destroyed"
redirect_to stafftools_organization_path(org.id)
else
flash[:error] = "Grouping was not destroyed"
render :show
end
end

private

def set_grouping
Expand Down
12 changes: 12 additions & 0 deletions app/controllers/stafftools/groups_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,18 @@ class GroupsController < StafftoolsController

def show; end

def destroy
grouping = @group.grouping

if @group.destroy
flash[:success] = "Group was destroyed"
redirect_to stafftools_grouping_path(grouping.id)
else
flash[:error] = "Group was not destroyed"
render :show
end
end

private

def set_group
Expand Down
35 changes: 35 additions & 0 deletions app/views/stafftools/groupings/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,39 @@
</div>
</div>
<% end %>

<div class="boxed-group dangerzone">
<h3>Dangerzone</h3>

<div class="boxed-group-inner">
<p>
<a data-remodal-target="delete-grouping" class="btn btn-danger">Delete this grouping</a>
</p>

<div class="remodal text-left" data-remodal-id="delete-grouping">
<button data-remodal-action="close" class="remodal-close"><%= octicon 'x' %></button>
<h2 class="remodal-header">Are you ABSOLUTELY sure?</h2>

<div class="remodal-warning">
Unexpected things will happen if you don't read this!
</div>

<div class="remodal-description">
<p>
This action <strong>CANNOT</strong> be undone.<br>
Please note this will delete the grouping as well as all groups and group-assignments belonging to the grouping.
</p>
</div>

<%= form_for @grouping, url: stafftools_grouping_path(@grouping.id), html: { "data-name" => @grouping.id, method: 'delete' } do |f| %>
<dl class="form js-normalize-submit">
<dt>Please type the ID (<%= @grouping.id %>) of the grouping to confirm</dt>
<dd><input type="text" class="js-input-block" autofocus></dd>
</dl>

<%= f.submit 'Delete this Grouping', class: 'btn btn-danger btn-block js-submit', disabled: true %>
<% end %>
</div>
</div>
</div>
</div>
35 changes: 35 additions & 0 deletions app/views/stafftools/groups/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,39 @@
</div>
</div>
<% end %>

<div class="boxed-group dangerzone">
<h3>Dangerzone</h3>

<div class="boxed-group-inner">
<p>
<a data-remodal-target="delete-group" class="btn btn-danger">Delete this group</a>
</p>

<div class="remodal text-left" data-remodal-id="delete-group">
<button data-remodal-action="close" class="remodal-close"><%= octicon 'x' %></button>
<h2 class="remodal-header">Are you ABSOLUTELY sure?</h2>

<div class="remodal-warning">
Unexpected things will happen if you don't read this!
</div>

<div class="remodal-description">
<p>
This action <strong>CANNOT</strong> be undone.<br>
Please note this will delete the record on GitHub Classroom and the team on GitHub, but not the repository on GitHub.
</p>
</div>

<%= form_for @group, url: stafftools_group_path(@group.id), html: { "data-name" => @group.id, method: 'delete' } do |f| %>
<dl class="form js-normalize-submit">
<dt>Please type the ID (<%= @group.id %>) of the group to confirm</dt>
<dd><input type="text" class="js-input-block" autofocus></dd>
</dl>

<%= f.submit 'Delete this Group', class: 'btn btn-danger btn-block js-submit', disabled: true %>
<% end %>
</div>
</div>
</div>
</div>
4 changes: 2 additions & 2 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,8 @@
resources :group_assignment_repos, path: "group-assignment-repos", only: %i[show destroy]
resources :group_assignments, path: "group-assignments", only: [:show]

resources :groupings, only: [:show]
resources :groups, only: [:show]
resources :groupings, only: %i[show destroy]
resources :groups, only: %i[show destroy]
end

namespace :api, defaults: { format: :json } do
Expand Down
46 changes: 44 additions & 2 deletions spec/controllers/stafftools/groupings_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,13 @@
require "rails_helper"

RSpec.describe Stafftools::GroupingsController, type: :controller do
let(:user) { classroom_teacher }
let(:grouping) { create(:grouping) }
let(:organization) { classroom_org }
let(:user) { organization.users.first }
let(:grouping) { Grouping.create(organization: organization, title: "Grouping 1") }

let(:group_assignment) do
create(:group_assignment, creator: user, organization: organization, grouping: grouping)
end

before(:each) do
sign_in_as(user)
Expand Down Expand Up @@ -33,4 +38,41 @@
end
end
end

describe "DELETE #destroy", :vcr do
context "as an unauthorized user" do
before do
delete :destroy, params: { id: grouping.id }
end

it "returns a 404" do
expect(response.status).to eq(404)
end
end

context "as an authorized user" do
before do
group_assignment.save
user.update_attributes(site_admin: true)

delete :destroy, params: { id: grouping.id }
end

it "destroys grouping" do
expect(Grouping.find_by(id: grouping.id)).to be_nil
end

it "destroys group assignments" do
expect(GroupAssignment.find_by(id: group_assignment.id)).to be_nil
end

it "shows a success message" do
expect(flash[:success]).to eq("Grouping was destroyed")
end

it "redirects to org path" do
expect(response).to redirect_to(stafftools_organization_path(organization.id))
end
end
end
end
31 changes: 31 additions & 0 deletions spec/controllers/stafftools/groups_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,35 @@
end
end
end

describe "DELETE #destroy", :vcr do
context "as an unauthorized user" do
before do
delete :destroy, params: { id: group.id }
end

it "returns a 404" do
expect(response.status).to eq(404)
end
end

context "as an authorized user" do
before do
user.update_attributes(site_admin: true)
delete :destroy, params: { id: group.id }
end

it "deletes the group" do
expect(Group.find_by(id: group.id)).to be_nil
end

it "shows an informative message" do
expect(flash[:success]).to eq("Group was destroyed")
end

it "redirects to grouping page" do
expect(response).to redirect_to(stafftools_grouping_path(group.grouping.id))
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"http_interactions":[{"request":{"method":"get","uri":"https://api.github.com/user","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept":["application/vnd.github.v3+json"],"User-Agent":["Octokit Ruby Gem 4.6.2"],"Content-Type":["application/json"],"Authorization":["token \u003cTEST_CLASSROOM_OWNER_GITHUB_TOKEN\u003e"],"Cache-Control":["no-cache, no-store"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Server":["GitHub.com"],"Date":["Sun, 26 Feb 2017 21:36:43 GMT"],"Content-Type":["application/json; charset=utf-8"],"Transfer-Encoding":["chunked"],"Status":["200 OK"],"X-Ratelimit-Limit":["5000"],"X-Ratelimit-Remaining":["4996"],"X-Ratelimit-Reset":["1488145639"],"Cache-Control":["private, max-age=60, s-maxage=60"],"Vary":["Accept, Authorization, Cookie, X-GitHub-OTP","Accept-Encoding"],"Etag":["W/\"d65473901cafa38adc46b81547c5e903\""],"Last-Modified":["Thu, 16 Feb 2017 08:44:30 GMT"],"X-Oauth-Scopes":["admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete_repo, gist, notifications, repo, user:email"],"X-Accepted-Oauth-Scopes":[""],"X-Github-Media-Type":["github.v3; format=json"],"Access-Control-Expose-Headers":["ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"],"Access-Control-Allow-Origin":["*"],"Content-Security-Policy":["default-src 'none'"],"Strict-Transport-Security":["max-age=31536000; includeSubdomains; preload"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["deny"],"X-Xss-Protection":["1; mode=block"],"X-Served-By":["5aeb3f30c9e3ef6ef7bcbcddfd9a68f7"],"X-Github-Request-Id":["A400:231B5:212B444:2B2DA1D:58B34A6B"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJsb2dpbiI6Im53b29kdGhvcnBlIiwiaWQiOjxURVNUX0NMQVNTUk9PTV9P\nV05FUl9HSVRIVUJfSUQ+LCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJz\nLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzxURVNUX0NMQVNTUk9PTV9PV05F\nUl9HSVRIVUJfSUQ+P3Y9MyIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0\ncHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ud29vZHRob3JwZSIsImh0bWxf\ndXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL253b29kdGhvcnBlIiwiZm9sbG93\nZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvbndvb2R0\naG9ycGUvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBp\nLmdpdGh1Yi5jb20vdXNlcnMvbndvb2R0aG9ycGUvZm9sbG93aW5ney9vdGhl\ncl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20v\ndXNlcnMvbndvb2R0aG9ycGUvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91\ncmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL253b29kdGhvcnBl\nL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6\nImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvbndvb2R0aG9ycGUvc3Vi\nc2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGku\nZ2l0aHViLmNvbS91c2Vycy9ud29vZHRob3JwZS9vcmdzIiwicmVwb3NfdXJs\nIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ud29vZHRob3JwZS9y\nZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3Vz\nZXJzL253b29kdGhvcnBlL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9l\ndmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ud29v\nZHRob3JwZS9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInNpdGVf\nYWRtaW4iOmZhbHNlLCJuYW1lIjoiTmF0aGFuaWVsIFdvb2R0aG9ycGUiLCJj\nb21wYW55IjoiQHRpbmZvaWwgIiwiYmxvZyI6Imh0dHA6Ly9ud29vZHRob3Jw\nZS5jb20iLCJsb2NhdGlvbiI6bnVsbCwiZW1haWwiOiJOSldvb2R0aG9ycGVA\nZ21haWwuY29tIiwiaGlyZWFibGUiOnRydWUsImJpbyI6IlN0dWR5aW5nIENv\nbXB1dGVyIFNjaWVuY2UgYXQgdGhlIFVuaXZlcnNpdHkgb2YgV2F0ZXJsb28u\nXHJcblxyXG5DdXJyZW50bHkgd29ya2luZyBhdCBAdGluZm9pbCBhcyBhIFNv\nZnR3YXJlIEVuZ2luZWVyaW5nIEludGVybiIsInB1YmxpY19yZXBvcyI6MzIs\nInB1YmxpY19naXN0cyI6MiwiZm9sbG93ZXJzIjozNiwiZm9sbG93aW5nIjoy\nMCwiY3JlYXRlZF9hdCI6IjIwMTMtMDQtMTRUMDA6MDY6MzhaIiwidXBkYXRl\nZF9hdCI6IjIwMTctMDItMTZUMDg6NDQ6MzBaIn0=\n"},"http_version":null},"recorded_at":"Sun, 26 Feb 2017 21:36:43 GMT"}],"recorded_with":"VCR 3.0.3"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"http_interactions":[{"request":{"method":"get","uri":"https://api.github.com/user","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept":["application/vnd.github.v3+json"],"User-Agent":["Octokit Ruby Gem 4.6.2"],"Content-Type":["application/json"],"Authorization":["token \u003cTEST_CLASSROOM_OWNER_GITHUB_TOKEN\u003e"],"Cache-Control":["no-cache, no-store"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Server":["GitHub.com"],"Date":["Sun, 26 Feb 2017 21:36:43 GMT"],"Content-Type":["application/json; charset=utf-8"],"Transfer-Encoding":["chunked"],"Status":["200 OK"],"X-Ratelimit-Limit":["5000"],"X-Ratelimit-Remaining":["4995"],"X-Ratelimit-Reset":["1488145639"],"Cache-Control":["private, max-age=60, s-maxage=60"],"Vary":["Accept, Authorization, Cookie, X-GitHub-OTP","Accept-Encoding"],"Etag":["W/\"d65473901cafa38adc46b81547c5e903\""],"Last-Modified":["Thu, 16 Feb 2017 08:44:30 GMT"],"X-Oauth-Scopes":["admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete_repo, gist, notifications, repo, user:email"],"X-Accepted-Oauth-Scopes":[""],"X-Github-Media-Type":["github.v3; format=json"],"Access-Control-Expose-Headers":["ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"],"Access-Control-Allow-Origin":["*"],"Content-Security-Policy":["default-src 'none'"],"Strict-Transport-Security":["max-age=31536000; includeSubdomains; preload"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["deny"],"X-Xss-Protection":["1; mode=block"],"X-Served-By":["2c18a09f3ac5e4dd1e004af7c5a94769"],"X-Github-Request-Id":["A407:231B4:11E9D79:17495C5:58B34A6B"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJsb2dpbiI6Im53b29kdGhvcnBlIiwiaWQiOjxURVNUX0NMQVNTUk9PTV9P\nV05FUl9HSVRIVUJfSUQ+LCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJz\nLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzxURVNUX0NMQVNTUk9PTV9PV05F\nUl9HSVRIVUJfSUQ+P3Y9MyIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0\ncHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ud29vZHRob3JwZSIsImh0bWxf\ndXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL253b29kdGhvcnBlIiwiZm9sbG93\nZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvbndvb2R0\naG9ycGUvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBp\nLmdpdGh1Yi5jb20vdXNlcnMvbndvb2R0aG9ycGUvZm9sbG93aW5ney9vdGhl\ncl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20v\ndXNlcnMvbndvb2R0aG9ycGUvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91\ncmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL253b29kdGhvcnBl\nL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6\nImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvbndvb2R0aG9ycGUvc3Vi\nc2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGku\nZ2l0aHViLmNvbS91c2Vycy9ud29vZHRob3JwZS9vcmdzIiwicmVwb3NfdXJs\nIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ud29vZHRob3JwZS9y\nZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3Vz\nZXJzL253b29kdGhvcnBlL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9l\ndmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ud29v\nZHRob3JwZS9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInNpdGVf\nYWRtaW4iOmZhbHNlLCJuYW1lIjoiTmF0aGFuaWVsIFdvb2R0aG9ycGUiLCJj\nb21wYW55IjoiQHRpbmZvaWwgIiwiYmxvZyI6Imh0dHA6Ly9ud29vZHRob3Jw\nZS5jb20iLCJsb2NhdGlvbiI6bnVsbCwiZW1haWwiOiJOSldvb2R0aG9ycGVA\nZ21haWwuY29tIiwiaGlyZWFibGUiOnRydWUsImJpbyI6IlN0dWR5aW5nIENv\nbXB1dGVyIFNjaWVuY2UgYXQgdGhlIFVuaXZlcnNpdHkgb2YgV2F0ZXJsb28u\nXHJcblxyXG5DdXJyZW50bHkgd29ya2luZyBhdCBAdGluZm9pbCBhcyBhIFNv\nZnR3YXJlIEVuZ2luZWVyaW5nIEludGVybiIsInB1YmxpY19yZXBvcyI6MzIs\nInB1YmxpY19naXN0cyI6MiwiZm9sbG93ZXJzIjozNiwiZm9sbG93aW5nIjoy\nMCwiY3JlYXRlZF9hdCI6IjIwMTMtMDQtMTRUMDA6MDY6MzhaIiwidXBkYXRl\nZF9hdCI6IjIwMTctMDItMTZUMDg6NDQ6MzBaIn0=\n"},"http_version":null},"recorded_at":"Sun, 26 Feb 2017 21:36:44 GMT"}],"recorded_with":"VCR 3.0.3"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"http_interactions":[{"request":{"method":"get","uri":"https://api.github.com/user","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept":["application/vnd.github.v3+json"],"User-Agent":["Octokit Ruby Gem 4.6.2"],"Content-Type":["application/json"],"Authorization":["token \u003cTEST_CLASSROOM_OWNER_GITHUB_TOKEN\u003e"],"Cache-Control":["no-cache, no-store"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Server":["GitHub.com"],"Date":["Sun, 26 Feb 2017 21:36:42 GMT"],"Content-Type":["application/json; charset=utf-8"],"Transfer-Encoding":["chunked"],"Status":["200 OK"],"X-Ratelimit-Limit":["5000"],"X-Ratelimit-Remaining":["4997"],"X-Ratelimit-Reset":["1488145639"],"Cache-Control":["private, max-age=60, s-maxage=60"],"Vary":["Accept, Authorization, Cookie, X-GitHub-OTP","Accept-Encoding"],"Etag":["W/\"d65473901cafa38adc46b81547c5e903\""],"Last-Modified":["Thu, 16 Feb 2017 08:44:30 GMT"],"X-Oauth-Scopes":["admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete_repo, gist, notifications, repo, user:email"],"X-Accepted-Oauth-Scopes":[""],"X-Github-Media-Type":["github.v3; format=json"],"Access-Control-Expose-Headers":["ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"],"Access-Control-Allow-Origin":["*"],"Content-Security-Policy":["default-src 'none'"],"Strict-Transport-Security":["max-age=31536000; includeSubdomains; preload"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["deny"],"X-Xss-Protection":["1; mode=block"],"X-Served-By":["7efb7ae49588ef0269c6a1c1bd3721d9"],"X-Github-Request-Id":["A401:231B6:2047BD6:2A0EE0A:58B34A6A"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJsb2dpbiI6Im53b29kdGhvcnBlIiwiaWQiOjxURVNUX0NMQVNTUk9PTV9P\nV05FUl9HSVRIVUJfSUQ+LCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJz\nLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzxURVNUX0NMQVNTUk9PTV9PV05F\nUl9HSVRIVUJfSUQ+P3Y9MyIsImdyYXZhdGFyX2lkIjoiIiwidXJsIjoiaHR0\ncHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ud29vZHRob3JwZSIsImh0bWxf\ndXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL253b29kdGhvcnBlIiwiZm9sbG93\nZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvbndvb2R0\naG9ycGUvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBp\nLmdpdGh1Yi5jb20vdXNlcnMvbndvb2R0aG9ycGUvZm9sbG93aW5ney9vdGhl\ncl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20v\ndXNlcnMvbndvb2R0aG9ycGUvZ2lzdHN7L2dpc3RfaWR9Iiwic3RhcnJlZF91\ncmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL253b29kdGhvcnBl\nL3N0YXJyZWR7L293bmVyfXsvcmVwb30iLCJzdWJzY3JpcHRpb25zX3VybCI6\nImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvbndvb2R0aG9ycGUvc3Vi\nc2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGku\nZ2l0aHViLmNvbS91c2Vycy9ud29vZHRob3JwZS9vcmdzIiwicmVwb3NfdXJs\nIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ud29vZHRob3JwZS9y\nZXBvcyIsImV2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3Vz\nZXJzL253b29kdGhvcnBlL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9l\ndmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9ud29v\nZHRob3JwZS9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInNpdGVf\nYWRtaW4iOmZhbHNlLCJuYW1lIjoiTmF0aGFuaWVsIFdvb2R0aG9ycGUiLCJj\nb21wYW55IjoiQHRpbmZvaWwgIiwiYmxvZyI6Imh0dHA6Ly9ud29vZHRob3Jw\nZS5jb20iLCJsb2NhdGlvbiI6bnVsbCwiZW1haWwiOiJOSldvb2R0aG9ycGVA\nZ21haWwuY29tIiwiaGlyZWFibGUiOnRydWUsImJpbyI6IlN0dWR5aW5nIENv\nbXB1dGVyIFNjaWVuY2UgYXQgdGhlIFVuaXZlcnNpdHkgb2YgV2F0ZXJsb28u\nXHJcblxyXG5DdXJyZW50bHkgd29ya2luZyBhdCBAdGluZm9pbCBhcyBhIFNv\nZnR3YXJlIEVuZ2luZWVyaW5nIEludGVybiIsInB1YmxpY19yZXBvcyI6MzIs\nInB1YmxpY19naXN0cyI6MiwiZm9sbG93ZXJzIjozNiwiZm9sbG93aW5nIjoy\nMCwiY3JlYXRlZF9hdCI6IjIwMTMtMDQtMTRUMDA6MDY6MzhaIiwidXBkYXRl\nZF9hdCI6IjIwMTctMDItMTZUMDg6NDQ6MzBaIn0=\n"},"http_version":null},"recorded_at":"Sun, 26 Feb 2017 21:36:43 GMT"}],"recorded_with":"VCR 3.0.3"}
Loading