From fb1c7254d5764fb495d73b7e5bb16d60fd09bf03 Mon Sep 17 00:00:00 2001
From: Katarzyna Kobierska <kkobierska@gmail.com>
Date: Thu, 18 Aug 2016 08:50:01 +0200
Subject: [PATCH] API for CI Lint

---
 lib/ci/api/api.rb                 |  1 +
 lib/ci/api/entities.rb            |  7 +++++++
 lib/ci/api/lint.rb                | 24 ++++++++++++++++++++++++
 spec/requests/ci/api/lint_spec.rb | 23 +++++++++++++++++++++++
 4 files changed, 55 insertions(+)
 create mode 100644 lib/ci/api/lint.rb
 create mode 100644 spec/requests/ci/api/lint_spec.rb

diff --git a/lib/ci/api/api.rb b/lib/ci/api/api.rb
index a6b9beecded..741a81ca8f0 100644
--- a/lib/ci/api/api.rb
+++ b/lib/ci/api/api.rb
@@ -24,6 +24,7 @@ module Ci
       mount ::Ci::API::Builds
       mount ::Ci::API::Runners
       mount ::Ci::API::Triggers
+      mount ::Ci::API::Lint
     end
   end
 end
diff --git a/lib/ci/api/entities.rb b/lib/ci/api/entities.rb
index 3f5bdaba3f5..8052908e78a 100644
--- a/lib/ci/api/entities.rb
+++ b/lib/ci/api/entities.rb
@@ -59,6 +59,13 @@ module Ci
         expose :id, :variables
         expose :pipeline, using: Commit, as: :commit
       end
+
+      class Lint < Grape::Entity
+        expose :content
+        expose :status
+        expose :builds
+        expose :stages
+      end
     end
   end
 end
diff --git a/lib/ci/api/lint.rb b/lib/ci/api/lint.rb
new file mode 100644
index 00000000000..d781441d2b7
--- /dev/null
+++ b/lib/ci/api/lint.rb
@@ -0,0 +1,24 @@
+module Ci
+  module API
+    class Lint < Grape::API
+      before { authenticate! }
+
+      resources :lint do
+        post do
+          content = params[:content]
+
+          if content
+            config_processor = Ci::GitlabCiYamlProcessor.new(content)
+            stages = config_processor.stages
+            builds = config_processor.builds
+            status = true
+
+            response = { status: status, stages: stages, builds: builds }
+          end
+
+          response
+        end
+      end
+    end
+  end
+end
diff --git a/spec/requests/ci/api/lint_spec.rb b/spec/requests/ci/api/lint_spec.rb
new file mode 100644
index 00000000000..2ffd88120ae
--- /dev/null
+++ b/spec/requests/ci/api/lint_spec.rb
@@ -0,0 +1,23 @@
+require 'spec_helper'
+
+describe Ci::API::API do
+  include ApiHelpers
+
+  let(:content) do
+    File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml'))
+  end
+
+  describe "Builds API for Lint" do
+
+    describe 'POST /ci/lint' do
+      before { content }
+
+      context "with valid .gitlab-ci.yaml file" do
+        it "has success status" do
+          # binding.pry
+          expect(response).to have_content(true)
+        end
+      end
+    end
+  end
+end
-- 
GitLab