datacentred 0.1.1pre → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.codeclimate.yml +11 -0
 - data/.coveralls.yml +1 -0
 - data/.gitignore +9 -0
 - data/.rubocop.yml +2 -0
 - data/.yardopts +1 -0
 - data/CODE_OF_CONDUCT.md +46 -0
 - data/Gemfile.lock +39 -2
 - data/LICENSE +21 -0
 - data/README.md +160 -2
 - data/circle.yml +0 -2
 - data/datacentred.gemspec +17 -14
 - data/docs/Datacentred.html +537 -0
 - data/docs/Datacentred/Errors.html +260 -0
 - data/docs/Datacentred/Errors/Error.html +139 -0
 - data/docs/Datacentred/Errors/NotFound.html +145 -0
 - data/docs/Datacentred/Errors/Unauthorized.html +149 -0
 - data/docs/Datacentred/Errors/UnprocessableEntity.html +145 -0
 - data/docs/Datacentred/Model.html +128 -0
 - data/docs/Datacentred/Model/Base.html +255 -0
 - data/docs/Datacentred/Model/Project.html +1729 -0
 - data/docs/Datacentred/Model/Role.html +1830 -0
 - data/docs/Datacentred/Model/Usage.html +510 -0
 - data/docs/Datacentred/Model/User.html +832 -0
 - data/docs/Datacentred/Model/Version.html +451 -0
 - data/docs/Datacentred/Project.html +142 -0
 - data/docs/Datacentred/Request.html +128 -0
 - data/docs/Datacentred/Request/Base.html +675 -0
 - data/docs/Datacentred/Request/Projects.html +1286 -0
 - data/docs/Datacentred/Request/Roles.html +1286 -0
 - data/docs/Datacentred/Request/Usage.html +315 -0
 - data/docs/Datacentred/Request/Users.html +841 -0
 - data/docs/Datacentred/Request/Versions.html +258 -0
 - data/docs/Datacentred/Response.html +410 -0
 - data/docs/Datacentred/Role.html +142 -0
 - data/docs/Datacentred/Usage.html +142 -0
 - data/docs/Datacentred/User.html +142 -0
 - data/docs/Datacentred/Version.html +142 -0
 - data/docs/_index.html +349 -0
 - data/docs/class_list.html +51 -0
 - data/docs/css/common.css +1 -0
 - data/docs/css/full_list.css +58 -0
 - data/docs/css/style.css +492 -0
 - data/docs/file.README.html +231 -0
 - data/docs/file_list.html +56 -0
 - data/docs/frames.html +17 -0
 - data/docs/index.html +231 -0
 - data/docs/js/app.js +248 -0
 - data/docs/js/full_list.js +216 -0
 - data/docs/js/jquery.js +4 -0
 - data/docs/method_list.html +643 -0
 - data/docs/top-level-namespace.html +110 -0
 - data/lib/datacentred.rb +65 -12
 - data/lib/datacentred/error.rb +37 -15
 - data/lib/datacentred/model/base.rb +21 -0
 - data/lib/datacentred/model/project.rb +90 -31
 - data/lib/datacentred/model/role.rb +89 -31
 - data/lib/datacentred/model/usage.rb +16 -9
 - data/lib/datacentred/model/user.rb +54 -22
 - data/lib/datacentred/model/version.rb +17 -8
 - data/lib/datacentred/request/base.rb +68 -31
 - data/lib/datacentred/request/projects.rb +92 -24
 - data/lib/datacentred/request/roles.rb +92 -24
 - data/lib/datacentred/request/usage.rb +10 -1
 - data/lib/datacentred/request/users.rb +58 -15
 - data/lib/datacentred/request/versions.rb +13 -1
 - data/lib/datacentred/response.rb +6 -2
 - data/test/integration/authorization_test.rb +30 -0
 - data/test/integration/projects_test.rb +11 -11
 - data/test/integration/roles_test.rb +17 -17
 - data/test/integration/usage_test.rb +8 -8
 - data/test/integration/users_test.rb +23 -19
 - data/test/integration/versions_test.rb +1 -2
 - data/test/test_helper.rb +8 -5
 - data/test/vcr_cassettes/not_authorized.yml +57 -0
 - data/test/vcr_cassettes/unexpected_error.yml +56 -0
 - metadata +115 -9
 
| 
         @@ -1,7 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Datacentred
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Request
         
     | 
| 
      
 3 
     | 
    
         
            +
                # RESTful API requests for the usage endpoints.
         
     | 
| 
       3 
4 
     | 
    
         
             
                class Usage < Base
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
                  # Retrieve account usage data for a given year/month.
         
     | 
| 
      
 6 
     | 
    
         
            +
                  #
         
     | 
| 
      
 7 
     | 
    
         
            +
                  #   GET /api/usage/2017/9
         
     | 
| 
      
 8 
     | 
    
         
            +
                  #
         
     | 
| 
      
 9 
     | 
    
         
            +
                  # @param [Integer] year The year.
         
     | 
| 
      
 10 
     | 
    
         
            +
                  # @param [Integer] month The month.
         
     | 
| 
      
 11 
     | 
    
         
            +
                  # @raise [Errors::NotFound] Raised if no usage data found for given year/month pair.
         
     | 
| 
      
 12 
     | 
    
         
            +
                  # @raise [Errors::Unauthorized] Raised if credentials aren't valid.
         
     | 
| 
      
 13 
     | 
    
         
            +
                  # @return [Hash] Usage for given year/month pair.
         
     | 
| 
       5 
14 
     | 
    
         
             
                  def self.show(year, month)
         
     | 
| 
       6 
15 
     | 
    
         
             
                    get("usage/#{year}/#{month}")
         
     | 
| 
       7 
16 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1,25 +1,68 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Datacentred
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Request
         
     | 
| 
      
 3 
     | 
    
         
            +
                # RESTful API requests for the user endpoints.
         
     | 
| 
       3 
4 
     | 
    
         
             
                class Users < Base
         
     | 
| 
      
 5 
     | 
    
         
            +
                  class << self
         
     | 
| 
      
 6 
     | 
    
         
            +
                    # Create a new user.
         
     | 
| 
      
 7 
     | 
    
         
            +
                    #
         
     | 
| 
      
 8 
     | 
    
         
            +
                    #   POST /api/users
         
     | 
| 
      
 9 
     | 
    
         
            +
                    #
         
     | 
| 
      
 10 
     | 
    
         
            +
                    # @param [Hash] params User attributes.
         
     | 
| 
      
 11 
     | 
    
         
            +
                    # @raise [Errors::UnprocessableEntity] Raised if validations fail for the supplied attributes.
         
     | 
| 
      
 12 
     | 
    
         
            +
                    # @raise [Errors::Unauthorized] Raised if credentials aren't valid.
         
     | 
| 
      
 13 
     | 
    
         
            +
                    # @return [Hash] New user.
         
     | 
| 
      
 14 
     | 
    
         
            +
                    def create(params)
         
     | 
| 
      
 15 
     | 
    
         
            +
                      post('users', 'user' => params)['user']
         
     | 
| 
      
 16 
     | 
    
         
            +
                    end
         
     | 
| 
       4 
17 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
                     
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
                    # List all available users.
         
     | 
| 
      
 19 
     | 
    
         
            +
                    #
         
     | 
| 
      
 20 
     | 
    
         
            +
                    #   GET /api/users
         
     | 
| 
      
 21 
     | 
    
         
            +
                    #
         
     | 
| 
      
 22 
     | 
    
         
            +
                    # @raise [Errors::Unauthorized] Raised if credentials aren't valid.
         
     | 
| 
      
 23 
     | 
    
         
            +
                    # @return [[Hash]] A collection of all users on this account.
         
     | 
| 
      
 24 
     | 
    
         
            +
                    def list
         
     | 
| 
      
 25 
     | 
    
         
            +
                      get('users')['users']
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
       8 
27 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                     
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 28 
     | 
    
         
            +
                    # Find a user by unique ID.
         
     | 
| 
      
 29 
     | 
    
         
            +
                    #
         
     | 
| 
      
 30 
     | 
    
         
            +
                    #   GET /api/users/82fa8de8f09102cc
         
     | 
| 
      
 31 
     | 
    
         
            +
                    #
         
     | 
| 
      
 32 
     | 
    
         
            +
                    # @param [String] id The unique identifier for this user.
         
     | 
| 
      
 33 
     | 
    
         
            +
                    # @raise [Errors::NotFound] Raised if the user couldn't be found.
         
     | 
| 
      
 34 
     | 
    
         
            +
                    # @raise [Errors::Unauthorized] Raised if credentials aren't valid.
         
     | 
| 
      
 35 
     | 
    
         
            +
                    # @return [Hash] The user, if it exists.
         
     | 
| 
      
 36 
     | 
    
         
            +
                    def show(id)
         
     | 
| 
      
 37 
     | 
    
         
            +
                      get("users/#{id}")['user']
         
     | 
| 
      
 38 
     | 
    
         
            +
                    end
         
     | 
| 
       12 
39 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                     
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                     
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
                    # Update a user by unique ID.
         
     | 
| 
      
 41 
     | 
    
         
            +
                    #
         
     | 
| 
      
 42 
     | 
    
         
            +
                    #   PUT /api/users/82fa8de8f09102cc
         
     | 
| 
      
 43 
     | 
    
         
            +
                    #
         
     | 
| 
      
 44 
     | 
    
         
            +
                    # @param [String] id The unique identifier for this user.
         
     | 
| 
      
 45 
     | 
    
         
            +
                    # @param [Hash] params User attributes.
         
     | 
| 
      
 46 
     | 
    
         
            +
                    # @raise [Errors::UnprocessableEntity] Raised if validations fail for the supplied attributes.
         
     | 
| 
      
 47 
     | 
    
         
            +
                    # @raise [Errors::NotFound] Raised if the user couldn't be found.
         
     | 
| 
      
 48 
     | 
    
         
            +
                    # @raise [Errors::Unauthorized] Raised if credentials aren't valid.
         
     | 
| 
      
 49 
     | 
    
         
            +
                    # @return [Hash] The updated user.
         
     | 
| 
      
 50 
     | 
    
         
            +
                    def update(id, params)
         
     | 
| 
      
 51 
     | 
    
         
            +
                      put("users/#{id}", 'user' => params)['user']
         
     | 
| 
      
 52 
     | 
    
         
            +
                    end
         
     | 
| 
       20 
53 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                     
     | 
| 
      
 54 
     | 
    
         
            +
                    # Permanently remove the specified user.
         
     | 
| 
      
 55 
     | 
    
         
            +
                    #
         
     | 
| 
      
 56 
     | 
    
         
            +
                    #   DELETE /api/users/82fa8de8f09102cc
         
     | 
| 
      
 57 
     | 
    
         
            +
                    #
         
     | 
| 
      
 58 
     | 
    
         
            +
                    # @param [String] id The unique identifier for this user.
         
     | 
| 
      
 59 
     | 
    
         
            +
                    # @raise [Errors::NotFound] Raised if the user couldn't be found.
         
     | 
| 
      
 60 
     | 
    
         
            +
                    # @raise [Errors::UnprocessableEntity] Raised if validations fail for the specified user.
         
     | 
| 
      
 61 
     | 
    
         
            +
                    # @raise [Errors::Unauthorized] Raised if credentials aren't valid.
         
     | 
| 
      
 62 
     | 
    
         
            +
                    # @return [nil] Confirms the user was destroyed.
         
     | 
| 
      
 63 
     | 
    
         
            +
                    def destroy(id)
         
     | 
| 
      
 64 
     | 
    
         
            +
                      delete("users/#{id}")
         
     | 
| 
      
 65 
     | 
    
         
            +
                    end
         
     | 
| 
       23 
66 
     | 
    
         
             
                  end
         
     | 
| 
       24 
67 
     | 
    
         
             
                end
         
     | 
| 
       25 
68 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,7 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Datacentred
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Request
         
     | 
| 
      
 3 
     | 
    
         
            +
                # RESTful API requests for the versions endpoint.
         
     | 
| 
      
 4 
     | 
    
         
            +
                #
         
     | 
| 
      
 5 
     | 
    
         
            +
                #   This model does not require authentication.
         
     | 
| 
      
 6 
     | 
    
         
            +
                #
         
     | 
| 
      
 7 
     | 
    
         
            +
                # An API version may be:
         
     | 
| 
      
 8 
     | 
    
         
            +
                # * *CURRENT* - The latest supported version.
         
     | 
| 
      
 9 
     | 
    
         
            +
                # * *SUPPORTED* - A supported older version.
         
     | 
| 
      
 10 
     | 
    
         
            +
                # * *DEPRECATED* - Currently supported but soon to be retired.
         
     | 
| 
       3 
11 
     | 
    
         
             
                class Versions < Base
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
                  # List all available API versions
         
     | 
| 
      
 13 
     | 
    
         
            +
                  #
         
     | 
| 
      
 14 
     | 
    
         
            +
                  #   GET /api
         
     | 
| 
      
 15 
     | 
    
         
            +
                  #
         
     | 
| 
      
 16 
     | 
    
         
            +
                  # @return [[Hash]] Currently available versions of the API.
         
     | 
| 
       5 
17 
     | 
    
         
             
                  def self.list
         
     | 
| 
       6 
18 
     | 
    
         
             
                    get("/api")['versions']
         
     | 
| 
       7 
19 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/datacentred/response.rb
    CHANGED
    
    | 
         @@ -1,12 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Datacentred
         
     | 
| 
      
 2 
     | 
    
         
            +
              # A response from the API server.
         
     | 
| 
       2 
3 
     | 
    
         
             
              class Response
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
4 
     | 
    
         
             
                attr_reader :body, :status
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
                # A response from the API server, initialized with A Faraday HTTP Response.
         
     | 
| 
      
 7 
     | 
    
         
            +
                #
         
     | 
| 
      
 8 
     | 
    
         
            +
                # @param [Faraday::Response] server_response A response object returned from Faraday.
         
     | 
| 
      
 9 
     | 
    
         
            +
                # @raise [Errors::Error] Raised if response isn't a 2xx status code.
         
     | 
| 
       6 
10 
     | 
    
         
             
                def initialize(server_response)
         
     | 
| 
       7 
11 
     | 
    
         
             
                  @body = JSON.parse server_response.body rescue nil
         
     | 
| 
       8 
12 
     | 
    
         
             
                  @status = server_response.status
         
     | 
| 
       9 
     | 
    
         
            -
                   
     | 
| 
      
 13 
     | 
    
         
            +
                  Errors.raise_unless_successful(status, @body)
         
     | 
| 
       10 
14 
     | 
    
         
             
                end
         
     | 
| 
       11 
15 
     | 
    
         
             
              end
         
     | 
| 
       12 
16 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require_relative '../test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Datacentred
         
     | 
| 
      
 4 
     | 
    
         
            +
              class AuthorizationIntegrationTest < Minitest::Test
         
     | 
| 
      
 5 
     | 
    
         
            +
                def test_account_not_authorized
         
     | 
| 
      
 6 
     | 
    
         
            +
                  VCR.use_cassette "not_authorized" do
         
     | 
| 
      
 7 
     | 
    
         
            +
                    assert_raises Errors::Unauthorized do
         
     | 
| 
      
 8 
     | 
    
         
            +
                      Datacentred::Project.all
         
     | 
| 
      
 9 
     | 
    
         
            +
                    end
         
     | 
| 
      
 10 
     | 
    
         
            +
                  end
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def test_manually_setting_credentials
         
     | 
| 
      
 14 
     | 
    
         
            +
                  Datacentred.access_key = "foo"
         
     | 
| 
      
 15 
     | 
    
         
            +
                  assert_equal "foo", Datacentred.access_key
         
     | 
| 
      
 16 
     | 
    
         
            +
                  Datacentred.secret_key = "bar"
         
     | 
| 
      
 17 
     | 
    
         
            +
                  assert_equal "bar", Datacentred.secret_key
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                def test_catch_all_error
         
     | 
| 
      
 21 
     | 
    
         
            +
                  # VCR edited to return HTTP 418
         
     | 
| 
      
 22 
     | 
    
         
            +
                  VCR.use_cassette "unexpected_error" do
         
     | 
| 
      
 23 
     | 
    
         
            +
                    error = assert_raises Datacentred::Errors::Error do
         
     | 
| 
      
 24 
     | 
    
         
            +
                      Datacentred::Project.all
         
     | 
| 
      
 25 
     | 
    
         
            +
                    end
         
     | 
| 
      
 26 
     | 
    
         
            +
                    assert_equal "Error 418: Im a teapot.", error.message
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -3,8 +3,8 @@ require_relative '../test_helper' 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module Datacentred
         
     | 
| 
       4 
4 
     | 
    
         
             
              class ProjectsIntegrationTest < Minitest::Test
         
     | 
| 
       5 
5 
     | 
    
         
             
                def setup
         
     | 
| 
       6 
     | 
    
         
            -
                  @params_with_new_name = { 
     | 
| 
       7 
     | 
    
         
            -
                  @create_params        = { 
     | 
| 
      
 6 
     | 
    
         
            +
                  @params_with_new_name = {name: "new_project_name"}
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @create_params        = {name: "test_new_project"}
         
     | 
| 
       8 
8 
     | 
    
         
             
                  @user_id              = "user_id"
         
     | 
| 
       9 
9 
     | 
    
         
             
                  @project_id           = 'project_id1'
         
     | 
| 
       10 
10 
     | 
    
         
             
                  @project_id2          = 'project_id2'
         
     | 
| 
         @@ -28,7 +28,7 @@ module Datacentred 
     | 
|
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
                def test_raises_not_found_if_project_doesnt_exist
         
     | 
| 
       30 
30 
     | 
    
         
             
                  VCR.use_cassette('project_not_found') do
         
     | 
| 
       31 
     | 
    
         
            -
                    assert_raises(Datacentred:: 
     | 
| 
      
 31 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::NotFound) do
         
     | 
| 
       32 
32 
     | 
    
         
             
                      @project = Datacentred::Project.find("unknown")
         
     | 
| 
       33 
33 
     | 
    
         
             
                    end
         
     | 
| 
       34 
34 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -43,7 +43,7 @@ module Datacentred 
     | 
|
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
                def test_raises_unprocessable_entity_if_failed_validation_for_create
         
     | 
| 
       45 
45 
     | 
    
         
             
                  VCR.use_cassette('project_create_failed_validation') do
         
     | 
| 
       46 
     | 
    
         
            -
                    assert_raises(Datacentred::UnprocessableEntity) do
         
     | 
| 
      
 46 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::UnprocessableEntity) do
         
     | 
| 
       47 
47 
     | 
    
         
             
                      Datacentred::Project.create(@create_params)
         
     | 
| 
       48 
48 
     | 
    
         
             
                    end
         
     | 
| 
       49 
49 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -58,8 +58,8 @@ module Datacentred 
     | 
|
| 
       58 
58 
     | 
    
         | 
| 
       59 
59 
     | 
    
         
             
                def test_raises_unprocessable_entity_if_failed_validation_for_update
         
     | 
| 
       60 
60 
     | 
    
         
             
                  VCR.use_cassette('project_update_failed_validation') do
         
     | 
| 
       61 
     | 
    
         
            -
                    @params_with_used_name = { 
     | 
| 
       62 
     | 
    
         
            -
                    assert_raises(Datacentred::UnprocessableEntity) do
         
     | 
| 
      
 61 
     | 
    
         
            +
                    @params_with_used_name = {name: "foo"}
         
     | 
| 
      
 62 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::UnprocessableEntity) do
         
     | 
| 
       63 
63 
     | 
    
         
             
                      @project = Datacentred::Project.update(@project_id2, @params_with_used_name)
         
     | 
| 
       64 
64 
     | 
    
         
             
                    end
         
     | 
| 
       65 
65 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -67,7 +67,7 @@ module Datacentred 
     | 
|
| 
       67 
67 
     | 
    
         | 
| 
       68 
68 
     | 
    
         
             
                def test_raises_not_found_if_cant_find_project_for_update
         
     | 
| 
       69 
69 
     | 
    
         
             
                  VCR.use_cassette('project_update_not_found') do
         
     | 
| 
       70 
     | 
    
         
            -
                    assert_raises(Datacentred:: 
     | 
| 
      
 70 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::NotFound) do
         
     | 
| 
       71 
71 
     | 
    
         
             
                      @project = Datacentred::Project.update("unknown", @params_with_new_name)
         
     | 
| 
       72 
72 
     | 
    
         
             
                    end
         
     | 
| 
       73 
73 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -75,8 +75,8 @@ module Datacentred 
     | 
|
| 
       75 
75 
     | 
    
         | 
| 
       76 
76 
     | 
    
         
             
                def test_delete_project
         
     | 
| 
       77 
77 
     | 
    
         
             
                  VCR.use_cassette('delete_project') do
         
     | 
| 
       78 
     | 
    
         
            -
                    Datacentred::Project. 
     | 
| 
       79 
     | 
    
         
            -
                    assert_raises(Datacentred:: 
     | 
| 
      
 78 
     | 
    
         
            +
                    Datacentred::Project.destroy(@project_id2)
         
     | 
| 
      
 79 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::NotFound) do
         
     | 
| 
       80 
80 
     | 
    
         
             
                      @project = Datacentred::Project.find(@project_id2)
         
     | 
| 
       81 
81 
     | 
    
         
             
                    end
         
     | 
| 
       82 
82 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -98,7 +98,7 @@ module Datacentred 
     | 
|
| 
       98 
98 
     | 
    
         
             
                  VCR.use_cassette('add_user_to_project') do
         
     | 
| 
       99 
99 
     | 
    
         
             
                    @user_list = Datacentred::Project.users(@project_id)
         
     | 
| 
       100 
100 
     | 
    
         
             
                    assert_equal @user_list.count, 1
         
     | 
| 
       101 
     | 
    
         
            -
                    Datacentred::Project.add_user 
     | 
| 
      
 101 
     | 
    
         
            +
                    assert Datacentred::Project.add_user project_id: @project_id, user_id: @user_id
         
     | 
| 
       102 
102 
     | 
    
         
             
                    @user_list = Datacentred::Project.users(@project_id)
         
     | 
| 
       103 
103 
     | 
    
         
             
                    assert_equal @user_list.count, 2
         
     | 
| 
       104 
104 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -108,7 +108,7 @@ module Datacentred 
     | 
|
| 
       108 
108 
     | 
    
         
             
                  VCR.use_cassette('remove_user_from_project') do
         
     | 
| 
       109 
109 
     | 
    
         
             
                    @user_list = Datacentred::Project.users(@project_id)
         
     | 
| 
       110 
110 
     | 
    
         
             
                    assert_equal @user_list.count, 2
         
     | 
| 
       111 
     | 
    
         
            -
                    Datacentred::Project.remove_user 
     | 
| 
      
 111 
     | 
    
         
            +
                    assert Datacentred::Project.remove_user project_id: @project_id, user_id: @user_id
         
     | 
| 
       112 
112 
     | 
    
         
             
                    @user_list = Datacentred::Project.users(@project_id)
         
     | 
| 
       113 
113 
     | 
    
         
             
                    assert_equal @user_list.count, 1
         
     | 
| 
       114 
114 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -3,14 +3,14 @@ require_relative '../test_helper' 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module Datacentred
         
     | 
| 
       4 
4 
     | 
    
         
             
              class RolesIntegrationTest < Minitest::Test
         
     | 
| 
       5 
5 
     | 
    
         
             
                def setup
         
     | 
| 
       6 
     | 
    
         
            -
                  @create_params1      = { 
     | 
| 
       7 
     | 
    
         
            -
                  @create_params2      = { 
     | 
| 
       8 
     | 
    
         
            -
                                           
     | 
| 
       9 
     | 
    
         
            -
                  @new_permissions     = { 
     | 
| 
       10 
     | 
    
         
            -
                                          'roles.modify', 'roles.read']} 
     | 
| 
       11 
     | 
    
         
            -
                  @invalid_permissions = { 
     | 
| 
       12 
     | 
    
         
            -
                                           
     | 
| 
       13 
     | 
    
         
            -
                  @update_params       = { 
     | 
| 
      
 6 
     | 
    
         
            +
                  @create_params1      = {name: "New Role"}
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @create_params2      = {name: "Historical Figures",
         
     | 
| 
      
 8 
     | 
    
         
            +
                                          permissions: ["usage.read","tickets.modify"]}
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @new_permissions     = {permissions: ['usage.read',
         
     | 
| 
      
 10 
     | 
    
         
            +
                                          'roles.modify', 'roles.read']}
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @invalid_permissions = {name: "Genghis Khan",
         
     | 
| 
      
 12 
     | 
    
         
            +
                                          permissions: ["fighting"]}
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @update_params       = {name: "Administrator 2"}
         
     | 
| 
       14 
14 
     | 
    
         
             
                  @user_id             = "06eacbafda355a927f50f304db3af132"
         
     | 
| 
       15 
15 
     | 
    
         
             
                end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
         @@ -49,7 +49,7 @@ module Datacentred 
     | 
|
| 
       49 
49 
     | 
    
         | 
| 
       50 
50 
     | 
    
         
             
                def test_create_role_with_invalid_permissions
         
     | 
| 
       51 
51 
     | 
    
         
             
                  VCR.use_cassette('create_role_with_invalid_permissions') do
         
     | 
| 
       52 
     | 
    
         
            -
                    assert_raises(Datacentred::UnprocessableEntity) do
         
     | 
| 
      
 52 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::UnprocessableEntity) do
         
     | 
| 
       53 
53 
     | 
    
         
             
                      @role = Datacentred::Role.create(@invalid_permissions)
         
     | 
| 
       54 
54 
     | 
    
         
             
                    end
         
     | 
| 
       55 
55 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -67,7 +67,7 @@ module Datacentred 
     | 
|
| 
       67 
67 
     | 
    
         
             
                def test_update_role_with_invalid_permissions
         
     | 
| 
       68 
68 
     | 
    
         
             
                  VCR.use_cassette('update_role_with_invalid_permissions') do
         
     | 
| 
       69 
69 
     | 
    
         
             
                    @role = Datacentred::Role.create(@create_params1)
         
     | 
| 
       70 
     | 
    
         
            -
                    assert_raises(Datacentred::UnprocessableEntity) do
         
     | 
| 
      
 70 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::UnprocessableEntity) do
         
     | 
| 
       71 
71 
     | 
    
         
             
                      Datacentred::Role.update(@role.id, @invalid_permissions)
         
     | 
| 
       72 
72 
     | 
    
         
             
                    end
         
     | 
| 
       73 
73 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -77,8 +77,8 @@ module Datacentred 
     | 
|
| 
       77 
77 
     | 
    
         
             
                  VCR.use_cassette('delete_role') do
         
     | 
| 
       78 
78 
     | 
    
         
             
                    @role = Datacentred::Role.create(@create_params1)
         
     | 
| 
       79 
79 
     | 
    
         
             
                    assert Datacentred::Role.find(@role.id)
         
     | 
| 
       80 
     | 
    
         
            -
                    Datacentred::Role. 
     | 
| 
       81 
     | 
    
         
            -
                    assert_raises(Datacentred:: 
     | 
| 
      
 80 
     | 
    
         
            +
                    Datacentred::Role.destroy(@role.id)
         
     | 
| 
      
 81 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::NotFound) do
         
     | 
| 
       82 
82 
     | 
    
         
             
                      @role = Datacentred::Role.find(@role.id)
         
     | 
| 
       83 
83 
     | 
    
         
             
                    end
         
     | 
| 
       84 
84 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -97,7 +97,7 @@ module Datacentred 
     | 
|
| 
       97 
97 
     | 
    
         
             
                    @role = Datacentred::Role.create(@create_params1)
         
     | 
| 
       98 
98 
     | 
    
         
             
                    @user_list = Datacentred::Role.users(@role.id)
         
     | 
| 
       99 
99 
     | 
    
         
             
                    assert_equal @user_list.count, 0
         
     | 
| 
       100 
     | 
    
         
            -
                    Datacentred::Role.add_user 
     | 
| 
      
 100 
     | 
    
         
            +
                    assert Datacentred::Role.add_user role_id: @role.id, user_id: @user_id
         
     | 
| 
       101 
101 
     | 
    
         
             
                    @new_users_list = Datacentred::Role.users(@role.id)
         
     | 
| 
       102 
102 
     | 
    
         
             
                    assert_equal @new_users_list.count, 1
         
     | 
| 
       103 
103 
     | 
    
         
             
                    assert_equal @new_users_list.first.id, @user_id
         
     | 
| 
         @@ -107,10 +107,10 @@ module Datacentred 
     | 
|
| 
       107 
107 
     | 
    
         
             
                def test_remove_user_from_role
         
     | 
| 
       108 
108 
     | 
    
         
             
                  VCR.use_cassette('remove_user_from_role') do
         
     | 
| 
       109 
109 
     | 
    
         
             
                    @role = Datacentred::Role.create(@create_params1)
         
     | 
| 
       110 
     | 
    
         
            -
                    Datacentred::Role.add_user 
     | 
| 
      
 110 
     | 
    
         
            +
                    assert Datacentred::Role.add_user role_id: @role.id, user_id: @user_id
         
     | 
| 
       111 
111 
     | 
    
         
             
                    @user_list = Datacentred::Role.users(@role.id)
         
     | 
| 
       112 
112 
     | 
    
         
             
                    assert_equal @user_list.count, 1
         
     | 
| 
       113 
     | 
    
         
            -
                    Datacentred::Role.remove_user 
     | 
| 
      
 113 
     | 
    
         
            +
                    assert Datacentred::Role.remove_user role_id: @role.id, user_id: @user_id
         
     | 
| 
       114 
114 
     | 
    
         
             
                    @new_user_list = Datacentred::Role.users(@role.id)
         
     | 
| 
       115 
115 
     | 
    
         
             
                    assert_equal @new_user_list.count, 0
         
     | 
| 
       116 
116 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -119,8 +119,8 @@ module Datacentred 
     | 
|
| 
       119 
119 
     | 
    
         
             
                def test_remove_user_from_role_not_found
         
     | 
| 
       120 
120 
     | 
    
         
             
                  VCR.use_cassette('remove_user_from_role_not_found') do
         
     | 
| 
       121 
121 
     | 
    
         
             
                    @role = Datacentred::Role.create(@create_params1)
         
     | 
| 
       122 
     | 
    
         
            -
                    assert_raises(Datacentred:: 
     | 
| 
       123 
     | 
    
         
            -
                      Datacentred::Role.remove_user 
     | 
| 
      
 122 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::NotFound) do
         
     | 
| 
      
 123 
     | 
    
         
            +
                      Datacentred::Role.remove_user role_id: @role.id, user_id: "unknown"
         
     | 
| 
       124 
124 
     | 
    
         
             
                    end
         
     | 
| 
       125 
125 
     | 
    
         
             
                  end
         
     | 
| 
       126 
126 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2,21 +2,21 @@ require_relative '../test_helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module Datacentred
         
     | 
| 
       4 
4 
     | 
    
         
             
              class UsageIntegrationTest < Minitest::Test
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
5 
     | 
    
         
             
                def test_show_usage
         
     | 
| 
       7 
6 
     | 
    
         
             
                  VCR.use_cassette('show_usage') do
         
     | 
| 
       8 
     | 
    
         
            -
                    @usage = Datacentred::Usage. 
     | 
| 
       9 
     | 
    
         
            -
                    assert @usage.is_a?  
     | 
| 
       10 
     | 
    
         
            -
                    assert @usage. 
     | 
| 
       11 
     | 
    
         
            -
                    assert @usage.first. 
     | 
| 
       12 
     | 
    
         
            -
                    assert @usage.first. 
     | 
| 
      
 7 
     | 
    
         
            +
                    @usage = Datacentred::Usage.find(2017, 07)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    assert @usage.last_updated_at.is_a? Time
         
     | 
| 
      
 9 
     | 
    
         
            +
                    assert @usage.projects.is_a? Array
         
     | 
| 
      
 10 
     | 
    
         
            +
                    assert @usage.projects.first.name.is_a? String
         
     | 
| 
      
 11 
     | 
    
         
            +
                    assert @usage.projects.first.id.is_a? String
         
     | 
| 
      
 12 
     | 
    
         
            +
                    assert_equal 0, @usage.projects.first.usage.ips.usage.first.value
         
     | 
| 
       13 
13 
     | 
    
         
             
                  end
         
     | 
| 
       14 
14 
     | 
    
         
             
                end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
                def test_raises_not_found_if_no_data
         
     | 
| 
       17 
17 
     | 
    
         
             
                  VCR.use_cassette('usage_not_found') do
         
     | 
| 
       18 
     | 
    
         
            -
                    assert_raises(Datacentred:: 
     | 
| 
       19 
     | 
    
         
            -
                      @usage = Datacentred::Usage. 
     | 
| 
      
 18 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::NotFound) do
         
     | 
| 
      
 19 
     | 
    
         
            +
                      @usage = Datacentred::Usage.find(2010, 07)
         
     | 
| 
       20 
20 
     | 
    
         
             
                    end
         
     | 
| 
       21 
21 
     | 
    
         
             
                  end
         
     | 
| 
       22 
22 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2,17 +2,21 @@ require_relative '../test_helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module Datacentred
         
     | 
| 
       4 
4 
     | 
    
         
             
              class UsersIntegrationTest < Minitest::Test
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
5 
     | 
    
         
             
                def setup
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  @ 
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                                                   
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                                                   
     | 
| 
      
 6 
     | 
    
         
            +
                  @create_params_without_pass = {email: "death@afterlife2.com"}
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @create_params              = {
         
     | 
| 
      
 8 
     | 
    
         
            +
                                                  email: "death@afterlife.com",
         
     | 
| 
      
 9 
     | 
    
         
            +
                                                  password: "melvin11",
         
     | 
| 
      
 10 
     | 
    
         
            +
                                                  first_name: "Foo",
         
     | 
| 
      
 11 
     | 
    
         
            +
                                                  last_name: "Bar"
         
     | 
| 
      
 12 
     | 
    
         
            +
                                                }
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @create_params2             = {
         
     | 
| 
      
 14 
     | 
    
         
            +
                                                  email: "death2@afterlife2.com",
         
     | 
| 
      
 15 
     | 
    
         
            +
                                                  password: "melvin22"
         
     | 
| 
      
 16 
     | 
    
         
            +
                                                }
         
     | 
| 
       13 
17 
     | 
    
         
             
                  @user_id                    = "bda96ae2c89347d5a059d663c153ec2a"
         
     | 
| 
       14 
     | 
    
         
            -
                  @update_params              = { 
     | 
| 
       15 
     | 
    
         
            -
                  @short_password             = { 
     | 
| 
      
 18 
     | 
    
         
            +
                  @update_params              = {first_name: "Foo2"}
         
     | 
| 
      
 19 
     | 
    
         
            +
                  @short_password             = {password:   "tiny"}
         
     | 
| 
       16 
20 
     | 
    
         
             
                end
         
     | 
| 
       17 
21 
     | 
    
         | 
| 
       18 
22 
     | 
    
         
             
                def test_user_object_properties
         
     | 
| 
         @@ -50,7 +54,7 @@ module Datacentred 
     | 
|
| 
       50 
54 
     | 
    
         | 
| 
       51 
55 
     | 
    
         
             
                def test_raises_not_found_if_cant_find_user
         
     | 
| 
       52 
56 
     | 
    
         
             
                  VCR.use_cassette('user_show_not_found') do
         
     | 
| 
       53 
     | 
    
         
            -
                    assert_raises(Datacentred:: 
     | 
| 
      
 57 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::NotFound) do
         
     | 
| 
       54 
58 
     | 
    
         
             
                      @user = Datacentred::User.find("unknown")
         
     | 
| 
       55 
59 
     | 
    
         
             
                    end
         
     | 
| 
       56 
60 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -68,7 +72,7 @@ module Datacentred 
     | 
|
| 
       68 
72 
     | 
    
         | 
| 
       69 
73 
     | 
    
         
             
                def test_raises_unprocessable_entity_if_failed_validation_for_create
         
     | 
| 
       70 
74 
     | 
    
         
             
                  VCR.use_cassette('user_create_failed_validation') do
         
     | 
| 
       71 
     | 
    
         
            -
                    assert_raises(Datacentred::UnprocessableEntity) do
         
     | 
| 
      
 75 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::UnprocessableEntity) do
         
     | 
| 
       72 
76 
     | 
    
         
             
                      @user = Datacentred::User.create(@create_params_without_pass)
         
     | 
| 
       73 
77 
     | 
    
         
             
                    end
         
     | 
| 
       74 
78 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -85,7 +89,7 @@ module Datacentred 
     | 
|
| 
       85 
89 
     | 
    
         
             
                def test_raises_unprocessable_entity_if_failed_validation_for_update
         
     | 
| 
       86 
90 
     | 
    
         
             
                  VCR.use_cassette('user_update_failed_validation') do
         
     | 
| 
       87 
91 
     | 
    
         
             
                    @user = Datacentred::User.create(@create_params)
         
     | 
| 
       88 
     | 
    
         
            -
                    assert_raises(Datacentred::UnprocessableEntity) do
         
     | 
| 
      
 92 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::UnprocessableEntity) do
         
     | 
| 
       89 
93 
     | 
    
         
             
                      @user = Datacentred::User.update(@user.id, @short_password)
         
     | 
| 
       90 
94 
     | 
    
         
             
                    end
         
     | 
| 
       91 
95 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -93,7 +97,7 @@ module Datacentred 
     | 
|
| 
       93 
97 
     | 
    
         | 
| 
       94 
98 
     | 
    
         
             
                def test_raises_not_found_if_user_doesnt_exist
         
     | 
| 
       95 
99 
     | 
    
         
             
                  VCR.use_cassette('user_update_not_found') do
         
     | 
| 
       96 
     | 
    
         
            -
                    assert_raises(Datacentred:: 
     | 
| 
      
 100 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::NotFound) do
         
     | 
| 
       97 
101 
     | 
    
         
             
                      @user = Datacentred::User.update("unknown", @update_params)
         
     | 
| 
       98 
102 
     | 
    
         
             
                    end
         
     | 
| 
       99 
103 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -102,8 +106,8 @@ module Datacentred 
     | 
|
| 
       102 
106 
     | 
    
         
             
                def test_delete_user
         
     | 
| 
       103 
107 
     | 
    
         
             
                  VCR.use_cassette('delete_user') do
         
     | 
| 
       104 
108 
     | 
    
         
             
                    @user = Datacentred::User.create(@create_params)
         
     | 
| 
       105 
     | 
    
         
            -
                    Datacentred::User. 
     | 
| 
       106 
     | 
    
         
            -
                    assert_raises(Datacentred:: 
     | 
| 
      
 109 
     | 
    
         
            +
                    Datacentred::User.destroy(@user.id)
         
     | 
| 
      
 110 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::NotFound) do
         
     | 
| 
       107 
111 
     | 
    
         
             
                      @user = Datacentred::User.find(@user.id)
         
     | 
| 
       108 
112 
     | 
    
         
             
                    end
         
     | 
| 
       109 
113 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -111,16 +115,16 @@ module Datacentred 
     | 
|
| 
       111 
115 
     | 
    
         | 
| 
       112 
116 
     | 
    
         
             
                def test_raises_unprocessable_entity_if_failed_validation_for_delete
         
     | 
| 
       113 
117 
     | 
    
         
             
                  VCR.use_cassette('user_delete_failed_validation') do
         
     | 
| 
       114 
     | 
    
         
            -
                    assert_raises(Datacentred::UnprocessableEntity) do
         
     | 
| 
       115 
     | 
    
         
            -
                      @user = Datacentred::User. 
     | 
| 
      
 118 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::UnprocessableEntity) do
         
     | 
| 
      
 119 
     | 
    
         
            +
                      @user = Datacentred::User.destroy("my_user_id")
         
     | 
| 
       116 
120 
     | 
    
         
             
                    end
         
     | 
| 
       117 
121 
     | 
    
         
             
                  end
         
     | 
| 
       118 
122 
     | 
    
         
             
                end
         
     | 
| 
       119 
123 
     | 
    
         | 
| 
       120 
124 
     | 
    
         
             
                def test_user_cant_be_deleted_if_not_found
         
     | 
| 
       121 
125 
     | 
    
         
             
                  VCR.use_cassette('user_delete_not_found') do
         
     | 
| 
       122 
     | 
    
         
            -
                    assert_raises(Datacentred:: 
     | 
| 
       123 
     | 
    
         
            -
                      @user = Datacentred::User. 
     | 
| 
      
 126 
     | 
    
         
            +
                    assert_raises(Datacentred::Errors::NotFound) do
         
     | 
| 
      
 127 
     | 
    
         
            +
                      @user = Datacentred::User.destroy("unknown")
         
     | 
| 
       124 
128 
     | 
    
         
             
                    end
         
     | 
| 
       125 
129 
     | 
    
         
             
                  end
         
     | 
| 
       126 
130 
     | 
    
         
             
                end
         
     |